Section 1: Less Comfortable

Section 1: Less Comfortable

>> LUCAS FREITAS: OK, supongoahora estamos en vivo. Bienvenido a CS50 supersección. Estamos menos cómodo. Mi nombre es Lucas Freitas. Soy uno CS50 Head TFS. Se trata de Lauren. >> LAUREN CARVALHO: Hola, soy Lauren. También estoy TF Jefe de CS50. >> LUCAS FREITAS: Hoy sólo vamospara dar una visión general de lo que todo lo chicos han aprendido en la semana uno, con suertedar a ustedes un buen sentido a lo que usted debe saberpara el problema de establecer una. >> Sólo un par de anuncios. En primer lugar, las horas de oficina. Las horas de oficina se están produciendo desde el lunesa jueves en diferentes casas en Annenberg cada día. Son un recurso muy bueno para ustedchicos por venir y hacer preguntas, y hablar con TFS, e incluso el intercambioideas con otros estudiantes. Así que asegúrese de utilizar ese recursoen su favor. >> La segunda cosa es laCS50 Appliance. Para el último [inaudible] ustedes no tenían que realmentetener un aparato. Acabas de hacerlo todo ensu ordenador personal. Sin embargo, para este problema, que en realidad tienentener una máquina virtual, así que Asegúrese de descargar la CS50Appliance y configurarlo. >> Y la tercera cosa es que asegúrese deiniciar el conjunto de problemas ASAP sólo porque es mucho más fácil de encontrarayudar cuando usted está en el al comienzo de la semana. Debido a que la gente tiende a esperar hasta que elúltimo segundo para iniciar el conjunto de problemas, y luego vas a las horas de oficina,y hay un montón de gente. Donde si vas el lunes, vaspara ver que se puede hablar con TFS casi toda la noche,Y van más de encantado de ayudarle. >> LAUREN CARVALHO: ¿Puedo dejar depor sólo un segundo? Todo el mundo ha sido capaz de descargarAppliance CS50? Han tratado a la gente? >> LUCAS FREITAS: Para descargar, por elmanera, puede obtener instrucciones al cs50.net/appliance. >> LAUREN CARVALHO: Así es. Y lo hace tomar un poco de tiempo para nuestraadministradores de sistemas para obtener una licencia clave, por lo que inscribirse en elprimera prueba gratuita. De esa manera usted tendrá durante 30 días,y luego esperar a que su clave de licencia que debe darleque durante un año usted. >> LUCAS FREITAS: En primer lugar,vamos a hablar un poco sobre el CS50 Appliance. El CS50 Appliance es en realidad una virtualesmáquina que se va a ejecutar en su propio ordenador, que esbásicamente la ejecución de otro equipo dentro de su propio ordenador. Lo cual es muy bueno. Y en realidad se utiliza en todas partes. Las personas que a tecnología sabrían queesto se utiliza todo el tiempo. usted? Puede tener varios ordenadoresen un solo dispositivo. >> Vamos a echar un vistazo en realidaden el aparato. Cuando usted va al aparato después deregistrarse, usted va a tener que ponga su nombre y entre en Harvardpor lo que podemos llegar a todos ustedes registrado. Usted va a ver, básicamente, sólo unfondos de escritorio, y luego Home y Papelera, y luego estos pequeños iconos. Estos tres iconos en realidad son los máscosas importantes que usted puede tener en su aparato. >> La primera es gedit, que es un textoeditor, como el Bloc de notas o como cualquier tipo de editor de texto. Es algo que usamos para escribircódigo y luego hacer cosas con él. >> La segunda cosa que nostenemos aquí es Chrome. Así que si usted necesita utilizar el Interneten el aparato, eso es lo que puede utilizar. >> Y la tercera cosa es el terminal,que en realidad es muy dulce. La gente por lo general son una especie de miedo deel terminal porque es este mismo aplicación antigua en la que sesólo básicamente escribir todo con su teclado. No hay una gran cantidad de interaccióncon el ratón. Pero en realidad el terminalhace cosas muy buenas. >> En primer lugar, vamos a ir a través dealgunos comandos que puede utilizar en el terminal. >> LAUREN CARVALHO Y no dude en pasarcon nosotros si tiene alguna pregunta. >> LUCAS FREITAS: Si. Así que el primer comando que tenemospara el terminal es ls. ls básicamente significa lista de todo, todolos archivos y todos los directores, que tengo en el lugar que estoy. Así que si lo hago ls aquí, yo voy a verque tengo algunos directorios. Tengo el escritorio, las descargas,los registros y los vhosts. Esos son en azul, ya queson todos los directorios. >> Entonces usted tiene algunos otros archivos. Tiene como hola y hello.c, queson sólo archivos, y están en diferentes colores. Así que este es un comando muy importante al igualse puede ver cuáles son los archivos y directorios que usted tieneen el directorio que usted está en el terminal. Cuando vea jharvard @ aparato yentonces el pequeño símbolo de allí, el tilde, eso sólo significa que esa es ladirectorio que usted está en este momento. >> LAUREN CARVALHO: Por tanto teclear ls es casicomo hacer clic en la carpeta que aparece justo ahí, en la Muestraque todos los contenidos que son dentro de esa carpeta. >> AUDIENCIA: ¿Hay textodespués de la hola.c? >> LAUREN CARVALHO: Oh, no puedesver eso, porque es azul. >> LUCAS FREITAS: Diceregistros y con dominios virtuales. >> LAUREN CARVALHO: Esos sonsólo otras carpetas. Lo siento, es muy difícil de ver. Tal vez si apagamos las luces? Colton, ¿quieres probar yencontrar el interruptor de la luz? Lo siento por eso. Yo no pienso en ello. >> LUCAS FREITAS: Pero es básicamente - sí, si pudiera - >> LAUREN CARVALHO: Zoom en la pantalla. >> LUCAS FREITAS: no lo hagotienen esa característica. >> LAUREN CARVALHO: [inaudible]. Aceptar. Bueno, no hay más que un montón de los recursos naturalesla luz en esta habitación. >> LUCAS FREITAS: Vamos a suponer quehay otros dos directorios allí. >> LAUREN CARVALHO: Sólo tener con nosotros. Esta es la única parte que usted va ase busca en la terminal. >> LUCAS FREITAS: El siguiente comando esbásicamente, tal vez usted quiere organizar sus archivos - por ejemplo, todos los archivos de C en unadirectorio, pero usted no tiene un directorio sólo para C presenta todavía. Es, básicamente, puede crear un directorioutilizando el terminal, así, que es lo mismo que hacer clic derechoy diciendo en Nueva carpeta. El comando se crea directorio, quees mkdir, por lo que, básicamente, "hacer" y "Directorio". >> Y entonces usted puede poner elnombre del directorio. Digamos que yo quería ser llamado,Yo no sé, digamos pset1 Doing esto, me acaba de crear un directorio. Vamos a comprobar que está allí. Así que si lo hago ls, ahora veo los registros, yentonces pset1, y luego vhosts. Así que tengo el nuevo directorio existe. >> Y luego, después de tener un nuevo directorio,tal vez usted quiere navegar en ella, por lo que el siguiente comando este cd,que, básicamente, sólo significa ir a un directorio específico. Así que si quiero ir a pset1,Yo sólo puedo hacer pset1 cd. >> LAUREN CARVALHO: cd representa el cambiodirectorio, [inaudible] capaz de recordar eso. >> LUCAS FREITAS Y ahora se ve queen lugar de sólo tener jharvard aparato, he jharvard aparato,y luego pset1, porque está mostrando conmigo donde yo estoy en este equipo. >> Ahora si quiero volver a ladirectorio que era antes de esta, me puede hacer un punto punto cd, que sólo significa iral directorio que lo que era antes, como el padre de estadirectorio, básicamente. Y ahora veo que estoyde nuevo a jharvard. >> La siguiente cosa que yo puedo hacerloes rm, que es eliminar un archivo. Por ejemplo, primero vamos a hacer lspara ver lo que tengo aquí. Tengo hola y hello.c. Digamos que quiero eliminarlos. Yo puedo hacer hola rm. Se va a decir "eliminar archivo regularhola? "Y yo digo" sí. "Y ahora, si me hacer ls, veo que se trata deNo hay más. >> Si trato de usar rm para un directorio,sin embargo, no va dejar de hacer nada. Se va a decir, oye,no se puede eliminar un directorio. Así que tenemos esta otra vienen llamado rmdir,que simplemente significa básicamente eliminar el directorio. Puedo, por ejemplo, eliminar pset1. Y si lo hago ls, no lo hagotener más. >> ¿Una pregunta sobre esto? No? ¿Sí? >> AUDIENCIA: ¿Es importante que dejeun espacio después - siempre que comience a escribir algo en? >> LUCAS FREITAS: Si. Si lo hago como el CD y el directorio,Tengo que poner un espacio. ¿Qué espacio estás hablando? >> LAUREN CARVALHO: El espacio entrecd y [inaudible]. >> LUCAS FREITAS: Sí, usted tendrá queponer los espacios porque cd es la comando, y luego la siguiente cadena queque tipo es básicamente el directorio. Así que es como un argumento. ¿Sí? >> AUDIENCIA: Cuando usted enumera, todos aquellosson directorios diferentes, ¿no? >> LUCAS FREITAS: Sí,están en el directorio. >> AUDIENCIA: ¿Cuál es la diferenciaentre los directorios? >> LUCAS FREITAS: Son simplementediferentes carpetas. Directorio es una carpetaen su ordenador. >> AUDIENCIA: Abrir carpeta. >> LUCAS FREITAS: Sí, essólo una carpeta abierta. >> LAUREN CARVALHO: Por aquí, lasque están en azul son reales directorios que usted puede conseguir en ya continuación, ver un montón de cosas que son dentro de ella, lo cual es lamentableporque no se puede leer la realidad los de color azul. Y los que están en blanco son sólo archivosque están dentro del directorio actual. >> LUCAS FREITAS: So directoriosson carpetas. Los otros son archivos. >> AUDIENCIA: ¿Cuál es el comandopara restablecerlo o para desactivarla? LUCAS FREITAS: Para borrar? LAUREN CARVALHO: Para borrar? LUCAS FREITAS: Creo queque es "claro". Sí. Entonces sólo tiene que teclear claro sila pantalla es demasiado desordenado. ¿Alguna otra pregunta? Y aprenderás un montón de otrascomandos de manera natural durante el semestre porque son muy útiles. >> Así que ahora vamos a hablar de la compilación. Hablamos de pseudocódigo ycódigo fuente y el código objeto. Y hay una gran cantidad de códigos, y tal vezustedes están confundidos acerca de eso. Vamos a hablar un poco sobre lo queque sucede cuando estás escribiendo un programa, y compilarlo, y se convierte enun archivo ejecutable. Esas son todas las palabras que ustedesprobablemente ha escuchado, y tal vez usted no está muy seguro de lo que está pasando. >> Digamos, por ejemplo, que quieroescribir un programa que dice "hola". La lo primero que viene a tu mente esque tipo de trata de pensar en cómo eres va a hacer eso en tu mente, yseguro que está pensando en Inglés o algún otro idioma, como naturaleslenguaje, probablemente. Y entonces piensas, bueno, si quiero,por ejemplo, escribir un programa que dice "hola", me gustaría empezar un programa,Voy a imprimir hola y, a continuación, lo haré salir del programa. Este es pseudocódigo. Esto es, básicamente, sólo estás tratando dellegar a una secuencia de eventos que vas a hacer para sercapaz de escribir un programa. >> Entonces usted tiene el código fuente, yel código fuente no tiene que estar específicamente en C. Estamos hablandosobre el código fuente en C, porque eso es la lengua que estamos aprendiendo, pero por supuestocódigo puede ser casi cualquier lenguaje de programación que usted tiene. Más adelante en el semestre, vaspara aprender otros idiomas. Ese es también el código fuente. >> Por ejemplo, aquí, esta es mi fuentecódigo, y luego estoy incluyendo un biblioteca, y entonces empiezoprincipal, y luego imprimo. Y Laura se va a hablar un pocopoco acerca de todo esto. Así que este es el código fuente. >> ¿Y cuál es el código de objeto? El objeto es un montón de cerosy otros, básicamente. Lo que pasa es que inicialmente tienepseudocódigo, que es todo en Inglés. Y quiero decir, usted lo entiende. Probablemente tus amigos entienden, y la mayoría de la gente lo haría entender la idea. Pero las computadoras son muy tonto, yno entienden Inglés, por lo que han traducir eso en algo,generalmente traducido en algunos lenguaje de programación. >> Y se puede pensar en una programaciónel lenguaje como algo así como un lenguaje que informe a su equipo cómode hablar y de entender. Básicamente, se está escribiendo algo enun lenguaje que ambos usted y su equipo entiende. Ese es el código fuente. Forma Así que va a la fuente de pseudocódigocódigo, le toca a usted. Se trata básicamente de que hacer su programa. >> Pero el problema es que elordenador no incluso comprender el lenguaje de programación. No entiendecódigo fuente en absoluto. En realidad, sólo entiendeceros y unos. Así que tenemos esta cosa muy mágica llamadaun compilador, que es básicamente va a poner la fuente llamada queescribió en un idioma que tanto usted y su equipo hablan, y ahora tú eresva a transformar de que en ceros y unos. Así que básicamente lo que el compilador hace esse pone el código fuente, en este caso C, que va a la transforman en cerosy los que la computadora entiende y puede hacer unaarchivo ejecutable fuera de él. >> ¿Eso tiene sentido? Usted sólo puede pensar en el compilador comouna especie de traductor que esté ayudar a explicar a la computadoraexactamente lo que se supone que debe hacer. >> Pero ¿cómo puedo compilar. Volvamos al aparato, ydigamos que estoy haciendo ese programa. En primer lugar voy a crear un directorioaquí, y yo voy a llamarlo "Práctica". Ahora me voy a navegaren el directorio, por lo que la práctica cd. Ahora estoy dentro de la práctica. >> Ahora quiero empezar gedit,así que ¿cómo lo hago? Yo tampoco puedo hacer clic aquí, o puedo simplementeliteralmente escribir "gedit", y va abrir para mí. >> Ahora voy a escribir mi programa, por lo queexactamente lo que escribí en la diapositiva. Estoy declarando una biblioteca. Estoy haciendo int main, nula. Y ahora que estoy haciendo printf, hola. Ahora me voy a guardar esto. Déjame ponerlo en práctica, yVoy a llamar a este hello.c. Así que ahora se transforma en gol. >> Si quiero compilarlo, yo en realidadpuede hacerlo en dos lugares diferentes. Ya sea que puedo hacerlo en una ventana de terminal,por lo que este grande, o puede utilizar gedit que tiene en realidad unaventana de terminal aquí. Así que usted puede hacer muy biensu código, y entonces usted puede escribir simplemente lo que sea aquí, y tratar de compilarlo. >> Entonces, ¿cómo puedo compilar código? La forma más sencilla que tenemos es mediante el uso dehacer, que es una función que básicamente se va acompilar el código. Sólo tienes que decir hola a hacer, por lo que"Hacer" y el nombre del programa. >> Lo sentimos. Esto es incómodo. >> LAUREN CARVALHO: Puede que [inaudible]? >> LUCAS FREITAS: Lo siento. Yo no la salvo a ella en eldirectorio correcto. Ven a la práctica, y ahoraguardarlo como hello.c. Lo siento. Ahora ya se ha guardado. >> Permítanme hacer ls y serSeguro que está aquí. Bien, ahora que está aquí. Así que ahora si lo hago hacer hola, escupe unmontón de cosas, pero entonces, sólo se da me otra línea para la terminal, quesignifica que se ha realizado correctamente. Así que ahora si hago un ls de nuevo, en realidadver este archivo en verde, que es el archivo ejecutable. >> Y entonces, si quiero correr, todos los queQue tengo que hacer es slash dot hola. Se va a saludar aquí, por loque es exactamente lo que estoy pidiendo que lo haga. >> Hay una forma más de la compilación,que está usando sonido metálico. Clang es sólo un compilador que tenemos,y es un poco más detallado de compilarlo. Pero funciona igual de bien. Así que si lo hago ruido metálico, y luego-o, y luegoel nombre que quiero dar a el archivo ejecutable, por lo que vamos a decir"Hola." Y a continuación, el archivo que quiero compilar, hello.c. También va a compilar. Y usted tiene el archivo aquí, yYo sólo puedo ejecutarlo también. Así que ambos trabajan. >> ¿Eso tiene sentido? ¿Alguna pregunta? >> AUDIENCIA: ¿Puede ampliardentro de un rato? >> LUCAS FREITAS: ¿Lo sientes? >> AUDIENCIA: Zoom in? >> LAUREN CARVALHO: Creo quesólo puede ordenar más. >> LUCAS FREITAS: Manda a qué? >> LAUREN CARVALHO: Comando plus. >> LUCAS FREITAS: No. >> LAUREN CARVALHO: Oh, eso no esir a trabajar, porque - es porque hemos creado la resoluciónpor esto. >> LUCAS FREITAS: no lo hagopensamos que podemos agrandar Sí, no podemos hacer zoom. ¿Tienes otra pregunta? Lo siento. >> AUDIENCIA: ¿Puede repetir sonido metálico? >> LUCAS FREITAS: El sonido metálico? Clang es lo mismo que hacer, pero eldiferencia es que primero voy para escribir sonido metálico, que es el comando,entonces yo voy a hacer -0, todos, lo cual es justo lo que vamos aaprender más tarde como una bandera. Así que creo que siempretienes que poner-o. >> Y a continuación, en primer lugar, usted va a ponerel nombre del archivo ejecutable, básicamente el archivo que estásva a crear. Así que puedo decir, por ejemplo, hello2 yentonces el archivo que quiero recopilar, que es el archivo c.. Así que eso es hello.c. ¿Eso tiene sentido? >> AUDIENCIA: Hola, ¿qué? ¿Qué es eso? >> LUCAS FREITAS: hello.c. Y si puedo compilar, y siYo ls, también tengo un hello2 que acaba de compilar. Y si trato de ejecutarlo, que va ahacer exactamente lo mismo que hola, sólo imprimir hola. >> AUDIENCIA: ¿Cómo es que para la marcausted puede poner hola.c después? >> LUCAS FREITAS: En la marca, queno tienen que poner el. c. En la marca, que acaba de decir elel nombre del programa. Usted no tiene que decir. C. Pero para clang, debería hacerlo. >> AUDIENCIA: Con sonido metálico hace tambiénhay que añadir la [inaudible] >> LAUREN CARVALHO: Si. Así que usted también tiene a la biblioteca. >> LUCAS FREITAS: Sí, eso es algovamos a utilizar más adelante. Eso se llama de enlace, y creo que estamosvamos a hablar de ello más tarde. Otra pregunta? >> AUDIENCIA: ¿Ponesun sonido metálico slash dot? >> LUCAS FREITAS: No. La barra de puntos es sólo para abrirel archivo ejecutable. Así clang, que acaba de escribir "clang", yentonces el si quieres abrir el archivo ejecutable que acabacompilado, entonces usted dot tala y el nombre. ¿Eso tiene sentido? >> AUDIENCIA: Si se va a cambiar solo[Inaudible] para hola mundo, ¿verdad tener que recompilar? >> LUCAS FREITAS: Si. si quiero decir, por ejemplo, "holaallí, "Sólo se puede guardar ahora, y yo sólo compilarlo de nuevo. Así que déjame hacer un make hola. Y si lo hago hola, que va adecir "hola." Tiene sentido? ¿Alguna otra pregunta? >> AUDIENCIA: ¿Tiene que incluir laE / S estándar para coordinar el trabajo? >> LUCAS FREITAS: Si. La E / S estándar es básicamentela biblioteca que tiene un aplicación de printf. Así que lo correcto en elsuperior incluye stdio. Eso está incluyendo una biblioteca quebásicamente, tiene un montón de diferentes herramientas que se pueden utilizar. uno? De ellos es printf es una funciónque básicamente impresiones mensajes en la pantalla. >> ¿Alguna otra pregunta? No? Aceptar. Así que ahora vamos a hablar de - >> LAUREN CARVALHO: Vamos air a la guía de estilo. ¿Quieres simplemente encontrar en esta lista? >> LUCAS FREITAS: Así que vamospara hablar de estilo. >> LAUREN CARVALHO: Oh, Davidno terminó. Aceptar. ¿Por qué no volvemos aestilo en el final? En realidad, ha sido actualizadomientras hablamos. >> LUCAS FREITAS: Si. Vamos camino a David para terminar eso. >> LAUREN CARVALHO: Latacambiamos realmente? >> Así que espero que todo el mundo ha sidodisfrutando de Scratch. Por desgracia, es el momento dealejarse de esto - por desgracia es el momento de alejarsea partir de estos bloques de programación bonitas a C. Pero por suerte, todo elconstrucciones de programación que usted tiene estado trabajando con Scratch sondirectamente traducible a C, y estamos va a comenzar a aprender acerca dealgunos de ellos en este momento. Primero hablemos acerca de las condicionesen expresiones booleanas. >> Esto se está ejecutando en la reservaenergía de la batería. >> LUCAS FREITAS: ¿Cómo esque no funciona? Aceptar. Uno va allí, voy a conseguir el - >> LAUREN CARVALHO: Así que las condiciones sonimportantes porque nos permiten introducir la lógica en nuestros programas. He aquí un ejemplo de una condicióndentro de un programa en C. Notemos cómo este - Así que este bloque condiciones aquí, estasentencia printf no se ejecutará a menos que la condición dentro de laparéntesis, n mayor que 0, evalúa en true. >> Ahora, todas las condiciones dentro de fdeclaraciones son expresiones booleanas, lo que significa que hayson sólo dos opciones. O bien podrían evaluarse como true,o que puedan evaluar en false. Así que aquí, así que esto tiene sentido, ¿verdad? nmayor que 0, significa que es un positivo número, lo que significa que se imprimiráout "que eligió un número positivo." >> Hay un montón de expresiones booleanasque puede formar la condición con una declaración init. Tenemos el menor que. Esto es menos que o igual a. Esto es sólo un divertido [inaudible]. Si desea que el printf que se produzca si se trata demayor que o igual a 0, entonces usted elegiría esto. Así que la igualdad sólo anexa derechodespués de que el signo mayor que. >> Igual Igual, que es diferente desólo un signo de igual, igual igual en realidad significa que todo lo que de en ellado izquierdo de esta es el mismo que lo que hay en la parte derecha de estadonde uno signo igual es lo que? Lo que es sólo un signo igual? Asignación. >> LUCAS FREITAS: ¿Quién dijo eso? ¿Es que los dulces? Oh, no. Lo siento. Lo siento. Ambos dan caramelos. Oh, OK! Tres personas se caramelos! >> LAUREN CARVALHO: Así que esta de aquíes el operador de la explosión anterior el signo igual, por lo que esno es igual a. Así que si esto estaba dentro de mi condición,el cuerpo de la afección ejecutar sólo si lo está enla izquierda no es el mismo que lo que está a la derecha. >> También puedo tener sólo elsigno de exclamación. En realidad vamos a ver en una característicadeslice cómo esto podría ser utilizado. >> LUCAS FREITAS: ¿Alguna pregunta? No? >> LAUREN CARVALHO: Podemos combinar estosExpresiones booleanas para construir más sentencias condicionales complejas. Así que aquí, si lo que haya a la izquierdalado de la doble barra o lo que está en el lado derecho dedoble barra y se evalúa como verdadera, a continuación, vamos a imprimir fuera válido. Y luego aquí abajo, si lo que sea queen el lado de la mano izquierda de los dos los símbolos de unión y lo que haya en el derecholado de los dos símbolos de unión se evalúa como verdadera, entoncesvamos a imprimir fuera válido. Las dobles barras se llaman la lógicaOperador O los dobles son símbolos de unión llamado el operador lógico AND. ¿Sí? >> AUDIENCIA: ¿Esos son sólominúsculas l's? >> LAUREN CARVALHO: No. En realidad, son - usted sabe la reacción, comopor encima de la tecla de retorno? ¿Ves eso? >> LUCAS FREITAS: En realidad es un bar. >> LAUREN CARVALHO: En realidad essólo dos bares. >> AUDIENCIA: ¿Se puede utilizar laigual igual para las cadenas? >> LUCAS FREITAS: No. Vamos a aprender más tardealgo al respecto. >> LAUREN CARVALHO: Hay una funciónque se puede utilizar. Pero usted no tiene quepreocuparse de que por el momento. >> ¿Qué pasa si le doy a este programael número 5? ¿Qué va a imprimir? >> AUDIENCIA: [inaudible] válida. >> LAUREN CARVALHO: Válido? Sí. Yo no sé quién puso eso. >> [Risas] >> LAUREN CARVALHO: Eso es algode miedo [inaudible]. >> AUDIENCIA: Así que el matrimonio y,y eso sólo significa? >> LAUREN CARVALHO: Si. Así que el número 5 es a la vez una mayorque 0 y menor que 100. >> AUDIENCIA: ¿Por qué sería una? >> LAUREN CARVALHO: Un signo esen realidad algo diferente, y es un operador bit a bit, que ustedaprender acerca de más adelante. Pero es algo que realmente funcionacon los bits de un número dado. >> LUCAS FREITAS: Simplemente creo que no lo hacentener que preocuparse por ello por ahora. >> LAUREN CARVALHO: Creo que es probable que seaque hasta la próxima semana. >> LUCAS FREITAS: ¿Alguna otra pregunta? No? >> LAUREN CARVALHO: Así hemos visto que unse bloquea puede estar solo, pero puede También se combina con y otra cuadra. Así pues, en este caso, si n es mayor que0, nos vamos a imprimir "Usted elegido un número positivo. "else, que significasi es 0 o si es menos de 0, que vamos a imprimir,"Usted escogió un número negativo." >> Lo interesante aquí es que estosson excluyentes entre sí. Nunca va a ser un casoen el que este y este puede tanto imprimir. >> Estoy seguro de que usted trabajó con el if / elsecaja en Scratch, por lo que este debe ser bastante familiar. ¿Sí? >> AUDIENCIA: ¿Necesitamos el espacio entreint n es igual GetInt entonces el espacio en el if? Como utilizamos una línea [inaudible] >> LAUREN CARVALHO: Oh, el espacio de aquí? >> AUDIENCIA: Al igual que eso, peroel doble de espacio. No, ir para arriba. Suba. >> LUCAS FREITAS: Sólo la línea? >> AUDIENCIA: Si. >> LUCAS FREITAS: Sólo la línea en blanco? >> AUDIENCIA: Si. >> LAUREN CARVALHO: Línea en blanco? No. Eso es sólo una cosa de estilo. >> LUCAS FREITAS: Es igual que en ocasionesque acaba de saltarse algunas líneas de lo que el código no se ve comoun enorme bloque de texto. >> LAUREN CARVALHO: Creo que lo que pasóera que teníamos un comentario aquí, pero me lo sacó para que ustedes tendríanpensar en el código en lugar que acaba de leer mi comentario. En general, el espacio no lo hará realmenteafectar a la forma en que su programa se ejecuta. Es más una cosa de estilo. Y cuando tenemos la guía de estilo actualizadoy listo para funcionar a finales de supersección, hablaremossobre eso más. >> Hay algo mal coneste programa, ¿no? Debido a 0 no es realmenteun número negativo. Así que vamos a ver si podemos arreglar eso. >> Usted probablemente puede imaginarcon esto, dice, ¿no? Si n es mayor que 0, imprimimos, "Ustedelegido un número positivo. "Entonces lo demás si n es menor que 0, "Usted escogió unanúmero negativo. "cosa" Elegiste 0. " >> Ahora lo interesante es queesto podría continuar para siempre. Usted puede tener un bloque if, else sibloque, otra cosa si el bloque, más si, else if, else if, else, básicamentecomo el tiempo que quieras. Y cuando se construyen de esta manera,de que todo va a ser excluyentes entre sí. ¿Sí? >> AUDIENCIA: ¿Entonces por qué no puedes utilizarotro, si en lugar de [inaudible]? >> LAUREN CARVALHO: En este caso, sí quepodría utilizar otro si, y sería absolutamente bien porque lacondiciones sí son excluyentes entre sí. Pero si las condiciones no eran exclusivosel uno del otro, esta haría obligarlos a evaluar nunca ambos,si eso tiene sentido. >> AUDIENCIA: En ese caso, podríamos nidoel segundo, si en el primer caso? >> LAUREN CARVALHO: Si -¿qué quieres decir? >> AUDIENCIA: Si las dos condicionesno son mutuamente excluyentes? >> LAUREN CARVALHO: Si las condicionesno son mutuamente excluyentes? Pero desea que sólo uno de ellos para correr? >> AUDIENCIA: Usted quiere que sólosi en lugar de otro. >> LAUREN CARVALHO: Si. No siempre van a ser muyde maneras que usted puede hacer esto. Usted puede venderlos definitivamente nido. Y verás en un portaobjetos de futuro queusted puede tener múltiples síes, sólo uno después de otra. Pero esta es una forma de lógicaorganizar el flujo de su programa. >> LUCAS FREITAS: Y hay una máscosa, es que se le preguntará acerca de poner si y luego otro si. Eso funcionaría perfectamente, pero es maladiseño, porque, básicamente, si marque el primer caso, y te das cuenta de queel número es mayor que 0, se simplemente puede terminar el programa. Usted no tiene que comprobar sies menor que 0, ¿no? >> Pero si si si, se va a comprobarambos, mientras que si lo hago, si lo demás, es decir, que va a comprobar sique es mayor que 0. Si es así, no va a ver aúnen el resto de líneas de código. Así que básicamente estás comprobando comodos veces innecesariamente, así que es por eso que hacer si else if. ¿Alguna otra pregunta? >> AUDIENCIA: Así que la funcionalidadde la persona si es lo mismo que si era sólo si? >> LAUREN CARVALHO: No. Usted está en realidad va a ver en mi próximadeslizar un ejemplo en el que puede ser diferente. En este caso, es casi lo mismo. >> Así que aquí tenemos un ejemplo de múltiplessi las declaraciones, y la funcionalidad no es la mismacomo si yo hubiera dicho si otra cosa, si bien, si los demás. Vamos a pensar acerca de lo que imprimasi entro en el número 95 en este programa. >> AUDIENCIA: [inaudible] >> LAUREN CARVALHO: ¿Y después? >> AUDIENCIA: [inaudible] >> LAUREN CARVALHO: Si. Así que en este caso, estas condiciones sonno se excluyen mutuamente el uno del otro. Y porque no hay nada queesta condición de evaluar si esta uno ya tiene, sólo estánTodo va a imprimir. Así que ¿cómo podría solucionar esto? >> AUDIENCIA: else pasaría? >> LAUREN CARVALHO: Puedes usar else síes. Pude cambiar el ordende ellos, ¿verdad? Si lo hiciera éste en primer lugar? Bueno, en realidad, no. Eso no funcionaría para el 95. >> LUCAS FREITAS: No, sólo los demás síes. >> LAUREN CARVALHO: La otra persona IFShabría arreglado este. ¿Eso aclarar la confusiónentre síes y demás pasaría? >> AUDIENCIA: Sólo quería preguntarle, siusaste else if, que dejaría? >> LAUREN CARVALHO: Así es. Por lo que sólo esta primera. Si entraba en el número 95, sólo que estahabría impreso, y nunca habría progresado hasta el otro. >> LUCAS FREITAS: Just tipo de pensarcomo si esto sucede, haga lo siguiente. La otra es como si no, chequepara esto y, a continuación, hacer eso. Así como todos son mutuamenteexclusiva. Usted no puede conseguir en dos sobre aquellos. >> AUDIENCIA: ¿Se puede utilizar una lógicaY para esa situación? >> LAUREN CARVALHO: Si. Esa es otra manera de que pudiéramoshan solucionado este problema. Estamos podríamos haber definidorangos, ¿verdad? Así que yo podría haber dicho si n es mayorde 90 y menos de - bueno, supongo que éste en realidad noimporta, pero aquí me podría haber dicho si n es mayor que 80 y menor que 90. Mayor que 70, menos de 80. Eso también han trabajado. >> [Risas] >> LUCAS FREITAS: Tiene miedo. >> LAUREN CARVALHO: No tenga miedo. >> LUCAS FREITAS: No esque va a ser malo. Es sólo que es innecesariamenteverbose. Al igual que en la informática, se debeser tan simple como sea posible, siempre y cuando usted tiene la funcionalidad. ¿Quieres que el caramelo? >> AUDIENCIA: No lo necesito. >> LAUREN CARVALHO: Estás asustandotodo el mundo, Lucas. >> LUCAS FREITAS: Lo siento. >> LAUREN CARVALHO: David también se mencionaéstos cambian declaración en clase. Básicamente lo que está pasando es el interruptordeclaración toma una variable. En este caso, nos estamos tomando un entero. >> Si el entero es 1, vamos aimprimir "Usted escogió un pequeño número. "Si el entero es 1," Ustedescogido un número medio ". Si el entero es 3, "Usted escogió un altonúmero. "Y yo también tenía un caso por defecto aquí abajo, pero no lo demuestra, lo cual es una lástima. >> Básicamente, esto es sólootra sintaxis. Podríamos haber implementado esta exactalo mismo con if y else declaraciones. Pero cuando hay un montón de diferentescondiciones y un montón de diferentes variaciones sobre lo que quiere hacer porcada entrada, esta es una opción. Así que es sólo una buena sintaxis saber. ¿Sí? >> AUDIENCIA: ¿Por qué no hay una barra invertidan en la primera? >> LAUREN CARVALHO: Por ahí arriba? No hay barra invertida n hasta allíporque el GetInt - si usted intenta esto, que va adarle este mensaje. Dame un número entero entre 1 y 3. Y si pongo la reacción n, lo haríallévame a la siguiente línea, pero yo sólo querían que escriba el número enterojusto después de los dos puntos. Podrías haber puesto el contragolpe n. No es una gran cosa. ¿Sí? >> AUDIENCIA: Para que este código, es estecaso de que uno, es que debido que es el primer caso? Porque - >> LAUREN CARVALHO: No, no, no. Así que esto me está dar un número enteroentre 1 y 3. Si n es 1, puedo imprimir esto. Si hubiera pidió cartas, podría tenerdijo dame una letra de la A y C. A continuación, este sería el caso A. >> AUDIENCIA: [inaudible]. El caso sería simplemente [inaudible] >> LAUREN CARVALHO: Sí, claro. ¿Sí? >> AUDIENCIA: ¿Y si quería tenermás de una expresión relacional? Así que en lugar de decir nes igual a 1, [inaudible] n es mayor que 1 en el primer caso? >> LAUREN CARVALHO: En realidad, si no lo hagodefinir algunos de estos casos, esto haría puede llevar hacia abajo. Así que en realidad, tal vez esto no eslo que estás pidiendo. >> LUCAS FREITAS: Creo que se está preguntando siel caso era n mayor que 0, caso menos de 0. >> LAUREN CARVALHO: Tal vez el interruptordeclaración no es realmente lo que quieres utilizar en ese caso. >> LUCAS FREITAS: La sentencia switch essólo por valor, por lo que usted está comprobando de el valor es como esto o aquello. Por lo que no puede en realidadponer condiciones. >> AUDIENCIA: ¿Qué pasa si la personatipos de [inaudible]? >> LAUREN CARVALHO: Eso habría sidomi caso por defecto, que por desgracia no se puede ver. >> LUCAS FREITAS: [inaudible]hacerles ver. >> LAUREN CARVALHO: En realidad,¿sabes qué? Vamos a ir a estudiar 50, y lo harésólo hacer un zoom en las diapositivas en estudio 50, ya que esta es sólo una molestia. Así que déjame en realidad voy a condición. Esto es sólo va atomar un poco de tiempo. >> Está bien. Así que, lo siento. Por lo menos ahora vamos a ser capaces de vertodo sin que cortar. Está bien. >> Así que si te ponen en un 10, tendríamos por defectoaquí a mi caso por defecto, y yo sería simplemente imprimir inválida porqueles pedirá que introduzca un número entero entre 1 y 3. ¿Alguna otra pregunta? ¿Sí? >> AUDIENCIA: Digamos que para el caso de uno, casotres, que usted quisiera que fuera todo el lo mismo, por lo que tomó un númeroeso no es un número medio. En ese caso, ¿sería redundante? ¿Podrías cambiar el texto tanto ende ellos, o habría algunos redundancia? ¿Hay alguna manera de combinar[Inaudible]? >> LAUREN CARVALHO: Hay maneras decombinarlos, pero creo que se puede sólo combinar los adyacentes. Así que si no define nadapara el caso de dos, esto haría aplicarse a ambos casos. ¡Oh, si yo no he puesto nada por casouna, esto se aplicaría tanto a caso de que uno y dos. Si eso tiene sentido. >> AUDIENCIA: ¿Puede repetir eso? >> LUCAS FREITAS: OK. Si lo hizo, básicamente, como, usted tienela misma cosa, pero no te pones nada aquí, que sería ya sea paracaso de que uno o dos casos, a hacer esto. ¿Cierto? Y esta ruptura significa que si usted consigueen este caso, acaba de salir. Así que eso es lo que significa el freno. Así que si lo acabo de hacer esto, se mira, escaso de que uno, y usted acaba de hacer esto. Si fuera el caso de dos, también lo haríaacaba de llegar aquí y hacer eso. >> AUDIENCIA: Pero se puede hacer? Si hay algo paracaso de dos [inaudible] >> LAUREN CARVALHO: No creousted puede hacer eso. Creo que no se puede saltar alrededor. ¿Puedes hacer eso, Rob? No lo creo. >> AUDIENCIA: Así que sólo un númeropuede ir después de un caso, ¿verdad? No puede haber un caso, coma, dos? >> LUCAS FREITAS: No, no puedes. Definitivamente, usted no puede. >> LAUREN CARVALHO: Es decir, el punto esEsta es una opción, y esto no podría ajuste a su caso de uso, por lo que entoncesutilizaría el caso de condiciones. >> AUDIENCIA: Entonces, ¿por qué haces esto? El switch? >> LAUREN CARVALHO: Me gustaría utilizar estasi tiene muy definido - En realidad, Lucas, se está bloqueando. >> LUCAS FREITAS: Oh, lo siento. >> LAUREN CARVALHO: Si usted tiene muycomportamientos definidos que desee para todos y cada uno de entrada, esto podría ser unapoco más conciso que escribir una sentencia if para cada uno. >> AUDIENCIA: ¿Qué hace elbreak significar otra vez? >> LAUREN CARVALHO: La ruptura significa parar. Recuerde, si no tuviera esta rupturaaquí, habríamos caído justo en el siguiente caso. >> LUCAS FREITAS: Descanso significa llegarsalir de la sentencia switch. Porque si es 1, quieroimprimir este e irse. No quiero que comprobar nada más. >> AUDIENCIA: Usted no quierepara imprimir otra cosa. >> LUCAS FREITAS: Si. Debido a que es mutuamente excluyente. >> AUDIENCIA: ¿Y esto sólo procedeal siguiente caso si el primer caso no es cierto? ¿O probar todos los casosal mismo tiempo? >> LUCAS FREITAS: No,cheques de forma secuencial. Secuencialmente, sí. Una pregunta más, entonces tenemos quemovemos para que podamos cubrir todo. ¿Sí? >> AUDIENCIA: Así que para el caso, podría tenerhecho algo además de sólo el elegido? ¿Podría darle un rango? >> LUCAS FREITAS: No. >> LAUREN CARVALHO: No creo queusted puede darle un rango. >> LUCAS FREITAS: No puede ustedno pueden darle un rango. >> AUDIENCIA: El caso es específico[Inaudible]. >> LUCAS FREITAS: Switches una especie de valores. Usted haciendo cosas diferentes dependiendoen un valor, un valor específico. No se puede hacer rango, no se puedehacer otra cosa. Es simplemente una herramienta más para ver. >> LAUREN CARVALHO: La mayoría de la gente no utilizacambiar declaraciones muy en CS50, pero está ahí. >> Está bien. Así que lo siguiente que vamos a hablaracerca es el operador ternario. Este es sólo otro tipode condicional. Básicamente lo que está pasando aquí es que estoypidiendo un número entero, y si n es superior a 100, voy a imprimir"Alto". Si no es así, voy a imprimir "baja". >> Así que lo que está haciendo es que la condición seaquí mismo en los paréntesis, y usted puede clase de pensar en la preguntacomo estoy preguntando si esto es cierto o no. Si es verdad, que voy a hacer esto primerocosa, y si no es cierto, yo soy vamos a hacer esta segunda cosa. >> ¿Una pregunta sobre laoperador ternario? >> LUCAS FREITAS: Sólo quiero señalar deDavid es que cada vez que tenga una condiciones - >> LAUREN CARVALHO: Supongo que el David demirando a través de la transmisión en vivo. >> LUCAS FREITAS: Lo está haciendola vida corriente en estos momentos. Así que cuando usted tiene una condición, usted essupone poner llaves, al igual que tenemos en un interruptordeclaración aquí. Tenemos las llaves aquí. Para cualquier condición, eressupone también poner eso. >> LAUREN CARVALHO: Veráesto en el libro de estilo. En realidad no tenemos laguía de estilo en estos momentos. Creo que David aún está trabajando. >> LUCAS FREITAS: Dijo quees sólo trabajar ahora. >> LAUREN CARVALHO: Oh, ¿es trabajo ahora? Aceptar. Así que al parecer este año en el estiloguiar, incluso si sólo tiene una línea, tienes que poner losllaves pulg Usted no necesariamente tiene que para elfuncionalidad del programa. Y tal vez deberíamos hacer un altodespués de que las condiciones y van directamente a la guía de estilo para borraralgunas de estas cosas? >> LUCAS FREITAS: Si. ¿Tiene una pregunta? >> AUDIENCIA: No, voy a esperarhasta que la guía de estilo. >> AUDIENCIA: ¿Podría volverpara el operador ternario? >> LAUREN CARVALHO: ternario, sí. >> LUCAS FREITAS: operador ternario esbásicamente una sentencia if-else, pero en lugar de tener que tener las dos líneasde comprobar si, y entonces el otra cosa, sólo hay una línea. Así que, básicamente, si quiero dar una cadenaun valor de alto o bajo, y yo querer hacer un alto si n es mayor que100 o baja si es menor, lo que puedo hacer es esto [inaudible] la cadena va a ser, y luego mepide el programa es n mayor que 100? >> Así que por eso tengo esta expresiónen paréntesis, y luego el signo de interrogación. Yo estoy pidiendo es mayor que 100? Si es así, que va a ser alta. Si no es así, va a ser baja. >> Así que básicamente lo que usted piensa es que usted pideuna pregunta, así que usted pone en paréntesis la condición. Luego, coloque el signo de interrogaciónporque usted está pidiendo él. Y si esto es cierto, que va a seren el primer valor de [inaudible] aquí. Si no es así, voy a poner elvalor que es después de los dos puntos. ¿Tiene sentido? >> Es también algo que es como unherramienta en C pero usted no tiene que específicamente usarlo. Pero la gente por lo general les gusta que CSya que sólo guarda líneas. >> LAUREN CARVALHO: Es muy elegante. Lo hace mucho en una sola declaración. >> AUDIENCIA: Así que el signo de porcentaje essimplemente independencia de los resultados en la línea anterior? >> LAUREN CARVALHO: Oh, lo siento. Este signo de porcentaje es en realidadun marcador de posición para este s. En un comunicado printf, tienes estastring aquí, que es lo que va a imprimir, pero no se puede simplementepuso este s allí. De lo contrario sería imprimirlos s literalmente. Por eso, pusimos un porcentaje aquí para mantenereste lugar se celebró por cualquier viene después de la coma. >> Así que para una cadena, tienes ciento s. Para un entero, ciento i. Para un flotador, ciento f. Verás aquellos como nosotrosver más ejemplos. Pero tal vez debería hablar de laguía de estilo para un rato, ahora que le toca. >> LUCAS FREITAS: Si usted va acs50.net/style, usted va a ver la guía de estilo. Para los conjuntos de problemas, su puntaje para laconjunto de problemas se compone de alcance, lo que básicamente significa que si usted hizo todolas partes del problema establecidos o si intentado algo. La segunda cosa es la corrección, lo quemedios es su programa haciendo lo que se suponía que iba a estar haciendo, o lo hacetienen errores, o es que no hacen lo que se supone que debe hacer. >> La tercera cosa es el diseño, lo que significaestán implementando esta bien, o está que el uso de declaraciones innecesarias? Así por ejemplo, si desea repetirun número 10 veces, estás escribiendo un bucle o simplemente estás haciendo 10 vecesla misma declaración, sólo haciendo copiar y pegar. Así que el diseño es para eso. >> Y, por último, usted tiene estilo. El estilo es como juzgarsi su código es legible y tipo de bonito. Simplemente significa básicamentees su código legible? ¿Sería alguien que estaba buscando sonsu código sea capaz de entender lo que que está haciendo? ¿Tiene comentarios y similares? >> Vamos a hablar sobre el estilo quese supone que debes usar. Lo primero es los comentarios. Los comentarios son muy importantes para sucódigo porque a veces que estás haciendo su programa, y ​​usted sabe exactamente lo quedesea hacerlo usted acaba de empezar codificación, sólo tienes que escribir un montón de C. Perosi alguien está buscando es que usted está código, no van a ser capaces deentenderlo porque no saben las cosas que están en tu cabeza, comola pesudocode, así que tal vez lo harán tener dificultades para entenderlo que hace el código. >> Así que los comentarios son realmente útiles para explicarpara alguien que está mirando su código de lo que está haciendo, yEn realidad, incluso para usted, que son muy útiles. Como vas a Boletines de problemas más difíciles y duros,usted va a ver que el código obtiene más largos y, a continuación, los comentarios son realmenteimportante para que recuerde lo que cada parte de tu programa hace. >> Para poner un comentario, puede simplemente hacer unaslash slash y luego escribir un comentario. Y toda la línea es parte de un comentario,y todo lo que usted escribe, no va a serutilizado para el código. Es básicamente como el compiladorva a ignorar eso. ¿Eso tiene sentido? >> AUDIENCIA: ¿Qué se hace de nuevopara escribir un comentario? >> LUCAS FREITAS: ¿Esto? El slash slash? Cada vez que escribe slash slash, cualquiera que seaestá en esa línea no va para ser considerado como C. Sí? >> AUDIENCIA: Así que después del comentario,sólo entrar y comenzar una nueva línea? >> LUCAS FREITAS: Sí, exactamente. >> LAUREN CARVALHO: El slash slashes para los comentarios de una sola línea. >> LUCAS FREITAS: Por ejemplo,aquí tenemos - déjame el zoom in - por ejemplo, aquí estoy declarando un flotador,pero tal vez si usted acaba de poner este en el código, como no tienes idealo que esto está haciendo, como en realidad alguien que está buscando en este códigova a ser, al igual que, lo que el diablos está pasando? >> Si pones un comentario diciendo "convertirFahrenheit a Celsius, tiene mucho más sentido. Eres, como, OK, ereshacer una conversión. ¿Eso tiene sentido? Así que es algo que ayuda a las personaslisto su código y también hacer usted será capaz de organizarsu código mejor. >> La segunda cosa es que usted puede hacercomentarios de varias líneas, por lo que tienen una comentar para un montón de líneas. En lugar de tener que poner slash slash,las observaciones de primera línea, slash slash, la segunda línea, y así sucesivamente,puede utilizar la estrella slash. La forma en que usted lo hace es que para elprimera línea del comentario, usted es vamos a hacer una estrella estrellas raya vertical,así como si nada. Al igual que aquí tenemos el comienzo deun programa, por lo general pone que usted son, lo que hace este programa,y cosas por el estilo. Es algo así como un encabezadopara el programa. >> Una vez más, no es algo que uncompilador va a preocuparse, pero es importante que usted sepa lo que estaprograma hace o para otras personas saber lo que está haciendo su programa. Por lo que reduce radicalmente estrella estrella, y luego elúltima línea que vas a hacer estrellas recortar para poder cerrarese comentario. Así que, básicamente, para el resto de las líneas,usted puede escribir lo que sea, y esto es todo lo que va a ser ignorado. >> Y también, al igual que el estilo, se ve quecada una de las líneas tiene una estrella, y todos las estrellas están alineadas. Estas son cosas importantes paraque su código se ve bastante. Suena bien? >> Ahora, condiciones. Lo que David estaba diciendo que debemosde hecho poner en las diapositivas, es que cuando usted tiene cualquier tipo de sentencias ifo cualquier tipo de condiciones, usted debe utilizar llaves para demostrar queesto es lo que iba a suceder cuando se tiene la condición. Técnicamente, cuando usted tiene una condicióny luego la siguiente línea es sólo uno línea, usted no tiene técnicamentepara poner las llaves. >> Básicamente el compilador entenderíade todos modos como implícita. Pero para CS50, les pedimos a ustedes para ponerlas llaves sólo para que su código es más organizadoy más legible. Debido a que el código se hace más largo sino tienen llaves y tal. Se pone muy desordenado. >> LAUREN CARVALHO: Esto es exactamentelo que David acaba de señalar en mis diapositivas anteriores. Definitivamente funciona sin el rizadollaves, pero por razones de estilo vamos a pedir queusted pone los pulg >> Y cuando empiezas a correr style50,que es una especie de la verificación de 50 de estilo, que le recordará que debe hacerlo. >> LUCAS FREITAS: Y otra cosa esrecuerde poner las llaves junto en cada línea. Así lo hace, por ejemplo, l's. Ir a la siguiente línea, abra el rizadocorsé, luego vas a la siguiente línea. Sangría, que es cuatro espacios. Luego de escribir lo que sea, y luego otroline, y cerrar la llave de cierre. Así que asegúrese de que tanto los rizadallaves están en distintas líneas. >> AUDIENCIA: Así que si este código tenía como10 síes otra cosa, esto debe ser de 10 juegos de soportes? >> LUCAS FREITAS: Sí, para cada uno de ellos. Sí. Así que si, de lo contrario si, y así sucesivamente. >> AUDIENCIA: ¿Puede usted nopresione Tab para sangrar? >> LUCAS FREITAS: Les estamos pidiendochicos a usar cuatro espacios. Algunos editores de texto se traducen pestañacomo cuatro espacios de forma automática. gedit no lo hace, así que tienes quehacer espacio espacio espacio espacio. Esto también es algo que algunosprogramadores sólo las pestañas, algunos programadores sólo los cuatro espacios,y algunas otras personas incluso hacen dos o tres espacios. Es sólo que aquí estamos pidiendoustedes que hacer cuatro espacios. >> AUDIENCIA: No hay casi definitivamentetiene que haber una manera para que gedit automáticamente [inaudible]. Al igual que no [inaudible] lo hace. >> LUCAS FREITAS: Si. Creo que se puede ir a Configuración. >> AUDIENCIA: Ya hace todo eso. >> LUCAS FREITAS: Ya hace? Aceptar. Así que asegúrese de que ustedtener cuatro espacios. >> AUDIENCIA: ¿Tenemos que poner el rizadoparéntesis en los bucles así? >> LUCAS FREITAS: Si. >> LAUREN CARVALHO: Siempre que suencapsulando un bloque de código, sólo por favor use las llaves. Y antes de pensar que sólo somosser muy rigurosos en esto por nada bueno razón, si a ustedes no vayan a obtenerpasantías tecnología en las grandes empresas, que le dará una guía de estilo, yellos le dirán que esto es lo que su código debe ser similar. Y a pesar de que aprendas a código comoesto, tal vez en su pasantía tendrás que hacer algocompletamente diferente. Ellos esperan que te conformasa su estilo. >> LUCAS FREITAS: Y una cosa más esque ¿Notas cómo tengo como x, espacio, menos, espacio, 0? Cada vez que tenga un operador - puede ser como más, menos, los tiempos, menos,mayor, sea cual sea el operador - tienes que poner un espacio en la izquierday el derecho del operador. >> LAUREN CARVALHO: Esos sondenominan operandos binarios. Sólo asegúrese de que siempre el espaciocabo sus operandos binarios. >> LUCAS FREITAS: Este esno por un operador binario. >> LAUREN CARVALHO: Eso esporque toma dos. >> LUCAS FREITAS: Oh, sí. >> Aceptar, los switches. En primer lugar, hay que ver que al igual queen una sentencia if o else, usted tiene poner la llave de su propia líneay debajo de la llave de aquí. Observe que hay un espacio únicotras la conexión, al igual que en if y else teníamos un solo espacio entreeso y los paréntesis. Así que hay que poner eso. >> Y no hay ningún espacio después de cadade los paréntesis o antes del final de los paréntesis. Así que ya ves que es todo junto,y también les gusta aquí. >> ¿Sí? >> LAUREN CARVALHO: Creo quetenemos que seguir adelante. >> LUCAS FREITAS: Así que esto es parte de laguía de estilo que usted tiene para el CS50. Asegúrese de ir a cs50.net/styley echar un vistazo a esto. Estos son todos muy importantespara su calificación de estilo. >> Permítanme volver a la declaración. >> LAUREN CARVALHO: Prefierosólo tiene que utilizar style50. Sólo vamos a irdirectamente a los bucles. Está bien. >> Así que vamos a volver a los contenidos, ahoraque hemos pasado en el libro de estilo. Loops, Usted los ha visto en Scratch, yvamos a hablar de ellos en C. >> En un bucle, haytres porciones a la declaración de este bucle. Usted tiene su inicialización enque establece sus variables. Tienes tu condición, que sonla comprobación para ver si algo es verdadera o falsa, y si elbucle debe continuar. Y usted tiene su actualización, quees la actualización de las variables. >> Vamos a echar un vistazo rápido a algunosCódigo C de este bucle en acción. Lo que pasa es que aquí en elinicialización, estamos estableciendo i a 0. En la condición que estamos comprobandosi i es menor que 10. Y en la actualización que estamosincrementando i. Entonces, ¿cuál será el resultado deeste bucle? >> LUCAS FREITAS: En realidad, en primer lugar,¿Sabes lo que los chicos i + + es? >> AUDIENCIA: Aumento en 1. >> LUCAS FREITAS: Aumento de 1, sí. Así que esto es lo mismo quehaciendo i i + 1 es igual. Y darse cuenta de que no tenemos un espacioentre el yo y el + +. >> Así que sí sabemos es que ustedes lo que esto va a hacer? ¿Puede alguien decirme? Y tal vez obtener un poco de caramelopor eso? >> AUDIENCIA: [inaudible] >> LUCAS FREITAS: OK. [Inaudible] mostrar a todos más tarde [inaudible]. Sí, se va a mostrar "EsteCS50 es "10 veces. >> LAUREN CARVALHO: Supongo que fueen el título de la diapositiva. >> LUCAS FREITAS: Oh, sí. >> [Risas] >> LUCAS FREITAS: Eso ayuda. >> LAUREN CARVALHO: Así que aquellosson para los bucles. Vamos a ver algunos ejemplos máspor lazos más adelante. Pero vamos realmente a echar un vistazo a lasegundo tipo de bucle te vas a encontrar en C, y se llama el bucle while. >> En un bucle while, que hayaacaba de conseguir una condición. La condición se comprueba en ela partir, y si esa condición se evalúa como verdadera, entonces el código dentro deel cuerpo del bloque mientras se ejecutará. Y el código seguiráejecutar, siempre y cuando que condición sigue siendo cierto. >> He aquí un ejemplo de un bucle while en C.Vamos a configurar la cuenta de 10 a empezar. Mientras contador es mayor que 0,vamos a seguir imprimiendo a cabo esta variable de aquí. Vamos a disminuir el recuento ya continuación, comprobar el estado de nuevo. Imprimir, decremento, chequela condición de nuevo. >> Aquí tenemos un ejemplo que se refierea su pregunta anterior. Teníamos el porcentaje s cuando éramosimpresión de una cadena, y ahora que estamos imprimiendo un int, tenemos unaciento I como marcador de posición en lugar nuestro. Todas las letras debe ser bastanteintuitiva, S para cadena, i para int. >> Así que si se ejecuta este código, debeuna cuenta regresiva de 10 a 0, la impresión de cada entero. >> LUCAS FREITAS: Y se puede pensar en elpor ciento, ya que se siente como un espacio en blanco espacio, a continuación, usted está poniendo estevariable de aquí en ese espacio en blanco. Así, por ejemplo, aquí voy a tener sóloun espacio en blanco, y luego me voy a poner la contar allí mismo, elvalor de la cuenta. ¿Eso tiene sentido? >> ¿Puedo simplemente hacer como printfy luego cita, cuente? ¿Funcionaría? >> AUDIENCIA: No. >> LUCAS FREITAS: No, porque lo haráde hecho imprimir la palabra "cuenta" en lugar de imprimir el valor. Esta es la forma de hacer que imprima los valoreshacia la variable en lugar de sólo el nombre de la variable. ¿Alguna pregunta? >> AUDIENCIA: ¿Por qué usan paracomo opuesta a tiempo? >> LAUREN CARVALHO: Me gustaría utilizar una debucle si sé exactamente cuántos iteraciones que quiero mi bucle se ejecute. En este caso, no tiene importancia, ya que,Quiero decir, yo sólo estaba tratando de pensar en una muy simpleejemplo para esta diapositiva. Pero digamos que usted quiere algopara seguir adelante, mientras que - >> LUCAS FREITAS: Por ejemplo, usted espidiendo de entrada hasta que la persona le da la entrada derecha. Así que, como mientras que la entrada no esAceptar, seguir preguntando por él. O como durante sus padres no se dandinero, seguir preguntando por él. >> [Risas] >> LAUREN CARVALHO: Usted no sabe cómomuchas veces tendrás que hacerlo. >> LUCAS FREITAS: Porque no lo hacesé cuántas veces eso es va a seguir adelante. >> LAUREN CARVALHO: Pero en un bucle,usted necesita saber cómo muchas veces. ¿Sí? >> AUDIENCIA: Solo para aclarar, el porcentajedice que esto es algo a punto de suceder, sobre las íes para la parte entera,y la barra invertida n - >> LAUREN CARVALHO: Medios? ¿Quién sabe lo que significa la barra invertida n? Nueva línea, sí. Exactamente. >> LUCAS FREITAS: Usted puede pensarde n como nueva línea. >> LAUREN CARVALHO: Nice. >> AUDIENCIA: ¿Qué es lo que cuentatablero tablero [inaudible]? >> LUCAS FREITAS: Count minus minus eslo mismo que el plus plus, pero en vez de aumentar,está disminuyendo en 1. >> LAUREN CARVALHO: Cualquier másmientras que las cuestiones de bucle? No? Oh, que se suponía quehan saltado que. >> Se trata de un bucle do while. Muy similar a un bucle while excepto eneste caso, comprobamos la condición después de el código en el cuerpo de labucle se ejecuta una vez. Así que ejecutamos el códigoprimero no importa qué. Entonces comprobamos la condición, ejecutarde nuevo si la condición es verdadera. >> Usted se encontrará usando esto cuandousted está pidiendo la entrada del usuario. Debido a que siempre vas a tener quepedir una vez, y luego en función de lo la entrada del usuario es, puede que tenga queNueva solicitud y pedir una y otra vez si la entrada no era lo queesperaba que fuera. >> AUDIENCIA: Así que es como una formapara que la gente llene. >> LAUREN CARVALHO: Sí, exactamente. Usted encontrará, creo, en su primeraJuego de parámetros, usted va a tener que utilizar un bucle así hacer para cobrarentrada del usuario. >> AUDIENCIA: Dependiendo de la situación,sus ciclos while tenderán a funcionar con más a menudo que los bucles while, comopor uno o algo así? >> LAUREN CARVALHO: Si es la exacta - >> LUCAS FREITAS: Siempre deben ejecutarel importe exacto de veces que quiere que se ejecute. Como usamos hacer mientras porque realmentequería conseguir la entrada al menos una vez. En ciclos while, a veces no quierespara ejecutarlo en absoluto si no es el caso de ejecutar. Por lo tanto, depende del diseño. Quiero decir, usted puede hacerlo ya sea para uso o mientrasmientras que el tiempo que el código hace que se supone que debe hacer. >> LAUREN CARVALHO: Pero yo sípensar en la respuesta a su pregunta es probablemente sí. Digamos que la condición es falsa. En un caso se correría una vez, yotro caso se correría cero veces. Así que, sí. >> ¿Alguna pregunta más? ¿Sí? >> AUDIENCIA: ¿Puede la condición de bucle es unabucle en términos de una otra variable que [inaudible]. >> LAUREN CARVALHO: Sí,puede ser cualquier cosa. Probablemente para los Boletines de problemas iniciales, queno tendrá que encontrar ese caso, pero Definitivamente puede ser cualquier cosa. >> LUCAS FREITAS: Creo queque hemos terminado aquí. >> LAUREN CARVALHO: ¿Estamos? No? >> LUCAS FREITAS: Loops? Sí. >> LAUREN CARVALHO: No debemos ser. Oh, hemos terminado con bucles. Aceptar. >> En realidad, ya hemos estado hablando de maneratanto, vamos a navegar en realidad todo a study.cs50.net/conditions. Y vas a navegar hacia abajopara el widget de problemas. Bueno, en realidad, mientras que la gente se estáesta configuración, el Estudio CS50 es va a ser una herramienta que tus TFSusar para preparar secciones y que ustedes pueden usar si se olvida de secciones. Se va a contener un montón de diapositivas,algunos consejos y trucos para cada tema, y ​​algunos problemas de prácticacon soluciones. >> ¿Por qué no todo el mundo acaba de echar un vistazoen este problema aquí. >> Lo siento, debí haber recordadopersonas para llevar las computadoras portátiles de hoy. Pero si usted no tieneun ordenador portátil, que está bien. Usted sólo puede apuntar esta abajo en unapedazo de papel o mirar por encima de el hombro de su vecino. >> Vamos a tratar de escribir un programa quesolicita al usuario que tome una conjetura, la número medio de hijos por familiaunidad en los Estados Unidos. Ese número es 2, por cierto, a medida quepuede ver en estos ejemplos. >> Queremos imprimir el número promedio dehijos por familia en los EE.UU., entonces quiere qué? Queremos recoger la entradadesde el usuario. Y a continuación, dependiendo de lo que el usuariode entrada es, usted va a imprimir bien esto es correctoo esto es incorrecto. >> Y la primera cosa que usted va aver, si hace clic en la pequeña flecha en la parte inferior del widget problema es undetectar para anotar algunos pseudocódigo. Así que no estás programando todavía. No eres más que conseguir suideas en orden. >> ¿Alguien quiere ayudar a Lucasllegar a la derecha pseudocódigo para este problema? >> LUCAS FREITAS: ¿Qué es lo primeroque probablemente deberíamos hacer aquí? ¿Qué piensan ustedes? >> AUDIENCIA: [inaudible] >> LUCAS FREITAS: Sí, está bien. Así, imprimir. Sólo di la impresión de este promedionúmero de personas? Aceptar. Imprimir pregunta, digamos. Después imprimo esta pregunta,¿qué debo hacer? >> AUDIENCIA: Obtener el aporte. >> LUCAS FREITAS: Obtener entrada. ¿Algo más? >> AUDIENCIA: Condición. >> LUCAS FREITAS: Condición. >> LAUREN CARVALHO: ¿Qué es esocondiciones va a ser? >> AUDIENCIA: El número de [inaudible]. >> LAUREN CARVALHO: Así es. >> LUCAS FREITAS: Entonces, ¿qué voypara comprobar en el estado? >> AUDIENCIA: Si es igual a 2. >> LAUREN CARVALHO: Si es igual a 2. Exactamente. >> LUCAS FREITAS: ¿Hay algomás que deba hacer? >> AUDIENCIA: Count. >> LUCAS FREITAS: Así que si esigual a 2, vamos a decir - permítanme escribir si es igual a la entradaa 2, entonces lo que voy hacer es impresión correcto. Y luego otra cosa, voyimprimir correctos. ¿Algo más? No? >> LAUREN CARVALHO: Así que ustedpuede hacer clic en el - Por qué todos tienen esto abajo? >> LUCAS FREITAS: ¿Tiene sentido? Así que ahora vamos a tratar de codificar esta. >> LAUREN CARVALHO: Si hace clic en el pequeñoflecha, que en realidad guarda su pseudocódigo, que es realmente emocionante. Y usted puede hacer en los comentarios sique quieres es simplemente para recordar lo que debe hacer. >> LUCAS FREITAS: Así, por ejemplo, primeroVoy a imprimir la pregunta, así ¿cómo voy a hacer eso, en realidad? printf. Así printf, y la pregunta es la medianúmero de hijos por familia en los EE.UU.. >> Entonces me voy a ponerentrada del usuario. Entonces, ¿cómo puedo hacer eso? >> AUDIENCIA: Obtener Int.. >> LAUREN CARVALHO: GetInt. >> LUCAS FREITAS: OK. Así que primero declarar, ¿verdad? int, llamémosle n es igual GetInt. >> Y ahora la condición. Así que déjenme decirles que me voya aquí Respuesta. Así que primero, si la entrada, que es n, es igual aa - ¿cómo voy a escribir eso? >> AUDIENCIA: Igualdad iguales. >> LUCAS FREITAS: Perfect. Entonces n. Y noto que me hago un espacio,iguales, iguales, espacio, cierto. Y ahora ¿qué debo hacer? Algo muy importante para el estilo. Las llaves. >> Y luego voy a imprimir. ¿Cómo se imprime? printf. >> AUDIENCIA: ¿Podría ser mayúscula? >> LUCAS FREITAS: No. Se supone que debe estar en minúsculas. Así que eso es correcto. >> Bastaría esto para el printfdeclaración, o me estoy perdiendo algo? >> AUDIENCIA: Nueva línea. >> LUCAS FREITAS: Nueva línea, sí. Y ahora más. >> AUDIENCIA: ¿Existe un espaciodespués de que el printf, o no? >> LAUREN CARVALHO: Deberíamosconsultar la guía de estilo. >> AUDIENCIA: No debería ser. >> LUCAS FREITAS: ¿No debería ser, en Aceptar. Así que otra cosa, printf, "Eso no es correcto." >> LAUREN CARVALHO: Vaya, sus cotizaciones. >> LUCAS FREITAS: OK. ¿Algo más? ¿Te parece bien? >> LAUREN CARVALHO: Lo intentamos? >> LUCAS FREITAS: Sí, vamos a ejecutarlo. Así que es la compilación, yParece que funciona. Vamos a tratar de dos hijos. Eso es correcto. Y ahora vamos a correr de nuevo, pero ahora en lugarde poner dos hijos, vamos a decir que me voy a poner como cinco. Eso es incorrecto. Así que parece que funciona. >> LAUREN CARVALHO: ¿Por qué no les muestrasqué pasa si pones algo raro, como algunas letras. >> LUCAS FREITAS: Oh, sí. También vamos a comprobar que. ¿Qué pasa si el usuario está tratando de metersecon su programa, y ​​que sólo escribir, no sé dos. Va a decir reintento. >> LAUREN CARVALHO: Así GetIntles está pidiendo que vuelva a intentarlo. No teníamos que cuidarde que nosotros mismos. >> LUCAS FREITAS: Si. Así que a menos que realmente poner un número, que esva a seguir pidiendo que vuelva a intentarlo. >> AUDIENCIA: ¿Cómo se ejecuta? >> LUCAS FREITAS: Basta con hacer cliceste botón de estrella. >> LAUREN CARVALHO: Usted debe subir. Ahí lo tienes. >> LUCAS FREITAS: La estrellabotón derecho allí. ¿Sí? >> AUDIENCIA: ¿Se pedirá [inaudible]con números decimales también? >> LAUREN CARVALHO: Yo creo que sí. >> LUCAS FREITAS: Si es así, ¿qué? >> LAUREN CARVALHO: Si se escribaen un número decimal, creo que va a solicitar. >> LUCAS FREITAS: Veamos. >> LAUREN CARVALHO: Porqueno es un int. >> LUCAS FREITAS: Si. >> LAUREN CARVALHO: ¿Así que no es un int,Obtenga Int. le pedirá que vuelva a intentarlo. >> AUDIENCIA: Entonces, ¿dónde en ese código seríael decimal que pide al de usuario que tienen que entrarun número entero específicamente? >> LAUREN CARVALHO: GetInt es en realidadhacer eso por nosotros. >> AUDIENCIA: No, quiero decir que si queríamospara acceder a [inaudible] >> LUCAS FREITAS: Puede decir como promedionúmero de niños en los EE.UU.. No se. Podemos decir, por ejemplo ", por favorde entrada un número entero ". >> LAUREN CARVALHO: Un número entero igualal número medio. Quiero decir, es sólo la forma enlo palabra, ¿verdad? >> LUCAS FREITAS: Si. Esto no es parte de la realidad de codificación. Es más bien como lo queusted va a querer escribir en su programa. >> AUDIENCIA: ¿Cómo nos hemos ejecutarlo siestaba realmente en gedit [inaudible]. En lugar de presionar el juego? >> LUCAS FREITAS: Enviaremosprimero compilarlo. Podemos hacerlo haciendo maquillajey el nombre del archivo. Y después de ejecutarlo, lo haremos slash doty el nombre del programa. >> AUDIENCIA: Creo que lo que quería decir era siqueríamos que el programa para responder a su, entrada inválida incorrecta,usted no debe poner en - >> LUCAS FREITAS: No vamos a ser capaces dehacer eso porque el código que dice reintentar proviene de Get Int que es unla función que ya se implementa para nosotros a través de la biblioteca CS50, y desdeque ya ha implementado allí, puede no sólo [inaudible]. >> LAUREN CARVALHO: Si usted no usaGetInt, entonces usted puede hacer eso. >> LUCAS FREITAS: Si. Pero si usted está usando GetInt, no se puede. ¿Alguna otra pregunta? >> AUDIENCIA: ¿Podrías haber ido con igualGetFloat y luego ser capaz de poner en un decimal? >> LUCAS FREITAS: Si. >> AUDIENCIA: OK. A continuación, sólo puede ingresarflotar A es igual a - >> LAUREN CARVALHO: Si. Exactamente lo mismo, excepto unaflotar en lugar de un int. >> LUCAS FREITAS: Sólo hay que poner aquíy luego GetFloat allí. >> AUDIENCIA: Como quierasver o han visto - >> LAUREN CARVALHO: tenemosno llegado allí todavía. >> AUDIENCIA: - haciendo la desigualdad conflotadores no no [inaudible] >> AUDIENCIA: ¿Qué significan los puntos y comas? >> LAUREN CARVALHO: El punto y coma sólosignifica que esta afirmación es completa, y vamos a ira la siguiente diapositiva. >> AUDIENCIA: Por lo que es necesariocada vez? >> LAUREN CARVALHO: Si. Bueno, está bien, por lo que no fuera por estas condiciones,porque son encapsulando algo. Así que, básicamente, si algo está causandoa continuación, crear una llave bloque, no ponga un punto y comaal final. >> LUCAS FREITAS: Pero tododemás, sí. Cuando termine de un comunicado,poner el punto y coma. Y si se le olvida un punto y coma, lacompilador va a enojarse con usted, y usted va a tenerpara tratar de arreglarlo. >> LAUREN CARVALHO: Si pongo un punto y comaaquí, eso sería detener esto, y yo nunca llegar a ejecutar lo que esen el interior, por cierto. Así que es uno de esos errores comunes. >> AUDIENCIA: Siempre ejecución. >> LAUREN CARVALHO: Si. En este caso, siempre lo haríaejecutar lo que hay dentro. >> AUDIENCIA: Su estilo de [inaudible]fijar eso para usted, el pensamiento. >> LAUREN CARVALHO: Oh, eso es cierto. >> AUDIENCIA: [inaudible] solaLo line [inaudible] >> AUDIENCIA: Sí? >> AUDIENCIA: ¿Se puede tener múltiplesinsumos en una línea? Así como se puede pedir a los usuariosimprimir dos cosas? >> LAUREN CARVALHO: no se utiliza - >> LUCAS FREITAS: No. Digamos que también quieropara obtener este número entero m. Tengo que hacerlo en una línea diferente. >> AUDIENCIA: Si se va a ejecutareso, ¿cómo [inaudible]? Se imprimirá el símbolohay [inaudible] y entonces lo que entra en uno y - >> LAUREN CARVALHO: Bueno, lo dirige. Quiero decir, no hay nada que nos impidasimplemente ejecutarlo y ver lo que pasaría. >> LUCAS FREITAS: Creo que esva a se queja de nosotros porque no estamos usando - >> LAUREN CARVALHO: Vaya. >> LUCAS FREITAS: Se quejó a nosotros en esteahora porque no estamos usando este variable, pero si lo hiciera, por ejemplo,n es igual a es igual a y m es igual a es igual a, entonces, ¿quépasar en este caso? ¿Qué iba a hacer este programa? >> AUDIENCIA: Me preguntola forma en que lo haría - >> LAUREN CARVALHO: Ella sólo quieresaber cómo se ve como, creo, ¿no? Así que tomó uno de ellos, y luegose tomó la segunda. >> Creo que deberíamos seguir adelante,porque tenemos una más presentación de diapositivas que recorrer antes - Qué quieres tirar de las matemáticas? >> LUCAS FREITAS: Sí, las matemáticas. >> LAUREN CARVALHO: Daryo tan sólo un segundo. >> Hay una numérica pocos diferentesvariables en C. Datos Numéricos en C se pueden clasificar en diferentes tipos,y estos son los que estará ver la mayoría de las veces. >> Y int es un número entero. Usted no puede tener ningún decimales. En el aparato, que se necesita32 bits para almacenar un int. >> Un flotador puede tener decimales. También tiene 32 bits para almacenarun flotador en el Appliance. >> Un doble es un número con un decimalpunto que se lleva a 64 bits para almacenarlo, lo que significa que usted puede tenermayor precisión porque usted puede tener más - ¿cómo se llama eso? >> LUCAS FREITAS: Sí, eso es más. >> LAUREN CARVALHO: más lugaresdespués del punto decimal. Y mucho, mucho es un número enteroque tiene 64 bits a que dolor en el aparato. >> LUCAS FREITAS: Así que puede sermás grande que puede ser enteros. >> LAUREN CARVALHO: Lo que pasa con los datostipos en C es que te dicen lo que tipo de datos que puede almacenaren la variable. Ellos te dicen cómo se puede utilizar estavariable en su programa. Es muy importante que acaba de realizar un seguimientode qué tipo de datos que está usando, y si usted tiene que lanzar desde un tipo de datosa otro, asegúrese de que usted sabe exactamente lo que sucede cuando esafundición tiene lugar. Y verás un ejemplo más adelanteen estas diapositivas de un error que puede ocurrir. >> Echemos un vistazo a algunos de matemáticas en C ypensar con mucho cuidado, supongo, acerca de lo que está pasando cuando estematemáticas está teniendo lugar. En la primera línea, lo que essucediendo cuando yo declaro x? >> AUDIENCIA: Usted está permitiendox ser algo? >> LAUREN CARVALHO: Si. Bueno, realmente estoy pidiendo a la operaciónsistema de 32 bits de memoria, ¿verdad? ¿En qué puedo almacenar un int, yVoy a llamar a ese int x. >> LUCAS FREITAS: ir Básicamente en la memoriay la búsqueda de un lugar que tiene 32 bits y dicho, oye, quiero este espacio,y que va a ser llamado x. Así que no eres más que bastante hallazgouna caja en su memoria para almacenar valores para x. >> LAUREN CARVALHO: Y entonces puedo inicializarx, lo que significa que simplemente almacenar el valor de 2 en ese lugar, ese pedazode la memoria, que pedimos operativo sistema para. Y hasta aquí lo que estamos haciendo esen realidad estamos declarando y inicializar y en una línea en lugar deen dos líneas como lo hicimos aquí, que también es un perfectamente bien, estamosla adición de 1 a x, y estamos almacenando que valor en y. >> LUCAS FREITAS: Así que básicamente lo que estolínea hace, encuentra ahora un cuadro para y, y entonces su valor, lo queusted va a poner dentro de la caja, es va a ser el valor de x más 1. Por lo que tiene esta caja para y. Se obtiene el valor de x, se veaquí, y ver que es 2. Ponlo ahí, más 1, por lo quepone un 3 allí. ¿Eso tiene sentido? Por lo tanto y sería 2 en este caso. >> LAUREN CARVALHO: Muy bien, fresco. Vimos alguna adición, así que vamos a pensar ahorasobre la división en C. Aquí estoy declaración e iniciación de un flotadorllamada respuesta y dividiendo 1 por 10, y entonces yo estoy imprimiendo la respuestacon dos decimales. Y tenga en cuenta que aquí, en mi declaración printf,cuando quiero imprimir algo a dos decimales,% .2 f eslo que yo quiero usar. Así que el punto 2 es sólo decirNecesito dos lugares después de la decimal imprime. >> Ahora, ¿qué va a pasarsi ejecuto este código? ¿Alguien tiene una idea? ¿Qué haría imprimir? >> LUCAS FREITAS: ¿Cuáles sonque esperaba conseguir. >> LAUREN CARVALHO: Qué hacerqueremos, en primer lugar? >> LUCAS FREITAS: [inaudible] >> LAUREN CARVALHO: 0.1, sí. Pero, ¿qué va a imprimir? >> AUDIENCIA: [inaudible] >> LAUREN CARVALHO: Bueno, no, en realidad. Esto es lo que yo estaba hablando acerca de por quéque hacer un seguimiento muy cuidadoso de sus tipos de datos. Entonces, ¿qué tipo de datos es esto? Es un int, ¿verdad? No hay lugar decimal. 10 es también un int. No hay lugar decimal. >> Si divido un int por un int, me sale unint que no es 0.1, porque enteros no puede tener decimales, pero sólo 0. Debido a un int simplemente truncade los decimales. >> LUCAS FREITAS: Así que cada vez que hacesoperaciones con enteros, se van a conseguir un int como la respuesta. Así que, básicamente, lo que la computadoraestá haciendo, es divide 1 por 10, y que llega a 0,1. Pero entonces es como, espera, esto esse supone que es un número entero, por lo que sólo ignorar el 0,1, por lo que es ahora sólo 0. >> LAUREN CARVALHO: Así que cuando imprimo estafuera, me sale 0,00 en lugar de 0,10. >> LUCAS FREITAS: ¿Eso tiene sentido? >> LAUREN CARVALHO: Eso es algode lamentable, ¿no? >> LUCAS FREITAS: ¿Cómo podemos solucionar este problema? >> LAUREN CARVALHO: Vamos atratar de arreglar eso. He aquí un ejemplo de donde soyrealmente lanzar el 1 y el 10 para los flotadores. Así que ahora, 1 ya no es un int. 1 es un flotador. Por cierto, esto es sólo la sintaxispara cuando se desea lanzar desde un tipo de datos a otro. Usted sólo puede poner el tipo de datos enparéntesis y tener que acaba de preceder el valor que se está echando. >> Así que aquí, estoy dividiendo un flotador porun flotador para obtener una respuesta de flotación. Y sí, esto sería enhecho de imprimir 0.10. ¿Eso tiene sentido? >> LUCAS FREITAS: Así que la conversión de tipos es sólola conversión de un tipo a otro. Así que flotan 1 es en realidad 1.000. No es exactamente esto, pero es algocon decimales que en realidad es 1. ¿Eso tiene sentido? ¿Sí? >> AUDIENCIA: ¿Qué pasa si usted hizo respuesta flotadores igual a 1,0 dividido por 10? >> LAUREN CARVALHO: En realidad estás pasandover que en la siguiente diapositiva. Eso es en realidad nuestra siguiente diapositiva. Esto es realmente un mejor quela conversión de tipos, creo. Así que estos dos son los flotadores con sólonaturaleza del hecho de que se tener cifras decimales. ¿Sí? >> AUDIENCIA: ¿Qué pasa si usted tenía [inaudible] dividido por 10? >> LAUREN CARVALHO: En realidad un flotadordividido por un entero en realidad le da un flotar, por lo que iba a funcionar bien. >> Espera, ¿todo el mundo entiende esto? Debido a que esta va a ser una realidadgran cosa en Pset1, en realidad. ¿Sí? >> AUDIENCIA: ¿Podría usted acaba rápidamenterepasar la parte roja? >> LAUREN CARVALHO: La parte roja, sí. Lucas, ¿quieres? >> LUCAS FREITAS: OK. Así que recuerde que el porcentajees un marcador de posición. Es como un espacio en blanco. Así que vamos a tratar de entender todo lo queque está pasando aquí. Por ciento significa que es un marcador de posición. Entonces usted tiene la f, lo que significa queEste marcador de posición es para un flotador. La última cosa que tenemos aquí es una0.2, lo que significa que quiero tener dos decimales para el flotador. >> Si sólo tuviera% f, que se pondránun montón de lugares decimales. Así que sólo puedo poner 0,2 o 0,1 o 0,5 olo que sea, y que va a poner eso número de decimales. La única cosa es que si se pone como0.100 o .1,000, no es en realidad va a poner todas esas cifras decimalesdebido a que no tiene suficiente memoria tener esa precisión. >> ¿Alguna otra pregunta? ¿Sí? >> AUDIENCIA: Así flotar apenas permiteque vaya más allá de los números enteros? >> LUCAS FREITAS: Si. >> LAUREN CARVALHO: Bueno, un flotador justole permite tener cifras decimales. >> LUCAS FREITAS: Sólo significa que ustedahora puede tener números decimales. >> AUDIENCIA: ¿Por qué nos¡Utilice números enteros? >> LUCAS FREITAS: ¿Por quéutiliza números enteros? Tal vez si usted está contando de 0 a 10,que desea utilizar en realidad un entero. No es necesario utilizar un flotador. En algunas situaciones, no lo haceque en realidad - >> LAUREN CARVALHO: Tal vez ustedno quieren decimales. >> LUCAS FREITAS: Tal vez usted no lo haceque desee utilizar un flotador. >> LAUREN CARVALHO: La otra cosa es,recuerde, tanto poner un flotador y un int tener 32 bits para almacenarlos, y tal vezusted no quiere perder los bits en el decimales. >> LUCAS FREITAS: Si. Así como, sólo pensar en esto. Usted tiene 32 bits para ambosun int y un float. Para un int, todas esas 32 bitsir a la parte entera. Si utiliza un flotador con 32 bits, quetienen parte de esta memoria utilizada para el número, para el número entero,y la otra parte se utiliza para el decimales. Así que eso significa que no se puede llegar aun gran número de carrozas, ya el flotador ya está utilizando una gran cantidad dememoria para los decimales. ¿Sí? >> AUDIENCIA: Esa primera respuesta,qué es exactamente lo está haciendo? ¿Está preparando el valor de float iguala ese marcador de posición para que pueda recordar que en la siguiente línea? Dice flotar respuesta. >> LUCAS FREITAS: Si. Por lo tanto, la respuesta de flotación significa que está recibiendoahora un pequeño cubo en la memoria que posee un flotador, y eso vaque se llamará respuesta. Así que eso es lo que hace la respuesta flotador. >> Y entonces usted dice que en el interior deesto, usted va a poner el resultado de esto. Así que vas a hacer 1,0 dividido por10.0, se obtiene un 0,1, y luego se puso que dentro de la respuesta. >> LAUREN CARVALHO: Así que en una sola línea, estamosdeclaración e iniciación de este flotador llamada respuesta. >> LUCAS FREITAS: Curiosamente, aunqueesto es sólo una línea, está haciendo múltiples operaciones. Es sólo una forma de C de arrendamientoutiliza menos código. Es la misma cosa que el ternariooperador, ¿cómo usted puede hacer un [Inaudible] en una sola línea. En realidad está haciendo lo mismo quehaciendo float respuesta, punto y coma, y entonces la respuesta es igual a esta, pero en lugar deobligándote a hacer dos líneas para que, es como un atajo. ¿Sí? >> AUDIENCIA: Así que si ejecutó esto,sería 0.10? >> LUCAS FREITAS: Si. ¿Sí? >> AUDIENCIA: es la respuesta en realidad código,o es sólo el nombre? >> LAUREN CARVALHO: Estees en realidad código. Esto es lo que vamospara nombrar nuestra variable. >> AUDIENCIA: Así que es sóloun nombre de [inaudible]. >> LAUREN CARVALHO: Si. Yo podría haber dicho flotador x es igual a 1,0. >> LUCAS FREITAS: La cosa es queel nombre de la variable es algo que usted utiliza. Es importante para usted. Para el programa en sí, lo único quelo que importa es el valor que tener en el interior de la cubeta. La razón por la que tiene las variables ynombres de las variables es para que supieras lo que usted está tratando, comoqué tipo de datos que está acceder a la vez. Pero para el propio código, si llamacómo contesta o pregunta o cualquier cosa, más o menos, no importa. No importa. Mientras eres consistente en todos losocurrencia y así se llame algo más. ¿Sí? >> AUDIENCIA: ¿Las variables deir más allá de la función? Al igual que si usted fuera a crear un soporte[Inaudible], ¿podría usted acaba de [Inaudible] contestar de nuevo? >> LAUREN CARVALHO: No. >> AUDIENCIA: [inaudible] >> LAUREN CARVALHO: No. Eso sería fuera del ámbitode esta variable en particular. Y en realidad, eso es algo deinteresante, porque cuando tenemos cosas como bucles o estos sicondiciones, si se declara una variable dentro de otro juego de llaves,en realidad, sólo existe dentro de esas llaves. >> AUDIENCIA: Una última nota sobrelos [inaudible] carrozas. ¿Por qué querrías usar enteros? Esto es más de una nota al margen decualquier cosa, pero el equipo está significativamente mejor en el manejo intsde lo que es en flotadores de manipulación. Es como un orden demagnitud más rápido. Así que si nos manejamos sólo flota,las cosas serían mucho más lento. >> LAUREN CARVALHO: En realidad, no pareceser un problema con los flotadores. >> LUCAS FREITAS: Tipo de la razón deeso, usted puede pensar, es como en binario puede representar enterosponiendo de 0 y 1. >> LAUREN CARVALHO: Eso esla siguiente cosa. >> LUCAS FREITAS: OK. Impresionante. >> LAUREN CARVALHO: Justmantener ese pensamiento. >> LUCAS FREITAS: OK, voy atell you later. >> LAUREN CARVALHO: Antes de llegar a lo queLucas estaba diciendo, el operador precedencia. Este es el sentido común. Ustedes han hecho lo suficiente. Así que, si algo está en paréntesis,que va a pasar en primer lugar. Es la multiplicación tiene prioridadsobre la suma, resta, cosas así. Así que en realidad, solo que nadie quieredime lo número uno en realidad evalúa como? >> AUDIENCIA: 27. >> LAUREN CARVALHO: 27? Sí. >> LUCAS FREITAS: Permítanme darcaramelos a la gente. >> LAUREN CARVALHO: Muy bien. ¿Qué pasa con el número dos? ¿Qué pasa con el número dos? >> AUDIENCIA: 22. >> LAUREN CARVALHO: 22, sí. Yo no sé quién puso eso. El número tres? >> AUDIENCIA: 10. >> LAUREN CARVALHO: 10, sí. Genial. Así módulo. Lucas, ¿quieres explicar modulo? >> LUCAS FREITAS: Modulo es este operadorque en realidad es muy útil para una montón de problemas. Si hago 55 módulo 10, lo que haceesto digamos que quiero dividir 55 por 10. ¿Qué obtengo? Se siente como si estoy en realidad sólohaciendo la división, lo que es lo primera vez que me dieron el número entero? >> AUDIENCIA: 5. >> LUCAS FREITAS: 5. Y luego el resto es 5, ¿no? Así que es como 5 veces 10 más 5. Básicamente, lo modulo hace, se trata dedividir este número por éste, y se ve lo que es el restode la división. >> LAUREN CARVALHO: Por lo que sólodevuelve el resto. Así que el número uno es lo que? 5. El número dos? >> AUDIENCIA: 3. >> LAUREN CARVALHO: 3. El número tres? 0. Y cuatro es 1. Exactamente. >> LUCAS FREITAS: Simple, ¿no? >> LAUREN CARVALHO: ¿Por qué no nos saltamos estasólo porque realmente no tenemos tiempo, y la gente parece entender. Así que aquí está lo que fue Lucassimplemente hablando. >> LUCAS FREITAS: Otra razón por la queusaría enteros en lugar de carrozas es que los flotadores son muy imprecisas. Y ¿por qué son imprecisas? David dijo que para representar un número entero,por ejemplo, se utiliza 0 y de 1 de, ¿verdad? Y entonces usted lo hace básicamente elmultiplicación, hacer todos los operaciones para saber qué número decimalque tiene lugar del binario. >> Lo que sucede ahora si intentoponer decimales? En realidad, por ejemplo, si tengoel número como 3.33333? Se siente como 10 más de 3. ¿Cómo voy a almacenar toda la3 es que tenga después de eso? Es muy difícil, ¿verdad? Usted no puede decirle a la computadora,hey, tengo un 3, y entonces lo haces siempre. En realidad, el equipo no eslo suficientemente inteligente como para eso. >> Así que, básicamente, todo el equipo que hace esque trata de poner tantos dígitos como se puede hasta la memoria que tiene. Así que digamos que va adecir 3.3333, y eso es todo. Así que no es capaz de expresar realmenteprecisamente lo que es float. >> LAUREN CARVALHO: Tenemos un número finitode bits, lo que significa que no cada número decimal va a sercapaz de ser representado con precisión. Y así, en este ejemplo, si estamosimprimir 0.1, ahora estamos de impresión fuera 20 lugares. >> LUCAS FREITAS: Igual que yo estaba diciendoustedes, usted podría poner cualquier número. Pero si usted acaba de hacer los dos lugares,se obtendría 0.10, pero si pones 20 lugares, va a mostrar un montónde 's porque esto es lo que puede poner en la memoria, ¿no? >> Pero aquí, hasta el 0,y luego se acaba de poner un montón de números aleatorios. Esto es algo así como un poco de - >> LAUREN CARVALHO: Esto se debe a que estamosno es capaz de representar esta decimal precisamente con el númerode bits que tenemos. >> LUCAS FREITAS: Y entonces elequipo es básicamente que le da un número de basura. Esto no es en realidad lavalor del número. >> AUDIENCIA: Es lo más cercaque puede conseguir [inaudible] utilizando el [inaudible]. >> LAUREN CARVALHO: Así que la implicación deesto es que vamos a decir que en vez de siendo 0.100014, lo que sea,¿y si era 0,0999 - bien, está bien. Vamos a suponer que la respuesta realA esto se a 0,9999999. Eso es muy cercano a 1, perono es exactamente 1. Es 0,99999. >> Eso significa que si tomo que 0.999,y lo eché a un int, consigo 0. No lo entiendo 1. >> LUCAS FREITAS: Porque recuerda, fundicióndesde un flotante a int, que acaba de ignorar todos los decimales. Usted simplemente ignorarlos. No hay tal cosa como el redondeo al alzao correr hacia abajo cuando encasillado. En realidad, no es esta la función quehace redondeo, que es muy importante, pero que acaba de pensar que cuandohaces encasillamiento, es sólo va a borrar todo. Así que incluso si usted tiene 0,99999, que vaapenas dar 0 si encasillado [Inaudible] un entero. >> LAUREN CARVALHO: Así que ser muy conscientespunto de flotante en precisión, especialmente cuando se iniciautilizar flotadores en Pset1. Pero el paseo a través deberíanadvertirle de que también. >> LUCAS FREITAS: Y en realidad es muyduro, por ejemplo, si lo hiciera float respuesta 1 es igual a 1.0 sobre10 y, a continuación, flotar respuesta 2 es igual a 10,0 superior a 100.0. Ellos son el mismo número, ¿no? 0.1, ¿no? 1 más de 10 o 10 sobre 100. Pero ahora si trato de ver la igualdad,como si la respuesta 1 es igual a contestar 2, Tal vez no es en realidad vaa ser la misma cosa. Así carrozas son un poco como eso. Son como haciendo la igualdad.

Noticias relacionadas