JASON HIRSCHHORN: Bienvenido a Sección CS50, todo el mundo. Mi nombre es Jason Hirschhorn. Soy una gran cantidad de suyo TFS, pero una gran cantidad de personas se espera que se unirán a nosotros , estudiantes o alumnos de extensión en línea tratando de mirar a través de la sección si perdido su sección de esa semana o simplemente ponerse al día si querían revisar algunos materiales. Así que de acuerdo con el plan de estudios, que todo de que ha leído, ¿correcto? Veo un montón de movimientos de cabeza. Secciones le proporcionan oportunidades para explorar de el curso material en un ambiente más íntimo, así como sumergirse en actividades prácticas. Así que eso es básicamente lo que estamos va a hacer todas las semanas. Vamos a ir a través de lo que tenemos decidido a ser el más importante temas tratados en la conferencia, y los que probablemente también más útil y más probable que van a plantear en los boletines de problemas y en pruebas, y en su codificación vida fuera del CS50. Así que vamos a entrar en esos temas, discutirlos, ir sobre ellos, responder a cualquier pregunta que ustedes tienen, y a continuación, vamos a hacer un montón de practicar problemas en la codificación. Todos ustedes trajeron ordenadores portátiles, lo cual es fantástico. Esta es una clase de ciencias de la computación. Sin embargo, muchos de los ejercicios que hacemos, usted no necesitará sus ordenadores portátiles para. Puede hacerlo en una hoja de papel. Así es como se va a hacerlas en los concursos. Y, de hecho, eso es una gran manera de Realmente sabes que cómo hacerlo algo si no tienes Check 50 a confiar en O Hacer que confiar, contando usted hizo ningún error. Así que le invitamos a código en el electrodoméstico o run.cs50.net, que es otra herramienta que te permite codificar en línea, pero también recomendaría, si usted no ha probado, mediante una hoja de de papel y tratar estas prácticas problemas en una hoja de papel. Porque de nuevo, eso es en última instancia, lo que va a ser a instancia de las pruebas. Así que vamos a empezar con nuestra orden del día de hoy. Vamos a repasar algunas normas para nuestra sección, a continuación, vamos a bucear en matrices, funciones, y la línea de comandos argumentos, que es lo que ustedes han cubierto esta semana pasada en la conferencia y luego el lunes, y lo que va a cubrir más de mañana. Y, por último, vamos hablar de PSet2. Si pudiera conseguir una votación a mano alzada si no han mirado el problema de establecer dos especificación. Vamos a decir todos. Fantástico. Hablaremos de los boletines de problemas en un poco, pero si usted lee el conjunto de problemas especificación, eso es todo lo que tiene que hacer. Si has leído antes de venir a clase y la sección del martes, se quiere ser una gran posición. Podemos pasar por el conjunto de problemas, que es lo que vamos a hacer al final. Vamos a ir a través de la lógica, asegúrese todo el mundo está en la misma página. Yo quiero que seas capaz de dejar Martes sentirse muy cómodo con lo que que tenga que hacer para el grupo problema de esta semana, y si no lo hace, lo haré con alegría quedarse después y trabajar con usted. Pero eso es una cosa que tienes que hago, pero creo que sería muy inteligente, sólo para leer el conjunto de problemas especificación de la clase el martes, que suena como un gran cantidad de chicos hizo. Voy a empezar con una agenda cada clase para que sepa a dónde vamos. Esto también es útil para observar a la gente en línea, porque cada sección es un código de color, así que si quieres venir espalda y simplemente ver 10 minutos en lugar que todo el tramo de 90 minutos, se sólo puede ir a la sección de código de color y mirar esa parte. Así que he tratado de romper para arriba en buen módulos que le permitirán - si desea volver y revisar, u otros estudiantes que son sólo viendo una sección para revisar - para encontrar la cosa específica que prestar atención a y aprender más acerca de. Sweet. Normas. Soy un líder de FOP en el campus. No sé si alguien lo hizo FOP. ¿Alguien do FOP? A una persona le hizo FOP. Dos personas hicieron FOP. Impresionante. Así FOP es el primer año al aire libre Programa de Orientación. Tomamos estudiantes de primer año en el bosque y hacer las experiencias más mágicas de sus vidas, ¿correcto? Sí. Suena bastante bien. Así que sólo quería empezar nuestra primera sección discutiendo algunas normas para la clase y nuestra relación porque creo que son muy importantes. Primero y ante todo, como aquellos que son mi sección han recibido y se ha discutido en la que correo electrónico, me encanta esto. Esta es mi parte favorita del año. He estado tan emocionada. He estado aquí durante horas de hoy. No he salido de este edificio, excepto para ir a comer porque me encanta la sección CS50, I enseñanza de amor, me encanta trabajar con ustedes. Uno de mis mayores prioridades, si no es mi prioridad número uno, no sólo para esta clase, pero incluyendo mi otro clases y actividades extracurriculares, es apoyar a ustedes, y ayudar a ustedes, y todo lo posible para asegurarse de que usted los chicos tienen un maravilloso, divertido, productivo, atractiva, apasionante experiencia en esta clase. Eso es lo que estoy comprometido a. Es por eso que me encanta hacer esto. Esa es mi prioridad número uno, el apoyo a ustedes. Si usted tiene alguna pregunta acerca de la conferencia, el conjunto de problemas, sección, vida, incluso si usted quiere hablar acerca de vida, no dude en acercarse. Tienes mi número de teléfono celular, tienes mi correo electrónico dirección, tienes mi Gchat. Puede ponerse en contacto conmigo en cualquier o todos los los cada vez, pero probablemente no va a conseguir una respuesta cada vez. Trato y vuelva dentro de 24 horas. A menudo será dentro de 20 minutos o 24 minutos. Debería haber dicho que para que sea paralela. Pero usted conseguirá una respuesta con bastante rapidez. Si me TEXTO una hora antes de la del conjunto de problemas debido, voy a calmar usted hacia abajo y hacer ejercicios de respiración profunda con usted, pero si usted no ha comenzado, usted probablemente no va a terminar, y Realmente no puedo ayudarle hacia fuera allí a pesar de que voy a intentar mi mejor esfuerzo. Así que voy a hacer todo lo Lo que pueda para ayudarte. Por favor, siéntase libre para llegar si que se encuentra en la sección de nuevo, en horas de oficina si me ves, o incluso fuera. Estoy feliz de hacer una cita para reunirse y trabajar a través de problemas con o repasar el material. Así que ese es el número uno, el apoyo. Voy a hacer todo lo que pueda para apoyarle. Número dos, reunidos en el centro. Por mucho que me gustaría ser, estoy no es omnipotente o todopoderoso o que todo lo sabe, así que no sé todo el tiempo si lo que estoy haciendo es poniendo en todo, si la forma en que estoy enseñando el tema le ayuda a aprender, o si se confunden en un tema, pero no que levante la mano o me preguntan o bien, enviando un correo electrónico. O incluso si, de nuevo, está confundido sobre algo en el conjunto de problemas. Si no se llega a mí, Yo no puedo saber a ciencia cierta. Voy a hacer mi mejor esfuerzo para el check in en chicos, asegúrese de que todo es va bien, tratar de enseñar las cosas de una manera que será propicio para la mayor parte de sus estilos de aprendizaje, pero si hay ¿Puedo hacer algo, hágamelo saber. En ese sentido, si quieres un poco de ayuda con el conjunto de problemas, estoy más que feliz de ayudarle a con fijó el problema. Vamos a hacer un montón de que hacia el segundo medio de esta sección. Pero si usted no ha leído los boletines de problemas atrás y no han visto la caminata a través y no han visto los cortos y esperando que te enseñe todo lo que se ha grabado en vídeo en línea o que usted puede encontrar en CS50 estudiar, eso no es realmente justo para mí oa sus otros compañeros. Así que por favor, estoy más que feliz de ayudar ustedes, pero ustedes llegaron a reunirse conmigo en el medio. Tenemos un montón de recursos para Está disponible en CS50. He mencionado algunas de ellas. Por favor tome ventaja de ellos. Si usted está confundido, estoy más que feliz que le ayude a explicar en de otra manera, pero no es justo si los estudiantes se muestran en horario de oficina, no han empezado nada, y es La noche del jueves y que están esperando la TF a caminar a través de todos y cada uno cosa para el problema planteado por al mediodía del día siguiente. Tiene sentido? Una vez más, por favor encontrarse en el medio. Y, por último, las altas expectativas. Yo voy a estar con ley de todos los que son en mi sección, o anotando su boletines de problemas. No ha vuelto un problema establecer cero o uno aún. Lo sentimos por eso. Nos tomó un tiempo para finalmente conformarse secciones, y ahora podemos empezar de calificaciones. Los traeré de nuevo a usted tan pronto como sea posible. Esos son algunos de mis asesorados por ahí. Los traeré de nuevo a usted tan pronto como sea posible. Y para el problema de establecer dos, estaremos en Programamos y empezaremos conseguirlos a usted muy rápidamente después de encender pulg Al llegar a su problema de un retroceso, que obtendrán puntajes, como ustedes saben desde leer el plan de estudios - la corrección, diseño, el alcance y las puntuaciones de estilo. También obtendrá los comentarios. Los comentarios son más importantes que las puntuaciones. Creo que es seguro decir que. Las puntuaciones son sólo un número de uno a cinco. Es difícil de leer en ellos. Es difícil mejorar la de aquellos. Pero los comentarios señalarán específica cosas que hiciste bien o áreas usted puede mejorar y te dan algunos ideas para el futuro o alternativa formas de hacer las cosas. Así que por favor, por favor, lea a través de los comentarios. Puse un montón de tiempo en esos comentarios. Por favor, lea a través de ellos y hacer no sólo desplazarse hacia abajo a la parte inferior de la PDF, busca tu puntuación, o visite el sitio y encontrar su puntuación y, a continuación, pasar por alto los comentarios. Así no es como eres va a mejorar. Así no es como se va a aumentar sus puntajes en última instancia, sólo mirando las puntuaciones. Por favor mira los comentarios. Y a lo largo de la línea de altas expectativas, de nuevo, como he dicho, se puede marcar uno al cinco. Dos, tres, y cuatro patas son el gran mayoría de las puntuaciones vas a estar recibiendo. Unos y cinco son a la vez muy raro. Siempre hay cosas que podemos hacerlo mejor. Cada vez que firmo el código de un programa, no hay siempre algo que podría haber hecho mejor. Así que en lugar de decir que te dan un cinco todo el tiempo en todo, y lo hizo todo perfecto, no creo que ninguna de nosotros realmente creer que nosotros - o con suerte, no hacemos todo lo perfeccionar todo el tiempo. Así que no se preocupe si usted no obtuvo un cinco. Un niño de cinco no se asigna a una A, un niño de cuatro no se asigna a una B, una de tres hace no se asigne a un C. Eso no es cómo funcionan las puntuaciones. Al igual que David ha dicho muchas veces, en del semestre final todas sus cuentas y aportaciones de mí, tu TF, se unen y determinar una calificación final para usted. Pero, de nuevo, no es cinco, Una, cuatro, B, etcétera. Así que voy a tener altas expectativas para ustedes. Voy a esperar un buen problema conjuntos y voy a dar retroalimentación como tal. Y no va a significar que eres va a obtener una calificación peor. Usted se califican en términos de su progreso respecto a la semana cero al final del curso. Y, por último, en términos de alta las expectativas de la clase, me encanta cuando personas participan. Entiendo que algunas personas se sienten más o participar menos cómodo. Otras personas están participando no por levantar la mano y hablando todo el tiempo. Pero en esta clase vamos a ser haciendo un montón de pequeños problemas, muchos de mini preguntas, y algo más problemas de codificación más grandes. Así que sin duda trabajar estos ejercicios fuera cuando las hacemos en el ordenador o en una hoja de papel. Pero también te voy a dar un poco de tiempo antes de Alguien alguna vez tiene que responder a algunas de las preguntas que le pido. Así que porque yo te daré un tiempo para pensar en ello, porque vamos hacer las cosas de socios a veces, Voy a esperar a todo el mundo a comprometerse un poco. Y a falta de un término mejor, hay probablemente será la llamada fría, que es donde todo el mundo tendrá la oportunidad de para pensar la respuesta, y luego Voy a llamar a usted, y luego que va a decir la respuesta. No te preocupes ni te asustes por eso. Lo he hecho en el pasado y que he encontrado que es mucho más éxito, investigación educativa también ha de leer en él para determinar si era o no un buena táctica. Es muy útil, especialmente si usted dar a los estudiantes tiempo para pensar acerca de la respuestas y no les haga sólo vienen y decir que la derecha del palo. Pero si usted no se siente cómodo contestar, yo también soy muy bueno en sintiendo que fuera, y no vamos a se pone en el lugar, sobre todo en la cámara, a pesar de que ninguno de usted está en la cámara en estos momentos. Así que esas son las normas que tengo. Una cosa más en la línea de conocer en el medio. Voy a dar a ustedes una gran cantidad de comentarios. Por favor, dame retroalimentación. Hay un sitio web, sayat.me/cs50. Así que es una retroalimentación honesta. Si usted quiere dar durante la sección, Recibo un correo electrónico cada vez que sucede. Vamos a tomar un descanso en un poco, así que voy a mirar a través de las votaciones a continuación. Si alguna vez tiene algún comentario, por favor, dar a mí allí. Si usted me da retroalimentación sobre la Q, que es maravilloso, pero esa es la guía que lo haga al final. Pero eso será al final del semestre para No voy a ser capaz de tomar nada de eso retroalimentación y convertirla en la enseñanza ustedes mejor. Así que por favor, si usted tiene cualquier retroalimentación, dámelo. Me encanta la retroalimentación. Volver a la FOP, se obtiene retroalimentación todo el tiempo. Usted me puede dar ventajas, las cosas buenas, deltas, cosas que puedo mejorar. Usted puede hacer comentarios sobre mi ropa. Eso no va a ser tan útil, pero usted es la bienvenida a comentar sobre cualquiera y todo. Por favor, por favor déme la retroalimentación. Lo valoro mucho y significa mucho para mí. Una norma más, diversión. Vamos a tener un montón de diversión. Esperemos que en este curso, se le tener un montón de diversión. Vamos a tener dulces en sección. Tendremos música. Estaremos con suerte conocerse otro algo así, así que quiero que esto sea una experiencia divertida y atractiva. Sé que algunos de ustedes han dormido en las conferencias que tuvieron el día de hoy, así que espero que no lo hará ser el caso ahora. Y si es el caso ahora, sólo no roncar porque eso podría ser captado por la cámara. Sweet. Todas las preguntas, comentarios o inquietudes antes de pasar sobre cualquier cosa que hayamos hablado? Grande. Así que vamos a ir en matrices primera. Esta es la forma de hacer un arreglo. Hemos visto esto antes. Usted tiene un tipo de datos, usted tiene un nombre, y entonces usted tiene un tamaño. Justo aquí, puedo crear dos matrices. La primera es una serie de caracteres, y cuenta con 26 espacios. La segunda es una serie de partituras, y tiene tres espacios de tres números enteros. ¿Sí? ESTUDIANTE: ¿Son todas estas diapositivas en algún lugar disponible para nosotros? JASON HIRSCHHORN: Muy buena pregunta. La pregunta era, ¿son todos estas diapositivas disponibles? Sí. Todas estas diapositivas estarán disponibles, y en el futuro, voy a enviarlas por correo electrónico a que antes de la sección. Pero hoy en día, porque esta es la primera semana, tuvimos un comienzo tardío. Así que por lo general, obtendrá estas diapositivas, pero estarán disponibles en línea y Voy a enviarlas por correo electrónico a usted justo después de la clase. ¿Alguna otra pregunta? Así que de nuevo, las matrices son cajas, por falta de una palabra mejor, que mantienen múltiples elementos de un tipo de datos, y que son uno junto al otro en la memoria. Y así, una vez más, se trata de cómo se puede hacer dos tipos de matrices. Así que después de que haya hecho su matriz con esa primera línea - partituras int, soporte tres, corchete de cierre - que quiere que lo inicie. ¿Quieres poner algunos valores en ese país. Y esta es la forma de poner algunos valores en allí, sólo elegir el indice y escribir el número. Vamos a dibujar esto en la pizarra. ¿Todos pueden ver? Todo el mundo puede ver. Sweet. Así que va a ser mi matriz llamada Scores. Como se puede ver, es de tamaño tres. Hay tres cajas en ese país. Cada uno puede adaptarse a lo tipo de tipo de datos? ESTUDIANTE: Integer. JASON HIRSCHHORN: Un entero en éste. Escribimos int puntuaciones, y la primera palabra es el tipo de datos que va a ir en los cuadros en la matriz. Así que puedo encajar tres. ¿Por qué tengo cero hasta hay en el tablero? ¿Por qué dice cero la puntuación es igual a 1? Me recuerdas a tu nombre. ESTUDIANTE: Kurt. JASON HIRSCHHORN: Kurt. ESTUDIANTE: Sí. JASON HIRSCHHORN: ¿Por qué? ESTUDIANTE: Debido a que el primer índice es cero, empezamos a contar desde cero. JASON HIRSCHHORN: Así que empezamos a contar desde cero. Eso es exactamente correcto. Esta es la parte confusa y se disparará que, sobre todo cuando estás tratando de recorrer arrays, que vamos a hacer en un rato. Empezamos a contar desde cero. Así que si quiero hacer referencia a la primera cuadro, no es una caja. Por desgracia, es cuadro de cero. El segundo es un cuadro de uno, y en este caso, la tercera es la caja dos. ¿Qué pasa con la caja tres? ¿Dónde está la caja de tres? O si lo que quiero hacer cuentas, soporte tres, corchete de cierre, ¿qué es eso? Así que usted dijo que el carácter nulo. ¿Alguna otra idea? ¿Qué es el grupo de puntuación de tres bracket? ESTUDIANTE: En realidad no existe porque sólo se definió como puntuaciones, soporte de tres. JASON HIRSCHHORN: Así que usted dice que en realidad no existe. En algunos casos, cuando estamos tratando con cadenas, por lo general vamos a poner un nulo carácter al final. Vamos a llegar a eso en un segundo. Pero en este caso, hay hay una tercera caja aquí. Así que la última caja en cualquier matriz es de tamaño menos 1. Así que si tenemos una matriz de tamaño n, la primera casilla está en cero, el último es a n menos 1. Y en este caso, no existe. Hay algo aquí en la memoria, pero no es la nuestra. No somos dueños de ella. Nosotros no pedimos. Así que si intentamos acceder a ella, lo que vamos a Aún un poco, probablemente vamos a meterse en problemas. En este caso, estoy inicializar mi matriz con tres variables. Estamos poniendo un uno en la caja cero, dos en una caja, y tres en la caja dos. ¿Alguien tiene alguna pregunta sobre la inicialización de una matriz? Así que nos fuimos en este momento. Partituras, soporte de tres, corchete de cierre, eso no existe. Estamos cero indexadas en ciencias de la computación, así que empezamos a contar desde cero. La última caja disponible para nosotros, es el tercer cuadro, pero se llama la caja número dos. Más abajo, esto es una alternativa manera de inicializar matrices. Así que en lugar de crear la matriz en una line, rellenando el primer cuadro, luego el segundo cuadro, el tercer cuadro, usted puede hacerlo todo en una sola línea. Así, en esa línea, ambas matrices. Esto crea el mismo array exacta como lo que hemos creado aquí, pero sólo lo hace en una sola línea. Ahora hemos creado nuestra matriz. Por lo general, una vez que se crea una matriz, querer hacer algo con él, ya sea eso es llenarlo o conseguir cosas fuera de él e imprimirlos en la pantalla. En este caso, vamos a través de nuestro array puntajes, que hemos inicializado en la primera línea aquí en gris. Y luego, en la segunda línea, se inicia iteración a través de la matriz. ¿Alguien tiene alguna pregunta acerca de la estructura de un bucle? Así que este es el bucle for. Tenemos nuestra condición inicial y, a continuación, nuestra condición final, y luego iteración, i, cada bucle. Y en las llaves de este para bucle, ¿qué pasa si yo fuera a ejecutar este programa? ¿Alguien puede decirme lo que nos darían? [? Matu? ?] MATU: Imprimir todas las puntuaciones en cada línea. Sería imprimir cada puntuación en una línea separada. JASON HIRSCHHORN: ¿Qué es exactamente tendría que imprimir? ESTUDIANTE: Se imprimirá una, luego dos, luego tres. JASON HIRSCHHORN: Exactamente. Sería imprimir uno, luego dos, luego tres, cada uno en líneas separadas, porque vamos a través de la matriz y se le ver que el segundo, el printf declaración, los resultados i. Así que en la primera ronda a través de nuestro de bucle, i es igual a cero, lo que significa que estamos obtener el valor en cero puntos - que, si nos remontamos a nuestro diagrama, es uno - y rellenando - oh, que dice c. Eso debería ser% d. Voy a arreglar esto en un momento cuando Yo la mano que a ustedes. Pero estamos presentando un número entero por lo que debería ser% d aquí, no% c. ¿Qué es% c para? ESTUDIANTE: Carácter. JASON HIRSCHHORN: Carácter, exactamente. ¿Cuál es el otro? Si no quieres hacer% d para una entero, ¿qué más se puede hacer? ESTUDIANTE: i. JASON HIRSCHHORN:% i, exactamente. Así que cualquier pregunta acerca de la iteración a través de la matriz? Entonces, ¿qué pasa si hacemos esto? En lugar de hacer i es menor que tres, nosotros i es menor que o igual a tres. ¿Qué sucede cuando ejecutamos este código? Sí, Annie? ESTUDIANTE: Ellos van a imprimir cosas raras en la cuarta línea. JASON HIRSCHHORN: Así que usted ha dicho, es que va a imprimir cosas raras en la cuarta línea? ¿Alguien tiene una respuesta a su pregunta? Así que lo más probable es que cuando llegamos a la - por lo que en la cuarta ronda a través de nuestro de lazo, al igual que usted pensó, Annie, que va a ser puntajes soporte tres, lo que que ya hemos descubierto qué no Existimos, y vamos a tratar y de acceso que, imprimirlo cabo, lo utilizan de alguna manera. Así que el equipo probablemente se enoje con nosotros. Tienes toda la razón. Puede salir del programa en conjunto. Puede imprimir algo realmente extraño. No se puede decir con seguridad. Lo más probable es que probablemente va a enojar a usted y apenas salga de inmediato. Pero esto es un error común que tendrá donde estás justo al lado de uno a Al final, y esto es un error que se que la peste a través de su codificación. Una forma que me gusta hacer es sólo en una pizarra, ir a través de cada iteración del lazo en la mano o en el papel para ver ¿Qué está pasando, y entonces usted generalmente se dan cuenta, oh, espera, que no debería han ido a menos de o igual a tres. Debería haber dejado a los dos, que es qué sucede si su condición es menos de tres. Cualquier pregunta hasta ahora? Sweet. Así que todos ustedes tienen sus computadoras abierta. Vamos a darle dos y cincuenta y ocho minutos para escribir un programa que crea una matriz con los enteros uno a través de cinco y luego imprime cada entero en una nueva línea. Y si usted tiene alguna pregunta, levanten la mano. Estoy feliz de conseguir. Como he dicho, vamos a tomar tres minutos para escribir esto. ¿Están todos bien si voy a un nueva ventana y cerrar esta? Lo siento si no has tenido la oportunidad de hasta el final, pero vamos a hacerlo juntos ahora mismo. Así que en la pantalla, tengo # include cs50.h, # include stdio.h. ¿Puede alguien decirme qué esas dos líneas hacen? Michael? ESTUDIANTE: Incluyen las bibliotecas que CS50 hizo y que Steve tiene salvo para su uso a hacer su vida más fácil. JASON HIRSCHHORN: Así que usted ha dicho que incluir las bibliotecas, que CS50 hecho, cs50.h, y uno que es solo estándar, viene con el paquete C, stdio.h. ¿Cómo que incluye las bibliotecas, sin embargo? ¿Se puede ser un poco más específico? ESTUDIANTE: Hace que sea, para que pueda utilizar ciertas palabras de código para tener una función ocurra sin tener que ir y hacer que la función c ti mismo. JASON HIRSCHHORN: ¿Puede usted darme un ejemplo? ESTUDIANTE: Al igual que printf es uno que puede utilizar. JASON HIRSCHHORN: Printf. Así que usted dijo printf es uno de los funciones en las que en lugar de tener que printf escribir por su cuenta, printf es incluidos realmente en stdio.h, por lo que sólo puede utilizarlo y asumir que va a trabajar. En stdio.h, si usted abrió ese archivo, habría que incluir cómo printf obras, todo el código para printf? ¿Por qué sacudes la cabeza? ESTUDIANTE: Debido a que el archivo de cabecera sólo incluye la declaración de la función. JASON HIRSCHHORN: Exactamente. El archivo de cabecera sólo incluye la declaración de la función. Así que, básicamente, al compilar este, Hit Count Marca, que lo haremos en un segundo, el compilador sabe que si utiliza printf, existe printf. Esto va a ser definido en alguna parte. No es un problema para usted usarlo. Y luego, más adelante, que va a incluir la unos y ceros que contienen en realidad aplicación de printf y fusionarlas con su código. ¿Cómo hacer que asegurarse que incluye las unos y ceros para, por ejemplo, reciben cuerda? ESTUDIANTE: Obtener cadena está en cs50.h. JASON HIRSCHHORN: Así es. Así que dice Obtener existe cadena, la declaración de la función. Pero entonces los unos y ceros, el binario archivo que incluye la realidad implementación de cadena get? ¿Cómo se asegura de que va con su programa? ESTUDIANTE: Pase el enlazador en el argumento de línea de comandos. JASON HIRSCHHORN: Pase el enlazador en el argumento de la línea de comandos. ¿Cómo se hace eso? ESTUDIANTE: Es la línea-l en el sonido metálico JASON HIRSCHHORN: Exactamente. Usted dice-l CS50, ¿verdad? Eso incluye a los unos y ceros. ESTUDIANTE: Pero Marca hace que para usted, ¿verdad? JASON HIRSCHHORN: Exactamente. Hacer lo hace por usted, pero con el tiempo, que no acabaréis de Marca, o usted tendrá que hacer una Marca por su cuenta, así que es un buena cosa para recordar. Si se va a usar una de estas otras bibliotecas, no sólo tiene usted escribir # include y a continuación, la biblioteca. También es necesario vincularlo pulg Y esas dos cosas son diferentes. -L CS50 es diferente que # include cs50.h. Luego tenemos las principales llaves void int, y ahora vamos a código interior principal. La primera línea que tengo aquí es un comentario que dice, crear una matriz con ints uno al cinco. ¿Qué es una buena palabra para describir lo que tienen en estos momentos en la pantalla, sólo comentarios dentro principal? ¿Cómo se llama eso? ESTUDIANTE: Pseudocódigo. JASON HIRSCHHORN: Pseudocódigo. Gracias, Jeffrey. Eso es exactamente correcto. Pseudocódigo. ¿Han visto pseudocódigo antes? Levante su mano si usted ha utilizado pseudocódigo antes un problema de un conjunto. Alrededor de la mitad de ustedes. Yo recomendaría el uso de pseudocódigo para descomponer los problemas en más pequeño, más fácil de morder pedazos. También, si lo hace el pseudocódigo, se ya que sus comentarios en gran medida incorporado, por lo que no tiene que volver atrás y tratar de averiguar lo que estabas haciendo. Entonces, ¿puede alguien darme esta primera línea para crear una matriz con ints uno a través de cinco? Usted? ESTUDIANTE: Int y entonces usted puede llamar cualquiera que sea el número y, a continuación, plaza soporte de cinco. JASON HIRSCHHORN: Números Así int, corchete cinco. ESTUDIANTE: igual, y a continuación entre llaves. JASON HIRSCHHORN: igual, llaves. ESTUDIANTE: Uno, dos, tres, cuatro. JASON HIRSCHHORN: Uno, dos, tres, cuatro, cinco. Estudiante: ¿Y entonces llaves y luego por punto y coma. JASON HIRSCHHORN: Y rizado aparatos ortopédicos y coma. Excelente. Imprima cada int en una nueva línea. ¿Puede alguien más aportar alguna yo ese código, por favor? [? Matu? ?] Adelante. ESTUDIANTE: Para ( JASON HIRSCHHORN: Para ( ESTUDIANTE: int i = 0 JASON HIRSCHHORN: int i = 0 ESTUDIANTE: Punto y coma i menos de cinco. JASON HIRSCHHORN: Punto y coma, i de menos de 5. ESTUDIANTE: Punto y coma, i + +. JASON HIRSCHHORN: Punto y coma, i + +. ESTUDIANTES: paréntesis cerrados, a continuación, llave abierta. Paréntesis cerrado: JASON HIRSCHHORN y dos llaves. Entre las llaves? ESTUDIANTE: ¿Y entonces printf "% d / n" JASON HIRSCHHORN: Lo sentimos, espera. Printf "% d / n, cerrado cotización. ESTUDIANTE: ¿Y luego cita cerrada, coma, conteo, soporte i. JASON HIRSCHHORN: Coma, contar, soporte i. ESTUDIANTE: Lo sentimos, números de ménsula. JASON HIRSCHHORN: Números, soporte i. ESTUDIANTE: Lo siento. Y luego cerró paréntesis, punto y coma. JASON HIRSCHHORN: Cerrado paréntesis, punto y coma. Voy a guardar eso. Vamos a hacer el recuento. ¿Y cómo puedo ejecutar contar? ESTUDIANTE: Barra inversa. ESTUDIANTE: Dot barra inclinada - JASON HIRSCHHORN:. / Cuenta, exactamente. Gracias. . / Cont. Uno, dos, tres, cuatro, cinco en líneas nuevas. Parece que funcionó. Sí, Noah? ESTUDIANTE: También puede hacer menor o igual a cuatro, al igual que i es menor que o igual a cuatro? ¿Hay alguna ventaja de hacer menos de cinco, o simplemente una forma diferente de escribirlo? JASON HIRSCHHORN: Así que la pregunta que es podría haber hecho i es menor o igual a cuatro en lugar de i es menor que cinco. Ojalá que han trabajado el mismo? ESTUDIANTE: Lo que debería. JASON HIRSCHHORN: Si. Es totalmente tendría el trabajo de la misma. Estilísticamente, es generalmente menor que, y verás en un segundo cuando hacemos cadenas, podemos usar algo llamados strlen, que usted ha visto antes, para obtener la longitud de la cadena. Y no se puede hacer menos que o igual strlen. Usted podría hacer menor o menos uno strlen iguales. Así que es sólo más agradable hacer menos que strlen. ¿Sí? ESTUDIANTE: ¿Y en las pruebas reales, hacer tenemos que proporcionar comentarios sobre nuestro codificar también? JASON HIRSCHHORN: La pregunta estuvo en pruebas, ¿te que proporcionar comentarios? Así que vamos a hablar más sobre concursos cuando que surgen, pero en general, una buena regla de oro es siempre que esté escribir código, formular observaciones. Si recibe un código incorrecto pero el comentar la derecha, podría obtener alguna de crédito, tanto de mí si yo estaba calificando que en un conjunto de problemas o en un concurso. Así que los comentarios son siempre buena para ofrecer. Sweet. Conde. Excelente trabajo. Vamos a pasar. Cuerdas. Cuerdas. Hemos visto esto antes en conferencia. Esto me dejó alucinado cuando me primero descubierto esto. Probablemente no echaba de nadie importa aquí, pero eso está bien. Las cadenas son arreglos de caracteres, y terminan con, como usted ha dicho antes, el terminador nulo, lo que es este / 0 carácter. Si vamos a dibujar una cadena en la bordo, vamos a dibujar por aquí. ¿Cuánto tiempo es esta cadena? Lo siento. ¿Por cuánto tiempo es esta cadena? ESTUDIANTE: [inaudible]. JASON HIRSCHHORN: ¿Cuatro? ¿Por qué cuatro? ESTUDIANTE: Debido a que el quinto puesto es para el carácter nulo. JASON HIRSCHHORN: Así que el quinto puesto es para el carácter nulo. Así que si yo fuera a correr en strlen esto, me daría cuatro. Correcta. Y la matriz, sin embargo, si tuviera que inicializar la matriz, cuántos espacios tendría que pedir? ESTUDIANTE: Cinco. JASON HIRSCHHORN: Cinco. Tendría que pedir cinco, pero no puedo sólo poner cuatro personajes aquí porque tengo que poner ese nula terminador en el extremo. Así que vamos a escribir en "ohai" y poner el terminador nulo al final. Vamos a decir esto es una cadena s es igual a esta. ¿Qué es s abrazadera cero? s soporte de cero, Annie? ESTUDIANTE: O. JASON HIRSCHHORN: O, exactamente. s soporte de uno? s soporte de cinco? s soporte de cinco? ESTUDIANTE: No existe. JASON HIRSCHHORN: No existe. Exactamente derecha. Genial. ¿Una pregunta sobre la comprensión cadenas como arrays de caracteres? Bien, entonces. Uno de los programas más para ustedes. Escriba un programa que pide al usuario una cadena y luego imprime cada personaje en una nueva línea. Así que vamos a tomar tres minutos para escribir este programa, y ​​luego vamos a codificarlo como un grupo. Lo siento. ¿Tuvo que ver esto? ESTUDIANTE: No. JASON HIRSCHHORN: OK. Tomemos un minuto más que codificar esto, o al menos empezar a trabajar en ella. Así que usted puede seguir trabajando, pero voy a empezar a ir a través de él. Así como antes, tengo en la pantalla # Include cs50.h, # include stdio.h. int void main. Dentro de las llaves de principales, no tengo dos comentarios, pseudocódigo. Una de ellas es pedir una cadena del usuario. La segunda es imprimir cada personaje en una nueva línea. Así que Anna, ¿puedes darme pido para una cadena del usuario? ESTUDIANTE: Printf. JASON HIRSCHHORN: Printf? ESTUDIANTE: Sí. ( JASON HIRSCHHORN: ( ESTUDIANTE: "dame una cadena. JASON HIRSCHHORN: "dar Hazme un str - ups - cadena. ESTUDIANTE: / n ") y coma. JASON HIRSCHHORN: Poner fin a la cadena, cierres de paréntesis, punto y coma. ESTUDIANTE: Sí. Y luego la siguiente línea, cuerda s = get string. JASON HIRSCHHORN: String s = get string. ESTUDIANTE: Sí. Y entonces () JASON HIRSCHHORN: () ESTUDIANTE: Punto y coma. JASON HIRSCHHORN: Punto y coma. Fantástico. Así que me voy a poner una cadena y Voy a guardarlo en qué? ¿Cuál es la variable llamada que ha creado? ESTUDIANTE: String s. JASON HIRSCHHORN: La variable se llama s. Es de tipo cadena. Exactamente. Lo siguiente que queremos es imprimir cada personaje en una nueva línea. ¿Quién me puede dar ese código? [Inaudible]? ¿Se puede dar a mí? ESTUDIANTE: Seguro. JASON HIRSCHHORN: Hagámoslo. Y lo siento. No me gusta repetir lo que usted dice porque usted está haciendo bien, pero yo tener que repetir de modo que cuando se transcribir esto, pueden obtener todos los el texto sobre las transcripciones. Así que usted puede seguir hablando. Por desgracia, no tengo decir que sobre ti. Lo siento, pero - ESTUDIANTE: Eso está bien. Para int i = 0 JASON HIRSCHHORN: Para int i = 0 ESTUDIANTE: Yo menos de - JASON HIRSCHHORN: Punto y coma. ESTUDIANTE: Antes de esto, podemos poner un variables para que pueda obtener la longitud del nombre int? JASON HIRSCHHORN: Oh, no lo sabes quiere poner el punto y coma? Aceptar. Entonces, ¿qué es lo que quieres hacer después de cero? ESTUDIANTE: Quiero conseguir la longitud de la cadena de s y establecer que a una variable? JASON HIRSCHHORN: OK, así que ¿cómo lo hago? ESTUDIANTE: ¿Así que haces int longitud = JASON HIRSCHHORN: int longitud = ESTUDIANTE: S-T-R-L-E-N. JASON HIRSCHHORN: S-T-R-L-E-N - ESTUDIANTE: Por s. Soportes. JASON HIRSCHHORN: (s). ESTUDIANTE: ¿Y entonces yo creo que hay que poner un punto y coma entre los dos ints. JASON HIRSCHHORN: Un punto y coma después de cero? ESTUDIANTE: Sí. A continuación, poner un punto y coma después de eso, y usted dice, i menos de longitud. i menos de longitud, que es la variable. ESTUDIANTE: ¿Y entonces por punto y coma. JASON HIRSCHHORN: Punto y coma. ESTUDIANTE: i + +. JASON HIRSCHHORN: i + +. Ahí está nuestro bucle for. Aceptar, dentro del bucle. ESTUDIANTE: ¿Y luego hacer printf. JASON HIRSCHHORN: Printf. ESTUDIANTE: Soportes. JASON HIRSCHHORN: Los paréntesis, comillas. ESTUDIANTE: Los paréntesis, citas,% c / n. JASON HIRSCHHORN:% c, OK. ESTUDIANTE: / n. JASON HIRSCHHORN: / n. ESTUDIANTE: cotizaciones cerrado. JASON HIRSCHHORN: cotizaciones Cerrado. ESTUDIANTE: por comas. JASON HIRSCHHORN: Comma. ESTUDIANTE: S. JASON HIRSCHHORN: S. ESTUDIANTE: Bracket i. JASON HIRSCHHORN: Bracket i. ESTUDIANTE: ¿Y entonces cerró paréntesis. JASON HIRSCHHORN: paréntesis cerrado. ESTUDIANTE: ¿Y entonces por punto y coma. JASON HIRSCHHORN: Punto y coma. Fantástico. Así que vamos a guardar esto. Hacer hechizo. Oh boy. Tengo un par de errores. Primer error en la línea 11, que dice, espera expresión, y está dando me un error que el segundo int, ahí está el error. Hay algunos errores por ahí. ¿Alguien sabe qué error que es eso? Kurt? ESTUDIANTE: Creo que se supone que ser una coma, no un punto y coma. JASON HIRSCHHORN: OK, una coma en lugar de un punto y coma. Así es que todos tenemos que arreglar? ESTUDIANTE: No. JASON HIRSCHHORN: ¿Qué más Por qué tenemos que arreglar? ESTUDIANTE: Tenemos que incluir string.h. JASON HIRSCHHORN: Incluir string.h. ¿Dónde tengo que incluir eso? ESTUDIANTE: El mismo lugar que está incluida las otras cosas, a la derecha después de incluir stdio.h. JASON HIRSCHHORN: Vamos a ver si esto funciona primero porque en general, me gusta para arreglar una cosa primero, y luego ejecute y, a continuación, ver los errores que tenemos. Así que vamos a limpiar el terminal con el control de n, vamos a hacerlo crea hechizo. Así que otro error en la línea 11. Punto y coma esperado. Y todavía estoy recibiendo errores en esta línea. Así que no me ha dado un error que dice que no entiende lo que strlen es decir, pero me da error en esta line, así que lo que los demás están equivocados? Mark? Marcus. ESTUDIANTE: ¿Usted tiene que quitar la segunda declaración int? JASON HIRSCHHORN: Retire la segunda int. Vamos a probar esto. Ahora limpiar el terminal. Hacer hechizo. Error. Implícitamente se declara la biblioteca función strlen. Así que ahora sí vemos que el error. ¿Qué necesitamos para incluir? ESTUDIANTE: string.h. JASON HIRSCHHORN: Incluya string.h, Haremos # incluimos string.h en la parte superior de la pantalla. Vamos a guardar, hacer hechizos. Ahora compilado. Así que de nuevo, las cosas que necesitaban para recordar la línea 12 en nuestro bucle for cuando estamos configurarlo, int i = 0, = longitud strlen (s). Esta es una estrategia fantástica. El estilo de este es grande, la diseño de este es muy grande. Podemos ir a esas razones más tarde, pero de esta forma sólo tendrá que llamar strlen vez en lugar de todos y cada uno vez que se ejecuta a través del lazo. Sin embargo, es necesario utilizar una coma allí y que no es necesario volver int. Si usted está declarando tanto los variables juntas, que no es necesario volver int. Y entonces, si usted va a utilizar strlen, que es otra biblioteca funcionar no incluido en stdio.h o cs50.h, hacer Asegúrese de incluir string.h. Kurt? ESTUDIANTE: Entonces si no es necesario decir qué tipo de extensión es, hace que significa que tiene que ser un int? No se podía tener dos diferentes tipos ahí? JASON HIRSCHHORN: por lo que podría tener dos tipos diferentes. La longitud es un int aquí, sin embargo. La longitud es un int porque es comas y, a continuación lo mismo. ESTUDIANTE: ¿Así que se supone que se va al ser la misma que la primera? JASON HIRSCHHORN: Exactamente. No vamos a hacer esto ahora, pero usted puede incluir dos variables en la misma línea utilizando un tipo de datos. Así int x, y crearía dos variables. Así int x, y, si hacemos eso, se da me una variable no utilizada x e y porque nosotros no usamos. Así que poner vacío antes es sólo un truco de lujo si no se utiliza algo, para usarlo. Pero como ves, creo xey en la misma línea con una coma. Se trata de crear dos enteros allí mismo. Así que sí, totalmente posible crear dos cosas en la misma línea separados por una coma. Vamos a deshacernos de ellos, sin embargo. Así que no hay hechizo. Gracias chicos por la codificación por nosotros. Vamos a hacerlo una vez más, ejecutarlo. Dame una cadena. [Inaudible], que hizo la mayor parte. ¿Cuál es la secuencia? ESTUDIANTE: Hola. JASON HIRSCHHORN: Hola. H-E-L-L-O, cada personaje en una línea. Se ve muy bien. Vamos a correr de nuevo. Siempre va a comprobar para casos de esquina. ¿Qué es un buen caso para comprobar la esquina? ESTUDIANTE: Un número? JASON HIRSCHHORN: Varios. Así que voy a poner en el 1, y imprime 1. No es pedir cartas, por lo que parece que los números funcionen. Buen caso esquina para comprobar. ¿Cuál es otra buena esquina caso comprobar? ESTUDIANTE: Una cadena en blanco. JASON HIRSCHHORN: Hm? ESTUDIANTE: Al igual que una cadena vacía. JASON HIRSCHHORN: Cadena vacía. Así que no ponen en nada. Y lo que se imprime? ESTUDIANTE: Nada. JASON HIRSCHHORN: Nada. Parece que funciona. Usted podría tratar más casos de esquina, pero en general números, una de datos diferente es genial para probar, así no es nada. Nada, cero, los negativos son siempre grandes cosas para tratar de cosas que usted debe probar, cosas sin duda vamos a probar y verificar las 50 pondrá a prueba para. ¿Una pregunta sobre spell.c? OK, vamos a volver la cabeza. Tengo un programa más para ustedes para escribir. Se llama students.c. Este es un programa que pide al usuario cinco nombres, entonces elige al azar e imprime uno de los nombres. Este programa es un poco más complicado que los dos últimos que escribió, así que ¿por qué no nos tomamos cinco minutos para codificar en forma individual, y luego vamos a codificar como un grupo. Este programa también implica algunas cosas puede que no haya visto antes, así que si usted tiene una pregunta sobre cómo hacer Hago eso, levanten la mano. Voy a venir una y señalarles en la dirección correcta. Pero también estamos haciendo porque este será una buena manera de introducir algunos temas que son difíciles. Así funciona, ¿verdad? ESTUDIANTE: Sí. JASON HIRSCHHORN: Cada vez que usted da vuelta en un conjunto de problemas, hay muchas maneras de hacer , pero algunos son más elegante que otros. Vamos a bucear pulg # Include cs50.h. # Include stdio.h. void main int, las llaves. Dentro de las llaves, Tengo dos comentarios. El primero es, solicitar al usuario durante cinco nombres. La segunda es, elegir al azar e imprimir uno de los nombres. Así que vamos a hacer el primero, preguntar el usuario durante cinco nombres. ¿Quién le ha pedido al usuario durante cinco nombres y me puede decir cómo hacerlo? Sólo dos personas hicieron la primera parte. Tres personas que hicieron la primera parte. Cuatro, cinco. Tom, ¿cómo lo haces? ESTUDIANTE: Usted se declare una cadena y luego el nombre, el soporte de cinco. JASON HIRSCHHORN: String Nombre Bracket cinco. Entonces, ¿qué está haciendo esta línea, nombre de la cadena del soporte cinco? ESTUDIANTE: ¿Le declarar una matriz de cadenas. JASON HIRSCHHORN: Este es una matriz de cadenas. ¿Cuántas cadenas van para encajar aquí? ESTUDIANTE: Cinco. JASON HIRSCHHORN: Cinco. Excelente. Vamos a llamarlo nombres porque vamos a obtener múltiples. Aceptar, a continuación? ESTUDIANTE: ¿Y entonces usted tienen un ciclo for - JASON HIRSCHHORN: bucle For. ESTUDIANTE: - para i = 0. JASON HIRSCHHORN: for (int i = 0. ESTUDIANTE: Punto y coma. JASON HIRSCHHORN: Punto y coma. ESTUDIANTE: Yo menos de cinco. JASON HIRSCHHORN: I inferior a cinco. ESTUDIANTE: Punto y coma. JASON HIRSCHHORN: Punto y coma. ESTUDIANTE: i + +. JASON HIRSCHHORN: i + +. ESTUDIANTE: ¿Y entonces cerró paréntesis. Paréntesis cerrados,: JASON HIRSCHHORN y luego algunas llaves. Dentro de las llaves? ESTUDIANTE: ¿Y entonces printf. JASON HIRSCHHORN: Printf. ESTUDIANTE: Abrir paréntesis, nombre% d. JASON HIRSCHHORN: ¿Lo sientes? ESTUDIANTE: Nombre. JASON HIRSCHHORN: Nombre. ESTUDIANTE: ¿Y entonces el espacio, y luego% d. JASON HIRSCHHORN: Nombre, espacio,% d. ESTUDIANTE: ¿Y entonces / n, y después cerrar. JASON HIRSCHHORN: Así nombre, espacio, % D / n, paréntesis cerrado. ESTUDIANTE: Coma, i + 1. Lo siento. Presupuesto cerrado, y entonces coma, i +1. JASON HIRSCHHORN: Cerrado cita, coma, i 1. ESTUDIANTE: Sí. Y luego la siguiente línea - JASON HIRSCHHORN: i + 1. ESTUDIANTE: Sí. Y luego la siguiente diapositiva Se nombres ménsula. JASON HIRSCHHORN: Next line Se nombres ménsula. ESTUDIANTE: = consiguen cadena. JASON HIRSCHHORN: = Get - capital de G-E-T - cadena. Uy, lo siento. ESTUDIANTE: Abierto, cerrado paréntesis y luego - JASON HIRSCHHORN: Abierto, cerrado paren. ESTUDIANTE: Punto y coma. JASON HIRSCHHORN: Punto y coma. Aceptar, por lo que se inicializa la matriz de cadenas, nombres, y luego ir a través de un para el lazo, y cinco veces imprimir algunas pedirá al usuario y luego almacenar cinco cuerdas. ¿Alguien tiene alguna ajustes a esto? Tom, creo que todo el mundo está de acuerdo con usted. Se ve muy bien. Aceptar. ¿Por qué hiciste i 1, sin embargo? ESTUDIANTE: Quiero decir, no tengo ser, pero i 1 para que sea nombrar uno por nombrar cinco. De lo contrario, sería nombre cero para nombrar cuatro. JASON HIRSCHHORN: ¿Así que hizo i +1 porque de lo contrario tendría que imprimir cero a cuatro, porque así es como piensan los ordenadores, pero los seres humanos realmente no leer así. Esa es otra cosa te vas a encontrar. A veces, al imprimir algo para el usuario, usted querrá que sea un poco más bonito, y haciendo i +1 en este caso es un manera para que sea más bonita. También veo a cinco veces, el nombre de cadena es cinco, i es menor que cinco. Yo sé de dónde sacó los cinco. Lo tienes de decirme que cinco nombres. Pero si queremos hacer que el código de un poco más robusto, una cosa que podría hacer es aquí, en las afueras de int, podríamos hacer algo como esto, # Define, y que se podía hacer NOMBRES 5. Así que, básicamente, en la medida que escribo de capital N, el capital A, M mayúscula, mayúscula, de capital S, esa cadena, se reemplazará que con 5 en el código. ¿O vamos a llamarlo - vamos a llamarlo NÚMERO. Así que estoy definiendo todas las tapas NÚMERO sea 5. Así que ahora siempre tengo el número 5, que puede reemplazarlo con todo NÚMERO tapas. Y ahora, si quiero cambiar el número de nombres, todo lo que necesito hacer es esta línea, la línea de cuatro, en el que tengo # Define el número 5, que cambiar a 10, o cambiarlo a 4. Cuando el código se hace más largo, usted no está va a recordar todos los lugares que poner la cantidad de nombres que querías, y en Para que usted no pasa una, esto es una buena manera de hacerlo, para encontrar algo encima de la tapa y luego sólo tiene que utilizar esa frase en todas partes en todo el código. Marcus? ESTUDIANTE: ¿Eso es estilísticamente prefiere de definir globalmente un n constante? JASON HIRSCHHORN: Así es que estilísticamente preferidas que a nivel mundial definir una constante n? Así que estás diciendo que pudiste hacer, int number = 5? ESTUDIANTE: ¿Tienen las consonantes en C o no? JASON HIRSCHHORN: O const - a partes iguales. ¿Estás diciendo que sólo una variable global? ESTUDIANTE: Sí. JASON HIRSCHHORN: Así estilísticamente, no hay necesariamente un derecho respuesta, pero ambas cosas son mejores que simplemente lanzando estos aleatoria los números a través de su código. Los llamamos números mágicos. Cuando miro a su código o cuando nadie está leyendo a través de él, se no quieren sólo estos números aleatorios que no tienen sentido. Incluso el número 26, que generalmente es el número de letras en el alfabeto, es mejor definir ALFABETO encima de la tapa y guardar el número 26 en esa cadena, si eso tiene sentido. O sobre el problema de establecer uno, en lugar de - de nuevo, no hablamos de esto en el tiempo, pero en lugar de simplemente tirar en un 25 por todas partes o un 10, usted puede guardar el número 25 como cuarto o 10 como DIME, y eso hace que sea más fácil para los quien está leyendo a través de su código de entender por qué eligió ese número. Y también para que, si alguna vez quieres actualizar el código, que hace que sea un poco más robusto. ¿Sí? ESTUDIANTE: ¿Este código también va que esté disponible para nosotros después? JASON HIRSCHHORN: Todos estos códigos que hemos escrito juntos somos va a ser enviado por correo electrónico chicos y disponible. Sí. Así que pide al usuario durante cinco nombres. Elige al azar y de impresión uno de los nombres. ¿Quién hizo esta línea? Esta es la línea más difícil aquí. Lo siento, Tom. Has hecho un buen trabajo, pero esto es un poco más complicado. Marcus, adelante. ESTUDIANTE: Bueno en primer lugar, usted va a que incluir stdlib.h y time.h. JASON HIRSCHHORN: Así que estás diciendo en la parte superior, incluye dos bibliotecas más. ¿Quieres que me incluyo S-T-D-L-YO-B punto H, de la biblioteca estándar, y qué era el otro? ESTUDIANTE: Time.h. JASON HIRSCHHORN: # include time.h. Así que estos son dos bibliotecas más. Supongo que ahora vamos a estar usando funciones que se incluyen en estos dos, por lo que usted necesita incluirlos? ESTUDIANTE: Entonces, primero eres va a querer escribir srand. JASON HIRSCHHORN: Srand. ESTUDIANTE: (time (0) JASON HIRSCHHORN: Lo siento. Srand (time ( ESTUDIANTE: 0. JASON HIRSCHHORN: 0. ESTUDIANTE:)), punto y coma. JASON HIRSCHHORN: Otro paren cerrado? Punto y coma. Voy simplemente reemplazar el cero con NULL. Te va a hacer de la misma cosa, pero en general, verás NULL, que vamos a hablar de esto línea en un segundo. ESTUDIANTE: Estilísticamente mejor? JASON Hirschhorn: Generalmente, las personas derecho NULL, pero lo mismo. ESTUDIANTE: ¿Y entonces int nombre. JASON HIRSCHHORN: Nombre Int.. ESTUDIANTE: = JASON HIRSCHHORN: = ESTUDIANTE: Rand. JASON HIRSCHHORN: Rand. ESTUDIANTE: () JASON HIRSCHHORN: () ESTUDIANTE: número de módulo. JASON HIRSCHHORN: ¿Qué hay de módulo? El personaje? El carácter de porcentaje? ESTUDIANTE: carácter de porcentaje. NÚMERO Modulo que ha definido arriba. JASON HIRSCHHORN: NÚMERO Modulo. ESTUDIANTE: ¿Y entonces por punto y coma. JASON HIRSCHHORN: Punto y coma. ESTUDIANTE: ¿Y entonces nueva línea, printf. JASON HIRSCHHORN: Printf. ESTUDIANTE: ( JASON HIRSCHHORN: ( ESTUDIANTE: " JASON HIRSCHHORN: " ESTUDIANTE:% s / n JASON HIRSCHHORN:% s / n ESTUDIANTE: " JASON HIRSCHHORN:% s / n " ESTUDIANTE: Coma, nombres de espacios. JASON HIRSCHHORN: Space - ESTUDIANTE: Oh, supongo, lo que qué nos llamamos aquí? JASON HIRSCHHORN: Nosotros lo llamó nombres. ESTUDIANTE: Soporte Open, nombre. JASON HIRSCHHORN: Soporte Open, nombre. ESTUDIANTE: Soporte Cerrado. JASON HIRSCHHORN: Soporte Cerrado. ESTUDIANTE:) JASON HIRSCHHORN:) ESTUDIANTE: Punto y coma. JASON HIRSCHHORN: Punto y coma. OK, vamos a ahorrar. Hagamos de este código. Estudiantes. Vamos a ejecutar este código. Estudiantes. No. / Estudiante. . / Estudiantes. Nombre uno. Vamos a decir David. Nombra dos, RJ. Nombra tres, Rob. Nombra cuatro, Lucas. Nombra cinco, Joseph. Y luego imprime Joseph nuevo. Así que déjame correr de nuevo. Déjame hacer los mismos nombres. David, RJ, Rob, Lucas, José. Y me dio a David este momento. Así que hice lo mismo, pero se lo di me una cosa diferente, y eso es porque, por supuesto, que estamos pidiendo para un nombre aleatorio. Así que creo que, sobre la base de encima errante alrededor de la sala, que la mayoría de la gente probablemente tiene la primera parte de la derecha, la creación de la matriz y luego conseguir todos los nombres. Estoy hablando de las líneas 10 a la 16. Pero las líneas 18 a 21 son, probablemente, algunas cosas que no ha visto antes, así que vamos a ir a través de ellos. Esta línea, srand tiempo NULL es esencialmente - lo siento, vamos a saltar hacia abajo una línea, rand (). Eso te da un número al azar, un entero aleatorio. Y si se golpea hombre rand, que muchos de ustedes lo hizo - M-A-N espacio R-A-N-D - en la terminal de esta manera, M-A-N espacio R-A-N-D, pulse Enter. Se podría llegar a la manual y sería capaz de leer que el rand salidas de comando num bytes pseudoaleatorios después de la siembra el número aleatorio generador una vez. Así que esa es una descripción. Eso es lo que Rand no, da que un número aleatorio cuando se llama a esa función. Por desgracia, en realidad no es aleatoria porque si usted acaba de llamar al azar sin conseguir que parte de la semilla, algunos punto de partida, siempre elegirá la misma y que utiliza una fórmula para determinar la siguiente. Así que si usted llama rand, sólo va a le dará lo mismo. Será muy predecible. En realidad no será al azar. Así que lo que tenemos que hacer, por Marcus instrucciones a mí, eran rand semilla con otra cosa, que es lo que la función srand hace. Es semillas rand con algo un poco más aleatoria de la misma cosa, y él está sembrando con NULL tiempo, lo que es decir, sólo por convención, la corriente tiempo en segundos. Así que usted está asumiendo que todo el mundo no es va a ejecutar el código en la exacta mismo segundo, por lo que es una apuesta segura que NULL vez va a ser diferente cada vez que se ejecuta este código. Caja fuerte apuesta que así, srand sembrará rand con algo diferente cada vez. Así que, por convención, cuando hacemos que desee un de números aleatorios, escribimos esta línea, srand NULL tiempo, para darnos una gran semilla aleatoria más, y luego se corre rand, lo que nos da un número aleatorio. ¿Sí? ESTUDIANTE: ¿Se puede decir lo que quiere decir con semilla? JASON HIRSCHHORN: Simiente como en - así rand va a recoger un número y que va a utilizar algún fórmula para llegar allí. Así que va a empezar con algo y luego convertirlo en algo basado fuera de esa fórmula. Si siempre le dan la misma cosa, que siempre va a convertir en el lo mismo. Así que lo primero que darle es la semilla. ¿Así que quieres darle algo diferente para comenzar con, y por lo lo convertirá en algo diferente. Y, por último, la línea 20, este% se llama la módulo, y que es confuso. Eso es algo que es un poco diferente aquí que en realidad no tener en bienes matemáticas vida. Pero, en esencia, cuando se toma un gigante número y se divide en C, lo que que ocurre con el resto? ESTUDIANTE: No se trunca. JASON HIRSCHHORN: Se queda truncada. Así que 20 dividido por 3 es qué? ¿Qué quiere decir volver a usted, 20 dividido por 3. Lo sentimos, 10 dividido por 3. ¿Qué quiere regresar a ustedes? ESTUDIANTE: [inaudible]. JASON HIRSCHHORN: 10 dividido por 3 sólo devuelve 3, no 3 resto 1. Entonces, ¿qué 10 módulo 3 vuelve es sólo el resto, 1. Así que si usted quería saber lo que 10 dividido por 3 en realidad era, que le do 10 dividido por 3, se obtendría el 3, y luego que harías 10 módulo 3, y usted conseguiría un 1. Así que te darías cuenta de que 10 dividido por 3 es 3, el resto 1. Y en esta línea, rand podría ser cualquier número entero, esencialmente. Así módulo está diciendo, dividirlo por número, que es en este caso 5. Y si alguna vez divide por un número, el número entero siempre tiene que ser inferior a ese número. Así que si estás dividiendo por un número de 5, el resto es siempre va a ser cero a cuatro. Así es como funciona la matemática. Así, un gran número moduloed por una más pequeña número siempre devolverá resto y siempre volver algún número que es menor que el número que dividido por. ¿Alguien tiene alguna pregunta acerca de módulo, ya que le será muy, muy práctico, así que quiero asegurarme todo el mundo lo entiende? Genial. Y vimos que este programa funcionó. Aceptar, sigamos. Así que la próxima, vamos a entrar en funciones, y vamos a ir por el resto de esta materia bastante rápidamente porque quiero llegar a argumentos de la línea de comandos. Así funciones son esencialmente, Como hemos visto, las cajas negras. Ellos toman las cosas en los llamados parámetros, hacen algo a ellos, ya sea cambiarlas o crear algunos efectos secundarios, y, por último, se escupen algo fuera, que es el valor de retorno. ¿Puede alguien darme una razón qué usaríamos funciones? ¿Alguien? Una razón por la que usaríamos funciones? ¿Alguien? Vi a dos manos. ¿Cuál es una buena razón? Marcus? ESTUDIANTE: Si tiene que llamar a la misma trozo de código varias veces. JASON HIRSCHHORN: OK, si necesita para llamar a la misma parte de codificar varias veces. Jeff, ¿tuvo una razón diferente? ESTUDIANTE: Sólo para que puede codificar menos. JASON HIRSCHHORN: Puede codificar menos. Derecha. Si quieres hacer algo mucho - en el código anterior, que podría tener cadena get escrito cinco veces, pero una para el lazo hace que se vea más bonito y más usted tiene que escribir menos código. Las funciones son una idea similar. Si yo quiero hacer lo mismo mucho, moverlo a una función y llamar a ese funcionar cada vez. Eso hará que la cosa para usted. Esa es una gran razón para utilizar las funciones. Así la anatomía de una función. Una función, generalmente, tener este aspecto. Va a empezar con el tipo de cambio, entonces obtendrá el nombre. Tomará los argumentos, de lo contrario conocido como los parámetros, y en el interior esas llaves, se le escribir el código. Hemos visto una función mucho. Eso es principal. Aquí está principal superpuesta a que la anatomía que tenía antes. ¿Qué int aquí significa? ¿Qué significa int? Cuando escribo int main (void). ESTUDIANTE: Tipo de cambio? JASON HIRSCHHORN: ¿Lo sientes? ESTUDIANTE: El tipo de retorno. JASON HIRSCHHORN: Int es el Tipo de retorno, exactamente correcto. Principal devuelve un int. ¿Cuál es principal? ESTUDIANTE: Nombre de la función. JASON HIRSCHHORN: Main es la el nombre de la función. Exactamente derecha. Y anular? ¿Qué es el vacío dentro de los paréntesis? ESTUDIANTE: No se necesita cualquier valor externo. JASON HIRSCHHORN: Así vacío - derecha. Dentro de los paréntesis, ponemos el parámetros o los argumentos de los función toma, lo que pasa dentro del cuadro negro. Cuando se escribe sin efecto, usted está diciendo esto no quita nada pulg Void main Así int significa principales no dar nada pulg Dentro de las llaves, tenemos algunas código, y luego vemos al final devolver cero. ¿Qué quiere devolver cero significa eso? Bueno, hemos hablado de tipo de retorno. Principal tiene que devolver un int. Eso es lo que hace esta línea. Devuelve un entero, cero. Por supuesto, no hemos visto que una gran cantidad debido a que en la programación que hacemos con las máquinas que hacemos y los compiladores que usamos hoy en día, no necesitan esa línea. Principal es lo suficientemente especial que sabe cuando se llega al final del principal, justo devolver cero si todo ha ido bien. De hecho, si algo no va bien, principal a menudo devolver un diferente número que significa que algo que salió mal con su programa. Así que en general, cuando vea el código, no escriben volver a cero, pero es bueno saber que está sucediendo detrás de la escenas, porque cada vez que escribes otro tipo de función, usted va a necesitar incluir una línea de retorno. Si usted está diciendo que voy a devolver un int, hay que escribir regresar algo. Si usted dice sin efecto hasta aquí en el comenzando, void main vacío, para ejemplo, entonces no está devolviendo nada - vacío significa nada - por lo que no es necesario que la línea de retorno. Pero alguna vez escribir algo que no es efecto por el tipo de retorno, necesita una línea que dice volver y usted que poner algo allí que coincide con el tipo. ¿Una pregunta sobre eso? Sweet. Ámbito de aplicación. Esto es algo que hemos tocado también. Todas las variables, como se sabe, tiene una cierto alcance, y eso es básicamente hablando de que la variable pueden o no ser referenciado. Y me gusta decir lo que pasa entre llaves estancias dentro de las llaves. Así por ejemplo, si nos fijamos en el código, estamos definiendo una variable global fuera del principal, int a, aquí en la parte superior. Estamos llamando a otro int a principal dentro. Tenemos algunos apoyos más rizado, y estamos llamando a otro int a. Tenemos tres A en el código. Estos no son la misma cosa. He creado tres variables distintas. Entonces dentro de estas rizado interior llaves, digo a = 4. Que una es que hablando, la primero, el segundo, o el tercero? ESTUDIANTE: El tercero. JASON HIRSCHHORN: Está hablando sobre la tercera. Todos aquellos de una realidad puede ser hablado en este particular, ejemplo, porque su alcance todo va en estas llaves más íntimos. Sin embargo, al llamar a las cosas de la misma nombre, hay algo llamado la clandestinidad. Así que sólo se ocupan de o arreglar o usar el más variable reciente, o el uno más cercano a usted. Así que aquí dentro, esta es la más cercana de un tercero a esa línea, a = 4, por lo que afecta a la tercera uno. Y la última línea, a = 2, que es un que hablar de la primera, segunda, o un tercero? ESTUDIANTE: Segundo. JASON HIRSCHHORN: Está hablando sobre el segundo a. Por supuesto, la tercera una es más cercana a en el código, pero el tercero un no existe fuera esas llaves. Una vez que llegue a ese rizado cerrado corsé, es como se ha ido, esencialmente. Así que los dos únicos que le queda son los primero dos, y por supuesto, ahora que es más cercana a la segunda. Así que eso es una buena cosa para recordar acerca de su alcance. Por ejemplo, estoy seguro que le ha surgido esto en un bucle do while. Si inicializa la variable dentro el bucle do while y luego intenta acceder a él fuera, probablemente ¿Tienes algo de advertencia como, esto no existe variable. Esto se debe a la idea de su alcance, que sólo existen las cosas dentro de esas llaves. Las llaves son como un abrazo gigante que usted está dando a su código, es otra manera de pensar en ello. Así que esta es otra función, algo para ustedes en el código, hellofunction.c. Vamos a pasar que, por ahora, pero esto es algo que me animo a practicar por su cuenta. Escriba un programa en el que las llamadas principales otra función que imprime un saludo para el usuario. Se trata de tomar en esencia hola mundo y la abstracción que printf en otra función. Pero no vamos a hacer eso ahora porque no tenemos tanto tiempo izquierda como me hubiera gustado. Así declaración de la función. Hemos visto esto antes también. Si desea escribir otra función, es necesario dejar que la computadora sabe y principal sabe que existe. Así que lo que hacemos es por encima de principal, se escribe el tipo de cambio, el nombre, y el parámetros y, a continuación, por debajo de principal, aquí abajo, en realidad nos copiamos esa línea y luego escribir el código real. Así de esta manera, si se llama a la función en principal en la parte superior, el principal sabe que hola existe, por ejemplo, si yo fuera llamar hola, y luego se ve a la implementación de abajo. ¿Qué sucede si no se incluye este línea encima de la tapa, anulará hola (void)? Si no incluyo esta línea y las llamadas principales hola, soy va a conseguir un error. Voy a conseguir un error porque el compilador no sabe que existe esta cosa. Esto es similar a la razón por la que no # include cs50.h. Lo que esencialmente cs50.h está haciendo está poniendo cuerdas llegar hasta allí. Es poner get int allí. Es poner todos aquellos función prototipos antes de principal, de modo que cuando usted los llama en principal, principal sabe que estas cosas existen. Eso es lo que esos archivos. H hacen. Y por lo que si usted va a hacer su propio función, tienes que asegurarse de pones ese prototipo hasta allí. ¿Una pregunta sobre esto hasta ahora? Argumentos de la línea de comandos. Esto es lo que vamos a terminar , y luego esperamos verte apretar en algún conjunto de procesadores. No sé si vamos a ser capaces de exprimir en que por falta de tiempo, pero con ustedes que están aquí, y si usted chicos quieren decir que después de un rato, nos puede ir fuera. Pero vamos a terminar con argumentos de la línea de comandos durante los últimos 15 minutos. Despertamos, Michael? Estás despierto? Bueno. No sé si usted duerme con los ojos cerrados. Sería difícil. Argumentos de la línea de comandos. Son una forma de pasar información en un programa. Con el tiempo, que encontraremos otros. Pero, en esencia, que vamos a dejar de escribir int main (void) si queremos tomar algunos argumentos de la línea de comandos. Vamos a escribir esta cosa llamada int main (int argc, argv cadena, entre paréntesis. Eso es confuso. Eso es un montón de cartas que no están en Inglés humano, por lo que vamos a desempaquetar los archivos en estos momentos. Argc significa recuento de argumentos - y otra vez, todo esto se estará disponible en línea - y ese es el número de argumentos. Argv es sinónimo de argumento de vectores y esos son los mismos argumentos. Es una matriz de cadenas. De hecho, hemos visto una gran variedad de las cuerdas antes de hoy. Hemos creado una en el último programa codificamos. Así que aquí está un ejemplo. Escribo. / Sección CS50 ohai en mi línea de comandos. Argc en este caso es igual a 3. Argv soporte 0 es ohai, soporte argv 1 se CS50, argv soporte 2 es la sección. Una vez más, argc es el número de argumentos, y para tropezar un poco poco, siempre contamos el nombre de la actuar como el primer argumento. Así pues, en este caso, hay tres argumentos, el nombre de la función y luego los dos que he escrito pulg A continuación, vamos a salvar a los mismos argumentos argv. Y de nuevo, tal y como vimos antes, lo hicimos esto en el último programa que codifica. Puede moverse a través de la matriz de argv y obtener esas cadenas. Eso es básicamente lo que hicimos en Al final de nuestro último programa. Elegimos un nombre al azar y luego fuimos a soporte de nombres de lo que sea y impresa la cadena ubicado allí. En la parte superior de apenas el uno array, porque propias cadenas son arrays, como hablado, puede tener matrices de matrices, que es esencialmente lo que es argv. Una manera de pensar este es filas y columnas. Puedo dibujar eso en este momento. Así argv - eso no es borrado. Vamos a dibujar bajo ohai. Así que si yo escribí en la sección CS50 ohai, Voy a truncar sección para este ejemplo. Pero, en esencia, mi multidimensional array, CS50 ohai, vamos a hacer secta. Así que aquí, puedo acceder - si me doy argv un número - esto está mal. ¿Qué hay de malo en este diagrama? ESTUDIANTE: Comienza en cero. JASON HIRSCHHORN: debe comenzar con cero. Probablemente debería también girar, pero ya que yo ya he dibujado en, estoy va a dejarlo ahí por ahora. Pero comienza en cero. Eso es correcto. Lo siento si esto es pequeño. Pueden ustedes especie de ver? Así que si lo hago argv 0, voy a obtener todos ohai. Si lo hago argv 1, voy a conseguir todos CS50. Si lo hago argv 2, voy a conseguir todos los sect. Pero ahora, como hemos dicho, las cadenas son propias matrices. Así que lo que puedo hacer es que puedo tratar esta como una matriz multidimensional, y yo puede hacer algo en la línea de argv 0, 0, que me da igual el carácter 0. Argv 0, 1, que me da igual h. Argv 1, 3, que me da igual 0 este aquí en CS50. Así que debido a las propias cadenas son arreglos, estamos poniendo que en otro array. Ahora tenemos matriz de matrices, y puede indexar en nuestra primera matriz y entonces índice en nuestra segunda matriz. Y como era de esperar, lo hacemos con solo colocar los dos - hacemos los corchetes sólo justo al lado de uno al otro. Así, en este ejemplo, argv 1 es CS50 y argv 1, 2, como hemos dicho, es sólo 5. ¿Alguien tiene alguna pregunta acerca de matrices multidimensionales? Ustedes están haciendo genial. Sweet. Así que tenemos otro programa aquí, y esta es la última cosa que estamos va a hacer ahora mismo. Así que quiero que escribas un programa que toma el nombre completo de un usuario, dos y sólo dos argumentos de línea de comandos y, por último, imprimir un saludo a la usuario que incluya su nombre de pila. Entonces, ¿por qué no te tomas tres o cuatro minutos para hacer esto, y luego vamos a ir sobre ella como un grupo, y entonces nosotros terminaremos? Y de nuevo, aquí, cuando nosotros decimos tomar un el nombre completo del usuario y por la descripción de este problema, que debería ser de comandos argumentos de la línea, no usar cuerdas get. Sí, Marcus? ESTUDIANTE: dos comandos Así que cuando dices argumentos de la línea, es que, además de . el / run, o - JASON HIRSCHHORN: Buena pregunta. Hacer, incluyendo el. / Run, tres argumentos de la línea de comandos. O como el. / Personalizado, en este caso, porque esa es la nombre de este archivo. Así argc sería tres. Pero quiero sólo dos argumentos dado al programa. Debo precisar que. Voy a hacer que el cambio antes de publicar ellos y enviarlos a ustedes. ESTUDIANTE: ¿Qué pasa si usted tener un segundo nombre? JASON HIRSCHHORN: Si usted tiene un medio nombre, estás fuera de suerte. Lo siento. O si sólo vas por Shakira, también estás de suerte. ¿Sí? ESTUDIANTE: Entonces, cuando la gente no tiene cs50.h, Cómo definen argv argv estrellas como char? ¿O es que todavía se llama argv cuerda? JASON HIRSCHHORN: Si. Así cadena, de nuevo, la máscara sobre lo exactamente que está sucediendo allí. Eso va a ser desempaquetado puede que el miércoles, pero pronto. Es como las ruedas de entrenamiento. Porque en esencia, es la misma cosa. Así que echemos un minuto más para el programa esto, y luego vamos a ir sobre como un grupo y, a continuación, como he dicho, envuelve para arriba. Y creo que son todavía dulces extra, por lo que ustedes deben tomar con suerte eso, o por favor tome eso. Lo siento si usted todavía está escribiendo, pero quiero bucear y nos puede terminar juntos. Así que he escrito en, # include cs50.h, # include stdio.h. int main (void), corchete, rizado corsé, interior de tres líneas de pseudocódigo, toma el nombre completo de un usuario, dos y sólo dos de línea de comandos argumentos, imprime un saludo a la usuario que incluya su nombre de pila. Así que la primera uno, tomar el nombre completo de un usuario. ¿Quién puede ayudarme a tomar el nombre completo de un usuario? ¿Cómo puedo hacer esa parte? ¿Sabía que ustedes hacen esa primera parte? Toma el nombre completo de un usuario. Pues bien, para que una línea de comandos argumento, ¿qué debo escribir? ¿Qué debo cambiar en mi declaración de la función? ESTUDIANTE: Usted no quiere que sea anulada más. JASON HIRSCHHORN: Exactamente. Yo no quiero que sea anulada. ¿Qué es lo que quiero que sea? ESTUDIANTE: Int argc. JASON HIRSCHHORN: Int argc. ESTUDIANTE: argv String. JASON HIRSCHHORN: argv String. ESTUDIANTE: Bracket, soporte. JASON HIRSCHHORN: Bracket, soporte. Eso es exactamente correcto, y eso es realmente la forma en que voy a conseguir el nombre completo de un usuario. Van a ponerlo ahí. Así que uno está hecho. Así que ahora quiero dos y sólo dos argumentos de la línea de comandos. Así que Noé, lo que es una manera de que pueda comprobar el número de comandos argumentos de la línea que tienen? ESTUDIANTE: Usted hace una sentencia if. JASON HIRSCHHORN: Si declaración, exactamente. ¿Qué quiero como la condición? ESTUDIANTE: Si argc mayor que 3. JASON HIRSCHHORN: Si argc es mayor que 3. Si argc mayor que 3, ¿qué hago? ESTUDIANTE: Vuelta 1. JASON HIRSCHHORN: Vuelta 1. ¿Será que asegurarme que tengo dos y sólo dos? ESTUDIANTE: No. Si argc es mayor que 3 y menos de 2. JASON HIRSCHHORN: Si argc es mayor de 3 y argc es menor que 2. ¿Cuál es una manera de que puedo escribir esto en tan sólo una línea, o sin el uso que y el operador booleano? ESTUDIANTE: No es igual a 2. JASON HIRSCHHORN: Si argc no es igual a 2. Exactamente. Así que si argc no es igual a 2, que me va a dar a este programa, personalizado, cuando lo ejecuto, y eso me dará el número de argumentos de la línea de comandos? ¿Cuántas voy a comprobar? Lo siento. Déjeme reformular eso. Si argc = 2, ¿cuántas cosas hizo el usuario escribe en la línea? ESTUDIANTE: Primero. JASON HIRSCHHORN: Sólo uno. Así que antes, tenías razón, Noah. ¿Qué es lo que realmente necesito poner allí? ESTUDIANTE: Eso es igual a 3. JASON HIRSCHHORN: Argc no es igual 3. Quiero ser igual a 3 porque quiero personalizada además de los otros dos. Así que si argc no es igual a 3, devuelve 1. ¿Por qué dijiste return 1? ESTUDIANTE: Debido a que significa que está mal. JASON HIRSCHHORN: Eso quiere decir que está mal, ¿Y qué se va a hacer? ESTUDIANTE: Vuelva a preguntar al usuario. JASON HIRSCHHORN: Se va a dejar de fumar el programa, por lo que tendrá que ejecutar de nuevo, pero no tenemos nada aquí para pedir por ellos de nuevo. Yo no pedí eso. Así que eso es exactamente correcto. Regresar 1 sólo se cierra el programa. Grande. E imprimir un saludo para el usuario que incluye su nombre de pila. ¿Cómo puedo hacer eso? Anna? ESTUDIANTE: Printf. JASON HIRSCHHORN: Printf. ESTUDIANTE: (" JASON HIRSCHHORN: ( ESTUDIANTE: "hola JASON HIRSCHHORN: "hola ESTUDIANTE:% s JASON HIRSCHHORN:% s ESTUDIANTE: / n JASON HIRSCHHORN: / n ESTUDIANTE: ", JASON HIRSCHHORN: ", ESTUDIANTE: argv JASON HIRSCHHORN: ¿Lo sientes? ESTUDIANTE: argv JASON HIRSCHHORN: argv ESTUDIANTE: Corchetes: 1. JASON HIRSCHHORN: Los corchetes? ESTUDIANTE: 1. JASON HIRSCHHORN: 1. ESTUDIANTE: Y) y coma. JASON HIRSCHHORN:) punto y coma. Corramos esto. Hacer personalizado. . / Personalizada. Se acaba de dejar. ¿Por qué dejar de fumar? ESTUDIANTE: Usted no puso ningún argumento. JASON HIRSCHHORN: No lo hice poner ningún argumento pulg Se ve muy bien. Ustedes lo clavó. Así que de nuevo, usted entró en argv y usted comprobado en el argc comenzando. Esos son dos importantes cosas que recordar. Así que en nuestros dos últimos minutos antes de que dejar, no vamos a llegar al conjunto de procesadores de dos, pero como he dicho, si quiere quedarse después durante 10 minutos, me gustaría que feliz de ir de nuevo con ustedes la lógica para estos conjuntos de problemas. Teníamos mucho que cubrir hoy así que no llegué a ellos. En general, me gusta incluir que en el extremo. Así que si quieres quedarte, quedarse por 10 minutos. Haremos eso. Entonces, como dije al principio, pset cero y uno, conseguiremos que retroalimentación con usted lo pronto como sea posible. El objetivo es conseguir un conjunto de procesadores de retroalimentación, la parte de comentarios, antes pset dos es debido. Así que si usted hizo algunos errores o estilísticamente, las cosas podrían ser mejores, usted tiene esa información para que no va a hacer las mismas cosas en el conjunto de procesadores de dos. Y luego, en el futuro, usted conseguirá todo de su regeneración pset y comentarios de vuelta antes de la próxima es debido. Por último, si podía poner en otro enchufe para la retroalimentación. Esta es su primera sección. Fue mi primera sección la enseñanza de este año. Ir allí. Escribe cosas, buenas y malas, y voy a usarlo para hacer sección mejor la próxima vez. Y por último, de nuevo, si es necesario nada, que me haga saber. Estoy más que feliz de ayudar a ustedes. Si lo que desea es caramelo, me tendrá dulces extra. Estoy feliz de llevarlo a usted. Este va a ser un curso increíble. Este es uno de, si no es mi favorito Por supuesto, yo he tomado en toda mi vida, y yo espero que sea que maravilloso para ti. Así que lo que quiero hacer todo en mi poder para hacerlo que impresionante para usted. Voy a enviar un correo electrónico si usted está en mi sección o Noah, y va a tratar de programar con cada uno de ustedes un tiempo para comprobar en el próximo par de semanas para que pueda obtener un sentido de lo que su fondo es CS, y también me ayudará a adaptar para presentarlas secciones para satisfacer mejor sus necesidades. Así que eso es lo que tengo alineados. Una vez más, nos vemos fuera si quieres estar allí. Esto fue dos semanas sección. Gracias chicos tanto.