ROB BOWDEN: Este es el sección más cómodo, pero eso no quiere decir que si usted sentir que no estás más cómodo usted no va a aprender cosas aquí. Así que vamos a empezar. ¿Tiene toboganes ir a la derecha en las cosas. Estoy a punto de sólo tomo en este momento? Cambio de las computadoras portátiles. ALLISON: Usted no quiere preséntese, Rob? ROB BOWDEN: Oh, soy Rob. Este es mi quinto año CS50-ción del TF. GABRIEL: Yo soy Gabriel. Estoy TF jefe del CS50. Yo estaba TF año pasado y este año. ALLISON: Y yo soy Alison, y este es mi segundo año CS50-ción del TF. ROB BOWDEN: Muy bien, así que esta cosa de la izquierda, espero que hayas visto antes. Si no porque descargar por ti mismo, usted debe haber visto en la conferencia. Así que este es el aparato CS50, y él hizo un poco de una descripción de la misma en conferencia. Pero, básicamente, es sólo usted se ejecuta una operación dentro de su sistema operativo sistema de manera que podemos darle programas sin necesidad de que preocuparse, oh es esto ir a trabajar tanto en Windows y Mac, o si algunos de ustedes ya están usando Linux, Linux. Es sólo supone que ser un juego común campo para que todos tengan la mismo entorno exacto. Así que si usted no tiene descargado ya, usted debe descargarlo, porque eres va a necesitar para el conjunto de problemas. Y es una de dos gigabytes descarga, por lo que podría tomar un tiempo. En la Universidad de Harvard que va a ir rápido. Aparato Así CS50. Ahora bien, en el principio, vamos a hablar sólo un montón de línea de comandos cosas, y por lo tanto por eso, me refiero a trabajar en este entorno poco por aquí. Y note todas las cosas Yo digo aquí y ahora van a trabajar si estás dentro de una terminal interior del aparato, o si usted está dentro de la ventana de terminal gedit en el interior del aparato. Así esos ambientes son idénticos. Pero yo voy a ir a una tercera ruta. Y notar aquí esto poca dirección IP aquí. Así que usted no tiene que hacer esto, pero esta IP address-- ahora si yo-- excepto está bloqueado por esta cosa. Aceptar, por lo que la dirección IP más en un terminal aquí-- por lo que este terminal a través de aquí es una terminal en mi Mac. Así que este es en ningún modo actualmente asociado con el aparato en absoluto. Y si estás en Windows, entonces usted está va a tener que descargar algo específicamente para este, en particular, la gente tiende usar masilla, P-U-T-T-Y. Así que lo que voy a hacer es tipo SSH y luego de que la dirección IP. Bueno, jharvard en esa dirección IP. Así 192.168.24.220. Este mensaje de miedo, lo ignoran. Sólo tienes que escribir sí. Esto es CS50 en una caja. Se le pide su contraseña. Y así, en muchos de estos contextos en los que que pide la contraseña, [inaudible]. Tenemos un montón de preguntas donde que dice que no es en realidad escribir. No te muestran los caracteres de la contraseña a medida que escribe, en todo caso, para una función de seguridad, ya que si alguien está mirando sobre su hombro y ven estrella estrella estrella estrella, entonces saber que tu contraseña es de cuatro caracteres. Así que la idea es que le preguntará su contraseña, el tipo. No va a mostrar que los personajes, pero en realidad es aceptarlos. En este caso, cada vez que nunca ver una solicitud de contraseña tratar con el aparato, el contraseña va a ser carmesí. Así carmesí. Y ahora aquí dentro de este ventana que está en mi Mac, Básicamente, estoy teniendo la misma visión exacta como en el interior de un terminal en el aparato. Así que usted no tiene que hacer esto. Usted puede hacer todo lo que quieren interior del aparato. Yo casi nunca en realidad hago nada en el aparato. Yo casi siempre minimizar eso y ahora Estoy SSH de trabajo en el aparato. En todo caso, si tener un equipo más lento, usted podría notar una diferencia. Hago esto porque prefiero esta ventana terminal. Tiene algunas características como Puedo dividir la ventana, y ahora puedo SSH en a través del aparato. Tengo dos SSH está pasando a la vez. Si su computadora es particularmente lento y se está trabajando en el aparato, y te das cuenta de esto es realmente perezoso, lo que sea. Tiende a ser mucho más rápido si eres SSH-ed en. Pero por lo demás se puede trabajar de cualquier manera. AUDIENCIA: ¿Qué significa SSH? ROB BOWDEN: conchas de seguros, algo por el estilo? ¿Qué significa SSH? GABRIEL: shell seguro. ALLISON: Es simplemente la cáscara segura. ROB BOWDEN: shell seguro. Es un protocolo que es usted-- un protocolo seguro, de manera encriptada. La gente no puede espiar la red y ver lo que usted está diciendo a nada estás de SSH-ed a. Y de hecho, en el Olden días de CS50, por lo que en 2009 cuando yo era un estudiante de primer año, la forma en que usted trabajó en los boletines de problemas CS50, usted era SSH-ed a algún servidor que nos dio el acceso a, y que trabajó allí. Así que usted no tiene este aparato gráfica. No tenías gedit. Usted no tiene todas estas cosas que usted podría visualmente apuntar y hacer clic. Había que trabajar en esta interfaz. Prefiero trabajar en esta interfaz. Así que parte de lo que vamos a ir a más en este momento son un grupo de la los comandos que usted debe empezar a familiarizarse con tan que avanza en el curso. Y, honestamente, una vez que acostumbrarse a ellos, es mucho más rápido para trabajar en este entorno de lo que es trabajar con el buscador, arrastrando y haciendo clic en las cosas. Así que aquí estamos. Ahora sólo SSH-ed en, y así el defecto que ubicación: vio algunos de estos comandos en la clase, pero vamos a repasar todos ellos de nuevo. La ubicación predeterminada estamos en es el directorio de inicio. Y directorio, sólo otra palabra para la carpeta. Así que estamos en el directorio principal. Escriba ls, listar los archivos en este directorio. Evidentemente he creado un blah.c anterior. Así que tenemos un directorio del escritorio. Se nota el resaltado de sintaxis? El resaltado de color azul claro indica un directorio y el blanco directo indica simplemente un archivo sin formato. Así que no va a haber algunos otros colores que usted ve. Un archivo ejecutable es probablemente va a ser de color verde o algo por el estilo. Aceptar, por lo que estamos en el directorio principal. Ahora bien, si yo quiero entrar en una diferente directorio, cd es el comando que quiero. Así que cambia de directorio, y entonces usted pasar el nombre del directorio que desea entrar. Así que aquí tenemos cuatro opciones. Yo puedo entrar en las descargas, y ahora vemos aquí se ha actualizado este paréntesis que decir que estoy en ~ / descargas. Entonces, ¿qué es tilde? Es una forma abreviada de su directorio personal. Así que casi todo lo que haces va a ser con respecto a su directorio, y pwd es sólo un comando Yo uso una vez en un año que sólo imprime el directorio actual. Y por lo que se ve aquí que ~ / Descargas realmente resuelve a / home / jharvard / descargas. Así que / home / jharvard es mi directorio personal. Así que podemos cd punto punto. Ahora punto punto es un directorio especial que siempre se refiere a un directorio arriba. Así que si estoy en ~ / descargas, entonces punto cd punto me va a llevar a tilde. ¿Qué pensamos punto punto cd me va a llevar a ahora? Me va a traer a / home. Así tilde por el directorio de trabajo de impresión, Yo estoy ahora / home / jharvard. un directorio desde que, Ahora dice aquí / home. Ahora punto punto cd. Ahora estoy en el directorio raíz, y no puedes hacerlo de nuevo. Te quedas en la directorio raíz para siempre. El directorio raíz tiene un montón de cosas que, si desea buscar en, usted puede. Por ejemplo, si me voy en bin, que contiene todos estos binarios, tales como ls, y cd, y todas esas cosas. Así que estos comandos tienen que existir en algún lugar en el sistema, y está en el directorio / bin. Pero casi todo lo que haces es va a ser de su directorio personal. Y cd sin argumentos de ningún tipo, se podría decir cd ~, no es necesario. cd va a traer usted de nuevo a su directorio personal. Una última. cd - va a traer de vuelta a el último directorio que usted estaba en. Así que sólo cd'd dos veces seguidas, así que mi último directorio era el directorio de inicio. Si voy a recortar bin, y ahora vamos a ir hacia arriba y hacia el usuario. Cuota de usuario. Vamos a ir a la cuota de usuario. Ahora estoy ahora en la cuota de usuario. cd -, de vuelta en bin. Así que esto se pone particularmente útil cuando tener-- y que va a cambiar. Así que la cuota de usuario, de nuevo bin, compartir bin. Así que esto se pone útil. Usted puede notar que tiene muchos, muchos, muchos directorios anidados. Y que quieres hacer algo rápida real en un directorio superior. Usted va a ese directorio, haga cambios y cosas por el estilo, y ahora quiere ir volver a donde estabas. cd -. Siempre estoy frustrado cuando se me ocurre ir a ese directorio yo quería hacer el trabajo en. Siempre me siento frustrado cuando lo hice en dos pasos en lugar de un solo paso, porque eso significa que cd - va poner en esa ubicación intermedia lugar de donde quiero ir. Así que vemos todos los archivos de lista. Sabemos cómo moverse hasta el momento. Así que ahora vamos a hablar de la edición de archivos. Así que en este curso, usted es casi Siempre se espera que utilizar gedit. Si quieres, puedes dar el siguiente paso y empezar a aprender un texto de línea de comandos editor. Así existen varias opciones. Y los que son, probablemente, va a ser de interés para usted, tenemos Nano, Vim, Emacs y. Así Nano es los principiantes línea de comandos editor de texto. Así Nano vamos en blah.c he creado antes. Es sólo este archivo C estándar. Y ves un montón de cosas pasando en la parte inferior de la pantalla, y al parecer blah.c contiene el código C. Así que en este editor en particular, lo que está diciendo en el bottom-- ahora este símbolo de intercalación, vemos este ^ G, X ^, ^ S. Así que en casi todos contexto en el que se ve, es posible que vea ese símbolo de intercalación en otros lugares en línea, sobre el desbordamiento de la pila, algo por el estilo. Casi siempre se refiere a controlar. Así que para salir de lo que quiero hacer Control de Control de X. X, sale. Y puedo usar mi flecha teclas para moverse. Note que no puedo apuntar y hacer clic fácilmente. Es necesario usar la flecha teclas para moverse. Puede haber un entorno para apuntar y hacer clic. Pero vamos a hacer algunos cambios. Ahora el Control X para ir de salida. Va a decir Guardar búfer modificado. Ahora el indicador, y para sí, n para no. Control C para cancelar. Sólo voy a decir que sí. Nombre para escribir archivos. El valor por defecto es el archivo que ya es. Hit Intro. Okay. Ahora he acaba de editar ese archivo, guardado, y se cambió. Así Nano es el más fácil editor de texto acostumbrarse. Las alternativas son Vim y Emacs. Esos son los editores de texto de nivel superior que tienen una curva de aprendizaje muy empinada. Así que mi preferencia personal es Vim. Y tiene una amplia variedad de opciones. Y una vez que te acostumbras a él, que nunca quiero ir a ningún otro editor de texto, ya que sólo tener tantas cosas disponible para usted en estos, pero se necesita una muy mucho tiempo para aprender. Así que tal vez lo que desea forzar a ti mismo en este momento para acostumbrarse a él, pero yo diría que vale la pena. Pero es difícil. Y entonces Emacs. Yo siempre lucho en Emacs porque Yo sé hacer absolutamente nada. Al parecer, Emacs no es por defecto instalado en el aparato. Probablemente vamos a añadir que como unas instalaciones por defecto. Una vez que aprenda una de Vim o Emacs, no hay ninguna razón de peso para alguna vez aprender del otro, pero es un estilo completamente diferente. Aceptar lo que es la edición de archivos de texto. AUDIENCIA: Si a usted le toca Vim en este momento, cómo hacer nosotros-- ROB BOWDEN: Hay múltiples modos en Vim, y hay toda tutoriales sobre el aprendizaje de Vim. Así que si quieres pasar a ser en modo de inserción con el fin para escribir texto, que se puede escriba que de diversas maneras, pero i es la manera de entrar en el modo de inserción. En o salir de cualquier daño especial el modo en que se encuentre, sólo escapar. Y sólo en bash Escape a conseguir de cualquier modo anidados en su. No está mal, ahora estoy de vuelta en el modo normal. Y así, en modo normal, de dos puntos. Usted ve que aparece en la parte inferior. Y entonces q. Así q va a dejar de fumar si usted ha hecho cambios, que yo-- ¿He hecho cambios? He hecho cambios al parecer. Así que si usted ha hecho cambios, que va a dice que usted puede poner un signo de exclamación. Voy a llamarlo una explosión. Así que usted puede poner una prohibición a sólo dejar sin hacer nada, o wq salvará de colon y dejar de fumar. Así w en general es escribir. Así que escribir el archivo. Puedo escribir y dejar de fumar. O usted podría tener sólo Slam qx, q explosión sólo para salir de allí sin de cualquier cambio que hayas realizado previamente. Muy bien, así que ahora vamos a vaya-- podemos crear archivos. Vamos a comenzar la eliminación de archivos. Y sólo voy a tirar en uno nuevo comando rápido, toque. Así que tocar foo. Barra táctil. Toque Baz. Si ls I, ahora vemos que existen esos archivos. Son completamente vacío. Así que es sólo un toque fácil camino de uno, [inaudible]. Dos, técnicamente sólo a estado ella, que actualiza las marcas de tiempo. Así que cualquier archivo que se crea tiene una marca de tiempo asociado con ella. Así Baz fue creado en 14 de septiembre a las 16:21. Es ahora 16:22, por lo que si Toco baz nuevo, ver que era más baz recientemente modificado a las 16:22. Pero por lo demás casi nunca mirar las marcas de tiempo de archivos. Así que toque, aquí sólo estoy usando para crear algunos archivos rápidas. Muy bien, así que ahora es el rm comando que nos preocupamos por aquí. Y podemos rm abucheo. Diga eliminar abucheo archivo vacío regular. Y podemos escribir y, y ahora es quita. baz rm. Retire archivo vacío ordinario Baz y tipo n para no. Ahora no es removido. Así bar y baz todavía existe. Foo se ha ido. GABRIEL: Sigue hablando. ROB BOWDEN: Gran. Así que el mensaje molesto aquí, quitar empty-- regulares ¿qué estás haciendo ahí abajo? Retire archivo vacío regular. Así que si no queremos ser molestado por ese mensaje, podemos lanzar en este -f bandera, y por lo que es la fuerza. Y ahora si me rm -f, que no va a dices qué quieres eliminar este archivo. Simplemente va a hacerlo. Y ls, no veo bar allí. Ahora que es un potencialmente comando peligroso. Se tiende a no demasiado malo. Volveremos en un segundo cómo que puede ser realmente peligroso. Y vamos a crear algún directorio temporal. mkdir, otro comando. Así que es un comando mkdir que hace que un directorio. Y ahora por ls vemos esta bonita luz azul destacó directorio temporal. Puedo cd en temp. Y puedo mkdir foo. cd en foo. bar mkdir. cd en la barra. Así que vemos que podemos obtener fácilmente en algunos de anidación muy profundo. Ahora, ¿cómo puedo eliminar un directorio? rmdir. Así que si yo sólo trato de recta rm, como lo hicimos con un archivo normal, bar rm va a decir no se puede quitar la barra. Es un directorio. Hay un comando especial para la eliminación de directorios, algo así. Así barra rmdir. Ahora bar se ha ido. OK, así que rmdir yo más o menos nunca uso. La razón being-- ahora vamos a hacer una barra de archivo normal aquí. Boo Así rmdir. rmdir. Error al eliminar foo. Directorio no está vacío. Así que no puedes usar eliminar dir en un directorio que tiene las cosas en ella. Así que usted tiene algunas opciones. Usted puede ir a ese directorio, quite todo manualmente, y luego salir y rmdir directorio. Eso obviamente suena molesto. ¿Qué pasa si hay miles de archivos en allí? Bueno, podrías rm *. Hablaremos de * en un segundo. Básicamente, significa todas las cosas. Pero mejor aún, -r tan rm. Así rm -r-- en un montón de contextos, -R significa recursivo, que vamos a hablar acerca de lo que medios recursivos en varias semanas. Pero, básicamente, significa travesía la totalidad de este directorio y eliminar todo. Foo -r Así rm va a decir descender al directorio foo? Sí. Retire archivo foo / bar vacío regular? Sí. Retire directorio foo? Sí. Así que ahora foo y todo en su interior se ha eliminado. Ahora que se puede conseguir especialmente molesto cuando-- vamos a tocar 1, toque 2, toque 3. Podría tener un montón de archivos. Si quisiera, podría crear miles de archivos en aquí. Y foo rm -r va a ser bastante molesto. Sí, sí, sí, sí, sí, sí. Con muchos más archivos que ver rápidamente cómo muchas veces Tendría que escribir sí. Bueno, acabamos de ver antes cómo podemos deshacerse de la necesidad de escribir, sí, -f. Así mkdir foo foo cd táctil 1 2 3. Aceptar, por lo que rm -rf foo va a elimine a ciegas foo por completo. No pronta. No nada. Foo se ha ido. Así que yo tiendo a usar este comandar todo el tiempo. Dicho esto, se trata de una comando muy peligroso, porque si hago algo como esto, no le pedirá. Se ha ido. Y sucede con bastante frecuencia, e incluso en los cursos de nivel más alto de CS. A veces vamos a ver algo que alguien dice que accidentalmente nuestra rm rf-ed mi casa directorio y todos los de mi conjunto P se ha ido. Y es devastador, pero no hay bote de basura. No hay no hay nada para que usted pueda recuperar. Simplemente se ha ido. Peor aún sería algo así como rm -rf /. Así que acabamos de discutir ese directorio raíz. Lleva a cabo la totalidad de la archivos en su sistema. Las cosas tienden a ser bastante desordenado cuando se quita cosas como ls, y cd, y todo eso. AUDIENCIA: ¿Cuál es la diferencia entre rm, rf, y rm * ROB BOWDEN: Así rm * - ALLISON: pregunta era ¿cuál es el diferencia entre rm, rf, y rm *. ROB BOWDEN: Así rm *. Estrella en medios en general todos el contenido de este directorio. Tratar de pensar en otra formas de mostrar la estrella. Bueno, en realidad la estrella general significa encontró ningún patrón. Así que si tengo un archivo llamado dog1, dog2 tocar, tocar cat1, toque cat2. Así ls * 1 se va a imprimir y cat1 dog1, porque esa estrella puede ser llenado en el con-- uno tiene que estar allí, pero la estrella puede ser gato o perro. Es un comodín. Esa es la palabra que estoy buscando. Comodín. O podría ls perro *, y Estoy llegué a ver dog1, dog2. Así que estos son una lista de los archivos que coincide con ese patrón particular. Puede usar ls de esta manera. Ls * estrellas coincide con cualquier cosa. Así que va a imprimir todos el contenido de este directorio ya que todos ellos coinciden. No va a imprimir cualquier cosa en los directorios de nivel superior. Si tengo un subdirectorio, foo, y tocar 1 2 3-- por lo que ahora si rm * estrellas, eliminar cat1, cat2, dog1, dog2. No se puede eliminar foo. Es un directorio. Así estrella se expande a toda la archivos en el directorio. Así que técnicamente rm * es como decir cat1 rm, cat2, dog1, dog2, foo. Mientras -rf rm, técnicamente estrella haría logramos lo que queremos, pero rm -rf-- si salgo de esta directorio, temp -rf rm, eso va a ir en la temperatura y eliminar de forma recursiva todo. Así estrella es separada en que esa Se entiende así que esta cosa por-- que estoy corriendo, esta cosa que me está motivando para los comandos y luego ejecutar y hacer ellos, me llaman a esto mi concha. Y así esta concha es en sí mismo un programa. Y si yo quería, podría funcionar en / bin / bash. La cáscara se llama bash. Y ahora nos damos cuenta de algo ha cambiado ligeramente, y eso es porque mi configuración para la cáscara son algo diferentes. Pero ahora estoy técnicamente correr una concha dentro de mi caparazón original, y puedo salir de esa cáscara, y ahora Ya estoy de vuelta a mi concha nivel superior. El propósito de decir que es-- la estrella. Así que la estrella es algo entendido por bash. Así -rf rm, bandera -rf es entendido por sólo rm. Se sabe que cuando usted pasar un -rf que la quieren quitar de forma recursiva todos los archivos sin preguntar. La estrella se entiende algo por bash que cuando dices rm *, fiesta no va a decir Hey rm *, retire estrellas. Bash va a decir rm * eliminar cat1, cat2, dog1, dog2. Se va automáticamente a ampliar todos los archivos en el directorio. Y del mismo modo tilde es otra símbolo que Bash entiende. Cuando dices cd ~, golpe expande que a su directorio. Otras preguntas hasta ahora? Aceptar así que vamos a empezar a ir rápido. La implementación del tabulador. Solo para tirarlo por ahí. Mucha gente no lo hagas darse cuenta de esto existe. Así que si escribo cd dow, yo quiero entrar en las descargas. No necesito escribir nloads. Yo sólo puedo golpear Tab. Por lo tanto, reconoce que Dow es un prefijo que no coincide con nada lo demás en este directorio, por lo que se completará por usted. Ahora puedo entrar. También hago que de forma recursiva. Foo Así mkdir. Vamos a entrar en foo. bar mkdir. Así que volver a mi casa directorio, puedo ver las descargas. Ahora pestaña golpear de nuevo, pasando automáticamente a rellenar foo. Es el único directorio. Ficha Golpear de nuevo, de forma automática va a llenar en el bar. Así que ahora estoy en (~ Descargas / foo / bar). Así que esta implementación del tabulador, cuando llegué a las horas de oficina, y estoy de pie sobre el hombro de alguien, y están pasando rm D-O-W-N-L-O-A-D-S, me estoy muriendo. Sólo pestaña, pestaña, pestaña, pestaña. Así que definitivamente ficha utilizada. Y del mismo modo y abajo, un montón de gente sólo que pasó con nunca han golpeado arriba y hacia abajo. Va a pasar por la anterior comandos, por lo que si usted acaba de ejecutar algo, y desea ejecutar de nuevo, sólo tiene capacidad hasta llegar a ella. Okay. Tan rápido, algunas otras cosas. Volvamos a temp. Vamos a crear algunos archivos. Así que aquí, sólo soy ir a la lista de algunas palabras. perro, gato, miau. Vamos a hacer de perro, pescado. Así que ahora es un representante muy comandos útiles que utilizar para buscar en toda archivos de un texto en particular, y técnicamente se puede hacer realmente expresiones complejas para que ésta coincida. Así que aquí, si me grep, y lo Qué quiero buscar? Digamos que estoy buscando para los gatos, y Quiero buscar todos estos archivos. Así que ¿cómo lo hago todos estos archivos? Estrella. Así que en un archivo, tengo gato. Probablemente podría tener llamado algo mejor, porque eso parece números de línea o algo así. Pero en el expediente que tengo una línea con el gato. En el archivo de dos tengo una línea con el gato. Así que ahora puedo mirar un archivo dentro y ver oh sí, ese archivo tenía gato. Archivo Aviso tres no fue igualada porque el gato no está ahí. Puedo grep para maullido. Sólo presentar dos tiene maullido. Así que esto se puede combinar, de nuevo, con -r, que como he dicho antes con frecuencia significa recursivo. Y por lo que puedo venir aquí, grep -r para cualquier instancia de-- vamos a editar éste sólo para tirar un gato en allí. Así grep -r para cualquier instancia de gato lo largo de este directorio. Y lo hará de forma recursiva buscar los subdirectorios. Así que en baz, hay gato. En temp / 2, hay gato. Y en temp / 1 hay gato. Así que eso es buscar dentro de archivos. Ahora usted también puede usar un hallazgo. Y por lo que encontrar es específicamente sobre en busca de archivos con un nombre determinado. Así que vamos a hacer un poco más. Vamos a entrar en las descargas. Toque dog1. Toque cat2. Toque cat_dog. Toque catcat. Por eso quiero encontrar todo archivos con perro en el nombre. Así que encontrar, y para el más largo el tiempo nunca me acordé cómo encontrar funcionaba, hasta que, finalmente, leer algo que lo hizo tan clara. Así que encontrar, automáticamente recursiva. Usted no tiene que pasar una -r. Así que encontrar puntos. No hemos hablado de punto todavía. Mientras punto punto siempre significa un directorio arriba. Dot siempre significa el directorio actual. Así que podría rm -r en el punto misma manera que puedo rm -rf *. En última instancia, lograr la misma cosa. rm -rf punto se va a quitar en todo el directorio actual. Bien, que yo no quiero hacer allí. Pero encontrar puntos. Así que buscar de forma recursiva la corriente directorio, y ahora todo después de esto hay un montón de banderas eso usted utilizar para excluir las cosas desde el regreso. Así que encontrar puntos devuelve todo lo que puede encontrar en el directorio actual. Esos son todos los archivos buscando recursivamente. Vamos a ver algunas de las personas en un segundo. Pero en caso de que usted se está preguntando cómo lo hago que, de modo de comando K, por lo menos en mi terminal en el Mac despejó. Control de L generalmente desaparece para cualquier tipo de terminal. También puede escribir claro. Y si alguna vez tienes en un extraño scenario-- que me ha pasado un par tiempo-- donde los colores de sus indicaciones están todos en mal estado, o que no son capaces de ver nada siendo tecleado cuando estás escribiendo, porque a veces como el color de fondo se establece el mismo que el color de primer plano y ahora usted no puede ver los tipos de letra. Restablecer es algo que sólo se restablece a el fondo negro por defecto, frente blanco, o lo que sea se establece que lo hagan. Entonces, ¿dónde estábamos? Encuentra puntos. Así que ahora todo este pasado punto restringe los resultados a algo que coincide el patrón dado. Así que aquí Quiero buscar todo con el nombre de gato. No tengo nada. ¿Por qué es ese el caso? Bueno, sólo estoy buscando algo con exactamente el nombre de gato. Si quiero buscar algo que tiene un patrón, y cat-- las cotizaciones técnicamente no son necesarios, pero yo les estoy lanzando en ese país. Así que ahora que encuentra catcat porque esa es la única cosa que tiene algo de arbitraria patrón seguido por gato. Puedo poner el gato *, y ahora encontrar catcat, cat_dog, cat2, porque esas son todas las cosas con el gato al principio seguido por nada. Puede combinar esto. Si desea buscar todos los archivos de C que usted tiene, usted puede ser que haga * .c. Hemos blah.c aquí. Así que eso es una obra de búsqueda. Usted puede buscar. Tiene un montón de banderas para más restricciones. Y uno de ellos, digamos -d. Así obsoleto. Oh, eso no es lo que quiero. No -d. Escriba d. Así que encontrar puntos - tipo d. Así que lo que acabas de hacer es que estoy buscando para todos los archivos del directorio actual con A-- d significa Tipo de directorio directory--. Esto devuelve todos los directorios en el directorio actual. Y todo tipo F es normal archivos, todos los directorios no. Así que eso es sólo una ejemplo de otras maneras puede restringir la búsqueda otra que sólo el nombre del archivo. Ya han pasado 30 minutos. Aún así va. ALLISON: Voy a brisa a través. Se va a estar bien. ROB BOWDEN: Así que algunas otras cosas. Ahora Bang, signo de exclamación. Así que por lo general significa: bien, vamos a ver un ejemplo. Así! F, lo que se va a hacer? Bueno, parece tener repetido hallazgo de tipo punto f. ¿Qué pasa! G? Eso sólo grep gato -r *. Así que golpeas puede utilizar para repetir un comando de hecho recientemente. Así que si escribo! Gre, que va a volver a ejecutar los comandos que comenzaron con gre más recientemente. Y se puede ver todos estos comandos con la historia. Así la historia. Estas son todas las comandos me he encontrado hoy. Y así, no es, literalmente, restringido a día de hoy, pero yo sólo he utilizado este aparato a partir de hoy. Es su totalidad de la la historia de su shell bash, excepto que se corta en algún momento. AUDIENCIA: ¿Qué pasa si lo hace historial de comandos [inaudible] y un error en el resultado todavía se imprimirá el-- ROB BOWDEN: Sí, si hay una error en uno de estos commands-- así que vamos a decir, que es un comando de error no encontrado. Sigue apareciendo en la historia. Bien. Otras preguntas sobre cualquier cosa? Así que eso es explosión. Ahora, comando realmente útil, hombre. Así que le da la manual para un comando determinado. Así que digamos que man ls, por lo esto me está mostrando ls. En él se enumeran los contenidos de directorio. Y aquí es donde yo veo que hay estas son las diversas banderas que existen. Así que vemos que ls -l existe si tuviéramos que leer eso. ls -l me da esta lista completa de la directorio con quién posee el archivo, el tamaño del archivo, la la marca de tiempo modificado. Así ls -a es otro que te pueden utilizar realmente algo frecuencia. -al es mi bandera más común de este últimos ls. Así -a, notar que hay mucho más archivos que un simple ls. ls -a. ¿Qué hay en común con todos estos archivos? Comienzan con un punto. Así que esto es una convención en Linux que los archivos que comienzan con un punto están ocultos. Así que sólo significa que cuando acabamos de ls rectas, o que estamos buscando este directorio usando el equivalente buscador, o la de Windows Equivalente Explorer, que no quieren ver estos archivos punto. Ellos sólo contaminan la visión de las cosas. Así que ellos están ocultos a menos que usted específicamente solicitarlos con algo así como -a. Así que puedo cd en .local, y veo que es en sí mismo un directorio con un directorio compartido, y aplicaciones, y bla, bla, bla. Así que punto, los archivos sólo están ocultos. Aceptar, por lo que otros más importantes. Tengo un par que puedo saltar. Vamos a hablar de verdad sobre rápida las cosas de redirección de archivos. Así que hay una serie compleja totalidad de las cosas que puedes hacer con ellos, pero sólo para verlos, digamos, eco. Otro comando. Comando realmente tonto. Todo lo que hace es imprimir lo que le digo que lo haga. Así que echo hola. Simplemente se hizo eco de saludar a la pantalla. ¡Hola, mundo. Ecos hola mundo. Así que un comando o una símbolo que entiende fiesta es mayor que este símbolo, y que es la salida a un símbolo de archivo. Así que si la salida I a este foo, hay ahora un archivo llamado foo, en el interior de que es hola mundo. Entonces noto que cuando me hago eco hola tubería mundo en foo, que no echo hola mundo. En su lugar, se puso en archivo foo. Y otro comando sólo para tirarlo a usted, gato. Esa es una manera fácil de simplemente completamente listar el contenido del archivo de modo que yo no tengo que abrir un editor de texto para verlo. Así el contenido de la archivo foo son hola mundo. Y pude blah.c gato, los contenidos son esto. Una vez más, estos son los comandos que, no lo hacen esperan que usted los tiene todos memorizan. La idea es que los he visto. Tal vez usted está trabajando en algo, y ya está como que estoy harto de abrir este archivo. Ojalá pudiera mirar en el contenido real rápido. Usted podría hacer eso, entonces mirar hacia atrás y decir oh recordar algo así como lo que existe, y es el gato. Así que va a un archivo. Ahora no hay realmente ninguna buena ejemplo de la lectura de un archivo todavía. ¿Qué es algo que toma algo estándar en? Cualquier simple comando de Linux? Cuando lleguemos a la misma, en un par semanas todos los piece-- bien, Esta semana tienes una pieza en la que empezar a tomar la entrada del usuario. Y por lo general se escribe que la entrada en el teclado. En lugar de escribir que de entrada en el teclado, en lugar usted puede canalizar desde un archivo de modo que cuando lo hace Mario, ./mario, tubería desde cualquier archivo determinado, y que va a ejecutar el programa de mario. Sin esperar la entrada en el teclado, sino que es sólo va a leer el líneas del archivo foo. Así mayor que foo pone en el archivo foo, y menos de foo toma las cosas a partir del archivo foo y lo usa como entrada a este programa. Y sólo para verlo, también podríamos eco foo bar baz, y entonces, en lugar de uno mayor que, vamos a hacer dos en foo. ¿Qué quiere que haga? Simplemente añade al archivo. Así que en lugar de aviso si yo echo en bla foo y luego foo gato, es sólo bla. Así que cuando la salida a un archivo, sobrescribe completamente ese archivo. Si lo que desea es añadir, doble [? grado. ?] Y por último, es la tubería. Pipe Obtiene mucho más complicado, donde que toma la salida de un comando y la inyecta a la siguiente comando. Así que un poco de cosa común, la historia. Así, uf, no quiero ver esta. Muéstrame todos los comandos en mi historia donde grep-ed por algo. No, eso es confuso. Muéstrame todos los comandos dónde encuentro. Todos encuentran los comandos que jamás corrió. Así la historia. Ahora salidas de historia a la detectar esta lista de comandos, pero yo no quiero salida a la pantalla. En su lugar voy a tubería en grep. Así que vamos a grep para todas las instancias del hallazgo. Así que ahora en lugar de tomar grep la entrada, en lugar de-- grep es capaz de manejar como input-- estamos usando grep un poco diferente aquí. Así que en lugar de escribir la lista de cosas que querían buscar y dijo grep está tomando como entrada. Así que si yo sólo grep encuentro, que espera a que yo escribo cosas. Así gato hola encontrar. Hola. Encuentra. Note que cada vez que escribo encontrar reconoce que he escrito hallazgo. Así que en lugar de esto, lo hará archivos de búsqueda para encontrar. Así que la historia ahora va a generar una lista de todos los comandos. Estamos poniendo que la producción, y estamos alimentándolo a grep, y lo que es escupir todas las instancias de descubrimiento. La razón por la que dijo que estaría confundiendo es si yo-- es todavía confuso. Si yo grep grep. Observe que es casi siempre que muestra el comando que acabo corrió porque ese comando sí tiene grep dentro de ella. OK, así que cualquier pregunta sobre cualquier cosa? Y voy a transferir la vuelta en este punto. Esperemos que este es un buen visión general de todos los comandos que usted no necesita tener memorizan, pero éstos constituyen un sólido 95% de lo que hacer en la línea de comandos. También hay que tener en cuenta que la línea de comandos sí, golpe es un lenguaje de programación, y así, cuando te pones a ello, usted podría querer hacer cosas realmente complejas. Y por lo que tiene cosas como bucles, e IFS, y todos aquellos que te vas a acostumbrar a con sus lenguajes de programación. Pero eso es más allá de la ámbito de aplicación de esta sección. OK, así que no hay preguntas? ALLISON: Ninguno? GABRIEL: ¿Vas a-- ALLISON: puedo hacerlo en la mía, si quieres. Podemos ver qué pasa. ROB BOWDEN: Off a Allison. ALLISON: Woo. Usted es un acto difícil de seguir, Rob. ¿Usted quiere que yo enciendo con usted? O que tienes, en Aceptar. Voy a tratar de no bastante ser tan largo allí. Vamos a ver si esta voluntad trabajar la manera que yo quiero que haga. Tal vez? Jaja! Sí. Así que sólo voy a ir muy rápido a través de variables, bucles, condicionales, y un poco en el compilador. Si usted tiene preguntas en cualquier momento, por favor me detenga. Estos chicos me van a recordar a repetir tu pregunta en el caso que me olvide, pero no debe ser demasiado malo. Así las variables, sí. No tenemos a nadie de su Piezas de Scratch aquí. Estoy seguro de que la mayoría de ustedes, si usted tenía algún tipo de juego que creó con Scratch, que tenía hacer un seguimiento de algo así como la puntuación, o el tiempo, o algo por el estilo. Así que los de color naranja brillante piezas que vemos allí son sólo la forma de los arañazos las variables, y que sin duda ser el uso de variables a través de sus programas. Si no lo eres, no estoy realmente seguro de lo que estás haciendo. Pero de todos modos, gran cosa, la definición de las variables. Con C cada variable tiene tener un tipo declarado, así que le di una muy una general en la parte superior. Así que usted tendrá su escribir y luego lo que sea decide llamar a su variable. Así que en este caso, el tipo en su lista de variables. Tenemos tres ejemplos. Char de algún grado, de un A, que es lo Estoy seguro de que todos quieren para obtener en esta clase. Puede definir múltiples variables en una línea siempre y cuando todos son del mismo tipo, que es nuestro segundo ejemplo hay donde usted tiene tres las variables, x, y, y z. Son todas las carrozas. Y entonces usted puede también, en este último ejemplo con int puntuación y número de los equipos, se puede inicializar ellos allí mismo. Así, en el ejemplo medio donde nos sólo tienes flotador de x, y, z, los que aún no se inicializan. Ellos no tienen ningún valor. O tienen valores de basura. Y si usted intenta y se utilicen, el compilador gritarte. Tienes que tanto declarar y inicializar sus variables. Así que en este último, que estamos haciendo ambas cosas. Estamos declarando las variables de la puntuación y número de equipos, y estamos inicializando ellos, dando ellos sus valores iniciales de 7 y 4 respectivamente. Enfriar. Todo el mundo bien? Impresionante. Aceptar, por lo que algunas convenciones. Si ustedes han leído a través del estilo 50, éstos son sólo las cosas que nos gustaría para a implementar en su estilo. Nombres tan significativo. Si usted comienza a llamar a las cosas acaba de x, y, y z, especialmente como te metes en más largo programas, eres probablemente va a confundir a ti mismo y ser como lo es esta variable se refiere a. No tengo idea de lo que esto significa. Así que si se supone que debe mantener una puntuación, lo llaman la puntuación. Si se supone que debe mantener alguna respuesta o dar lugar, darle un nombre como ese. Para bucles, que vamos a entrar en en la siguiente diapositiva, variables de una sola letra están bien. ROB BOWDEN: I, J y K son sólo convenciones para los bucles que todo el mundo les espera a ser llamado i, j, y k. Usted puede llamar a ellos-- veo fila columna o fila a veces llamada por dos bucles anidados, y eso es también una especie de estándar. Pero i y j es totalmente conocido. ALLISON: Sí, y j eres totalmente bien. En aras de la claridad como en algunas de sus series P, podría tener sentido tener más cosas descriptivos en allí sólo para realizar un seguimiento de la misma. Pero creo que i, j, k y creo la gran mayoría de nosotros todo el uso. ROB BOWDEN: Con éstos convenciones, por lo que el estilo es importante. Es uno de los cuatro ejes en la que usted está clasificado, y es tan fácil de ir más el P fijado en el final y asegurarse que no hay errores estilísticos. Así que asegúrese de que está correctamente tabulación. Asegúrese de que sus variables son nombrados. Deja algunos comentarios. Es muy fácil de conseguir esos puntos. Usted no tiene que pensar en cualquier cosa con el fin de conseguir esos puntos. Usted no tiene que descifrar nada. Es simplemente haciendo que se vea bonito. ALLISON: De hecho, tener estilo 50, que le dirá dónde te estás metiendo hasta si te estás metiendo hasta en el estilo y le dirá exactamente lo que debe arreglar y cómo tiene que arreglarlo. También está a sólo bueno mencionar que es la política de curso que si usted está en la oficina horas y su código es un desastre, podemos rechazar a ayudar que hasta que se vea más bonito. Así que empieza a salir a la derecha, mantener estilo coherente, también sólo vamos a hacer sus vidas mucho más fácil cuando usted está tratando de ir a través de depuración. Si usted está tratando de averiguar donde se está perdiendo una llave y están por todo el lugar, que está sólo hacer su propia vida más difícil. Así que estar en consonancia con el estilo. Te prometo que va a hacer su vida más fácil. Se va a hacer la vida más fácil. Todo el mundo será mucho más feliz. Y eso es lo que quieres. GABRIEL: Su grado será mayor. ALLISON: Sí, y su grado. Si el TF es como tú, tiende a ser favorable. Muy bien, y luego sólo el segundo punto aquí. Inicializaciones consistente. Así como hemos visto, se puede declarar e inicializar las cosas. Múltiples variables en la misma línea. Una cosa que nos gustaría que no que hacer es declarar algunas variables y no inicializar ellos en el mismo línea que está inicializando otros. Así que en caso de que hizo no tiene sentido alguno, tenemos el ejemplo aquí donde estamos declarando ints en las variables de cuartos monedas de diez centavos y peniques, pero cuartos y centavos no tienen ningún valor inicial. No los hemos inicializado, pero justo en el medio hay ya inicializado monedas de diez centavos a 0. Así que, o hacer cuartos, monedas de diez centavos, monedas de un centavo. ¿O cuartas partes son iguales 0. Dimes equivalen a 0. Centavos igualan 0, o lo que sea esos valores iniciales son. Cosa grande con estilo, ser coherente. En caso de duda, ser coherente. Pero seguir nuestra guía de estilo también. Enfriar. Todo el mundo bien allí? AUDIENCIA: ¿Dónde está la guía de estilo? ALLISON: La guía de estilo es en-- ¿cuál es el sitio web? GABRIEL: Yo creo que es manual.cs50.net/-- ALLISON: Estilo? GABRIEL: Estilo. Sí. ALLISON: Sí. Así que la pregunta, ¿dónde está el estilo 50. manual.cs50.net/style. ¿Sí? AUDIENCIA: Si estamos definiendo las variables, ¿está bien si ponemos como [inaudible] como int puntuación y luego int meta. Así que diría usted que ahora que hemos tiene que definir juntos? ALLISON: Así que la pregunta, en caso de tiene código redundante cuando se está definiendo variables como int puntuación y en la línea siguiente int juego? ROB BOWDEN: Hay definitivamente casos en los que el código redundante es malo. Yo no lo consideraría que el código redundante. Yo casi nunca declaro múltiple variables en la misma línea de siempre. Y en todo caso, es porque usualmente dejo algún tipo de comentario explicando lo que la variable es para. Así que voy a decir int puntuación slash slash. Realiza un seguimiento de lo que sea. En tala total de barra. Así que es mucho más burda de esa manera para poner a todos en la misma línea. Yo nunca puse en la misma línea. ALLISON: Me siento como si fuera preferencia personal en este punto. AUDIENCIA: ¿Eso va para de bucles y cosas también? ROB BOWDEN: Al igual que en el interior? Al igual que int i es igual a 0 por comas longitud es igual a algo? Que usted no tiene una elección. Con los bucles de la inicialización parcialmente: por lo que podría sólo haber visto int i es igual a 0 i punto y coma menos que lo coma i plus plus. Eso int i es igual a 0, técnicamente también puede hacemos lo que hemos visto antes con la sintaxis coma. int i es igual a 0 coma j es igual a 3 coma k es igual a 5. Usted no tiene la opción de dividir que en múltiples líneas, y eso es normal. Al ver que no está bien. ALLISON: Awesome. Bueno, segue conveniente en bucles. Así que sí, aquí tenemos algunos ejemplos de bucles que ustedes vio en scratch. Y, por supuesto, todos estos sólo puede ser recreado en C. Y ellos básicamente le permiten repetir algunos sección de código hasta que una cierta condición se cumple, lo que vamos a entrar en la derecha después de hablar acerca de los bucles con los condicionales. Así que tenemos tres tipos principales. Porque, mientras, y hacer, mientras que todos vamos a pasar por este momento. Así que primero es para los bucles. Así, por alguna condición, ejecutar este bloque de código. Tenemos este pequeño fresco diagrama aquí en la parte inferior. Pero, básicamente, que tiene en su para, esa primera línea, usted va a inicializar sus variables. Así como hemos hablado, i es igual a 0 ó I es igual a 10. Lo que usted necesita que variable para ser Es va a ser inicializado allí, declarado e inicializado a algún valor. Así que tenemos un poco de condición que va estar comprobando nuestra variables en contra de algo. Así que en el caso de que el caso típico en el que tal vez usted quiere esta sección de código para ejecutar cinco veces. Así tendríamos int i es igual a 0, y quiero que sea cuando i es menor que 5. Así que la condición es sólo va a comprobar que cada vez. Si esa condición evalúa a cierto, es va a ejecutar el código, que es exactamente lo que este pequeño diagrama está mostrando. Y así lo ejecuta. Se actualiza una variable, que es lo que vemos en la última parte de nuestra para inicialización de bucle allí. Así que voy a seguir haciendo esto hasta que no se cumple esa condición, y luego saldrá el bucle y continuar seguir adelante con el resto de su programa. Todo el mundo bien allí? Enfriar. Así que aquí está un ejemplo, muy similar a algo que acabo de hablar. Así que sólo queremos imprimir esto es CS50 10 veces. Así que ya ves que aquí tenemos nuestra para, a continuación, nos inicializar la variable i sea igual a 0. Nuestra condición es la comprobación que es menos de 10. Así que evaluar a verdadero cuando por primera vez empezar, y luego actualiza nuestra variable cada vez que se ejecuta realmente e imprime este es CS50. Y terminará después de 10 veces. Enfriar. Así, mientras que los bucles son hasta la próxima. Y como se puede ver aquí, sólo tenemos algunos, mientras que esta pregunta condición--? AUDIENCIA: ¿Cómo puedo saltar en realidad no un número, pero dos números [inaudible] i plus plus plus? ALLISON: Así que la pregunta era ¿cómo puede usted actualizar la variable de más de un a la vez. Así que además Plus actualización en uno cada vez. Si usted quisiera actualizarlo por dos, usted podría hacer más i es igual a 2. ROB BOWDEN: ¿Has visto más iguales en conferencia todavía? AUDIENCIA: [inaudible]. ALLISON: Es efectivamente el lo mismo que i es igual i más 2. Así que va a tomar y actualizar por dos cada vez. Plus iguales es sólo algo que llamamos azúcar sintáctica. ROB BOWDEN: Sí, los que existen para casi todos los operadores aritméticos. Veces, así que igual a se duplicaría el número. j brecha es igual a 3 es el mismo como j es igual a j dividido por 3. ALLISON: o menos es igual a 2 lo haría i disminuir por dos cada vez. ROB BOWDEN: Incluso iguales mod. Usted no ha visto los operadores bit a bit, pero es igual de intercalación y signo igual, todos aquellos existen. ALLISON: Así que un montón de veces, sobre todo con su primer par de conjuntos de P, usted estará probablemente incrementando por uno, así que además de más, j plus plus son todas las cosas que vas ser típicamente usando. Pero esa condición actualización totalmente bajo su control. Puede actualizarlo por cualquier incrementos o de cualquier manera que usted decide. Tal vez incluso quiere que sea un número aleatorio a veces. Pero sí, hay un montón de cosas que usted puede hacer con eso. Usted no está limitado a i plus plus. ROB BOWDEN: Para que lo sabe que existe, sino que también existe en otra forma, plus plus i. Así que si alguna vez la búsqueda en línea y pasar a ver plus plus i, más o menos significa lo mismo. ALLISON: Cool. Buena? Impresionante. Así, mientras que los bucles. Muy similar. Usted tiene alguna condición. Lo más importante a notar aquí es en lugar de tener tres partes diferentes configurar, tenemos una. Sólo tenemos alguna condición que está siendo comprobado. Y de la misma manera, siempre y cuando que la condición se evalúa como verdadera, el código se va a ejecutar. Y si es falso, terminará, mover en la siguiente parte de su programa. Así que esto es una especie de lo que es como-- un buen ejemplo de comprobación por alguna condición normal? GABRIEL: Si bien es cierto. ALLISON: Usted podría hacer mientras cierto. Bueno, 1 es igual a 1. ROB BOWDEN: Usted puede hacer rato-- sólo en lugar de utilizar un bucle for, siempre se puede codificar una de bucle en un bucle while, así que o mayor que 0 mientras i menos de 10. ALLISON: Awesome. Y entonces hemos hacer bucles while, que es ideal para la validación del usuario, donde usted desea conseguir algo de el usuario, ver si es válida, y luego continuar a partir de ahí. Así que una de las cosas que debe saber es con un hacer, mientras que es que se va a ejecutar, y entonces volver a ejecutar si se cumple esta condición. Así que, probablemente, la mejor manera de hacer esto es sólo para ver un ejemplo aquí. Así como acabo de mencionar, el usuario validación es realmente useful-- o hacer entre tanto que son realmente útil con la validación del usuario. Así que esto es sólo va para volver a provocar algún usuario hasta que entran un número positivo, lo que podría ser útil para el conjunto de P esta semana. Y así, en este caso, cuando inicialmente ejecutar este programa, que va a imprimir introduzca un número positivo. Se va a conseguir un poco de la entrada del usuario, y luego se va a comprobar que la entrada en contra de la condición que ha establecido para ello. Así que en este caso se va a comprobar. Se va a decir, OK, es nuestra entrada negativa, o es 0 o negativo, que sería válida. Así que entonces sería re-prompt. Pregunta? AUDIENCIA: ¿Es este el mismo entonces como un while si usted acaba de copiar ese código y lo puso [inaudible] while? ALLISON: Así que la pregunta era lo haría éste sea el mismo que sólo un mientras bucle si tuviéramos que sólo copiar el bucle while anteriormente. Así que en este caso, el bucle while es va a comprobar la condición primera. Así que en este caso, si lo intentamos escribir como sólo un bucle while, diría mientras de entrada es menor que uno. Pero no tenemos una entrada para ella. AUDIENCIA: Si [inaudible] mientras bucle que incluye este código, pero entonces usted hecho frente el código por encima de la bucle while también. Usted acaba de tener este código [Inaudible] while. ALLISON: Sería lo mismo, sí. Así que usted podría write-- en lugar de tener un sí hacer--. GABRIEL: Pero eso es más elegante. ALLISON: Sí, eso es más elegante. Usted puede entrar en el diseño y todo eso, pero sí, se puede hacer totalmente eso. ¿Alguna otra pregunta? Aceptar, fresco. Así que hemos hablado mucho sobre las condiciones con todos estos lazos que tenemos, por lo que en realidad estamos metiendo las condiciones en las expresiones booleanas. Una vez más, utiliza estos productos en C, por lo que sólo tipo de transición más de la interfaz gráfica para realmente codificación. Enfriar, por lo que uno grande, si. Básicamente, sólo nos permite introducir algo de lógica en nuestro programa y verificación condiciones sys. Así que en este caso, está bien, n es mayor que 0? Sí lo es, por lo que puede ejecutar este. Es sólo la comprobación algunos condición de que tienes puse, que creo que todos estamos cómodo con la comprobación de las condiciones. Enfriar. Así que si lo demás es su otro, se puede decir bien, si esto es cierto, hacer esto lo primero. De lo contrario, te quiero por defecto y hacer otra cosa. Al igual que en este caso, o bien escoger un número positivo o un número negativo. Usted sólo tiene dos opciones. Lo necesita para ejecutar independientemente de lo que sus entradas del usuario. Así que se puede decir así, es mayor que 0? Enfriar. Imprimir un número positivo. Si no lo es, imprimir un negativo. Todo el mundo bien? Y luego una cosa es reconocer es que si se cumple la condición si, el otro será nunca también ejecutar. Sólo uno de ellos lo hará ejecutar a la vez. Así que es una solución de compromiso. Usted no llegar a tener tanto. O tienes la primera condición. O tienes el si o la otra, no ambas. Que luego puede hacer que las cosas aún más complicado, porque se puede hacer si, de lo contrario, y luego más. Así que en este caso, tener tres condiciones. Y de nuevo, sólo uno de ellos es va a terminar siendo ejecutado. Así que puede que se pregunte bien, ¿qué pasa si usted tener algo que puede satisfacer dos de ellos. Tal vez lo que usted está introduciendo cumple tanto la condición para si y el otro si. Lo único que va a ejecutar ALLISON: Tan pronto como se encuentra algo que cumple con la condición de que evalúa a verdadero, eso es lo que que va a correr y nada más. Así que si usted tenía es este número entre 0 y 5 para el primero de ellos, o es este número entre 3 y 5 para el otro si parte, y que de entrada la number-- Dije 0 y 5 y- 4. Se va a golpear a la primera. Va a decir OK, esto número está comprendido entre 0 y 5. Ejecutar y se van. Nunca llegará a esa segunda opción. Fresco? Impresionante. Aceptar también tenemos sentencias switch si desea obtener aún más-- o lo siento, interruptor está al lado. Me estoy adelantando a mí mismo aquí. Una vez más, si múltiples bloques donde como acabo de decir es en cuanto a encontrar una condición que ha conocido y un if-else if-else, deja. Si usted necesita para comprobar múltiples cosas, eres va a querer usar esto porque comprobará cada vez que aquí. Así que esto se ejecutará a través de y si que es mayor que o igual a 90, que va a imprimir eso. Y se ejecutará a través de y comprobar todos y cada uno de ellos. AUDIENCIA: Así que esto sería más defectuoso que [inaudible]. ¿Podría ser esto como [inaudible]? ALLISON: La pregunta se sería este buggy o hace esto lo que quieres. Realmente depende de lo que que quiere de su programa. AUDIENCIA: Me refiero a como si pones 90 en. ALLISON: Si pones 90-- AUDIENCIA: [inaudible]. GABRIEL: Vas a conseguir dos cosas. ALLISON: Vas a conseguir dos cosas. Sí, dos. ROB BOWDEN: Dos? ALLISON: No. ROB BOWDEN: Cuatro. Si pones 90, que va a decir usted obtuvo una A, que recibió una B, que recibió una C, tienes una D. AUDIENCIA: [inaudible]. ALLISON: Derecho. Así que depende de lo que desear de usted programa. A veces es necesario comprobar varias cosas. Usted conseguirá mucho más profundo en lo que el buen diseño es la marcha hacia adelante. Lo importante a se dan cuenta es que este comprobará las cuatro condiciones aquí. Mientras que si se tratara de un if-else if-else si otra cosa, sería golpear ese primer caso, sería imprimir tienes una A y por hacer. ROB BOWDEN: Incluso si decidido a cambiar esto a si y mayor o igual a 90, si y mayor o igual a 80, y menor o igual a 89, si n mayor que o igual a 70, y n menor que o igual a 79, por lo que será correcta. Eso va a hacer lo que queremos, pero todavía comprueba cada ello. Así que mientras que en el primer escenario, si introducir 90 con sólo si los demás si los demás si, y entramos en el 90, a continuación, que va a corregir. Se comprobará la primera uno, impresión que recibió una A, omitir todo, porque ya encontrado uno que funcione. Todos los casos son mutuamente excluyentes sobre la base de si los demás si lo demás si. Así que va a ejecutar el en primer lugar si, a continuación, se hace. Se va a ir hasta el final. Mientras que si cambiamos que esto es lo que yo era decir con menos de o igual a 89. Se va a revisar la primera. Se va a imprimir. Se va a verificar el segundo. No va a imprimir. Compruebe el tercero. No va a imprimir. Compruebe el cuarto. Ahora va a imprimir. Así que en ese caso, la persona si de versión, ya que estos casos son mutuamente excluyentes, es un mejor uso si otra cosa si lo demás si, porque eso va a tener un menor número de controles de las condiciones de esta versión. ALLISON: Awesome. Así que otra cosa que podamos hacer es sentencias switch. Básicamente una sentencia switch toma en alguna variable, en este caso es n, y determina que el caso de ejecutar. Así que este es también uno donde sus casos debe ser una especie de mutuamente excluyentes. Así pues, en este caso, si nosotros tenemos un uno, es va a coincidir con lo que variable-- cualquiera que sea el valor de n es uno de estos casos, por lo que 1, 2, o 3, e imprimir la línea correspondiente. Y entonces, si usted nota aquí, también tenemos un defecto, que se puede pensar en como de su persona. Así que si tienes que elegir cualquier otro número además de 1, 2, y 3 en este caso que sólo va a imprimir válido. Decidir cuándo utilizar IFS frente si vigilara frente a los interruptores que está pasando que ser algo que ustedes lo hará Vea el diseño inteligente como usted comience a escribir programas más complicados, y no hay reglas duras y rápidas de cuándo usarlos. Realmente depende de su contexto. ROB BOWDEN: Y de la misma para tirarlo por ahí ya que es la sección más cómodo. Interruptores, tienden a ser: lo que está limitado en el número de maneras en que usted puede usarlos, porque pasaría si, la condición puede ser bastante cualquier cosa que quieras. Con los conmutadores los casos tienen que ser números, o técnicamente pueden ser caracteres, pero caracteres, como veremos, son números sólo. Así que tienen que ser números, pero los interruptores son realmente más eficiente que si más si lo demás si, porque incluso tomando el ejemplo antes-- bien, el ejemplo de calidad parece buena. Bueno digamos que aquí, en vez hacemos esto como si otra persona si lo demás si escenario. Así que si n es igual a es igual a 1, imprimir usted escogió un número bajo. Si otro si n es igual es igual a 2, que eligió un número medio. Porque si los iguales es igual a 3, alta. Lo demás no es válido. Así que digamos que era nuestro escenario. Así que digamos que entramos 4, por lo que esperamos no válido. La manera que si otra cosa si lo demás si el enfoque se va a trabajar es comprueba la primera condición. No está satisfecho. Así, comprobamos la segunda condición. No está satisfecho. Verifique la tercera condición. No satisfecho. Así que nos vamos a la otra persona y imprimimos válido. La forma en que las obras del interruptor es que compila abajo en lo que vamos para llamar a una tabla de saltos. La idea de ser principal que cuando entras en 4, inmediatamente se puede ir a la opción predeterminada. No es necesario para comprobar la mañana me caso 1? Nop no es eso. Caso 2? Nop. Caso 3? Nop. Defecto. OK, esto debe estar donde quieren, y luego ejecutar ese. No, inmediatamente salta a la predeterminada. O entro 2, es inmediatamente va a ir a la 2 sin necesidad de pasar por el caso 1. Así que de esa manera, realista hoy en día que es no es que gran parte de un aumento de la eficiencia. Por lo general, las computadoras son bastante rápido, y eso no es tan grande. Pero es el caso que interruptores son más rápidos. Si usted está realmente tratando para optimizar, usar un interruptor. ALLISON: Cool. Y luego tenemos operador ternario. Así que sé que he mencionado antes la palabra azúcar sintáctica. Así que es sólo las cosas que hacen su código mucho más concisa. Así que este es uno de esos casos. Así operador ternario es signo de interrogación de colon, como lo vemos en la cadena de línea s es igual a n mayor que 100 signo de interrogación bajo alta colon. Así que, básicamente, cómo funciona esto es que es el n mayor que 100 es una condición. Así que creo que puede tener sentido. Es como hacer una pregunta. Está diciendo oh, es n mayor que 100. Quién sabe? Y si se evalúa como cierto, que va a darle la primera cosa que es que aparece allí, que es alta. De lo contrario, va a darle de baja. Así que esto es sólo una verdad simple y forma eficaz de hacer como si una cosa. Eso es todo lo que es esto. Y si tuviéramos que escribir esto como si lo demás condicional, lo que sería si n es mayor de 100, devolver alta. Si no, volver bajo. Esto es sólo una mucho más manera concisa de escribirlo. ROB BOWDEN: Así que este ejemplo particular está siempre estás haciendo algo así, este es el patrón donde utilizo ternario con mucha frecuencia. Así que no hemos hablado de alcance, sin embargo, pero Odio ver punto y coma cadena s. Si n mayor que 100, s es igual de alta. Si no, es igual a s bajo. Así que ese patrón, esas cinco líneas de código, literalmente, 100% de las veces puede ser transferido a lo estaba allí con un ternario. Así que el ternario, una línea de código. El caso más, cinco. Eso es un ejemplo señalo fuera cada vez. Esto haría un gran lugar para un operador ternario. Es tan limpio. Pero la gente tiende a no utilizarlo. ALLISON: Tome la basura Gabe. GABRIEL: Así que ahora ustedes todo aprendido en la conferencia de esta semana que todo en una computadora es binaria, ¿verdad? Al igual que las lámparas de aquí. Usted puede ser encendida y apagada. Y por todo lo que me refiero literalmente todo. Algunos números y caracteres y cadenas, e incluso el código que escribes cuando que se compila a máquina código y cosas por el estilo, por lo que todo se reduce a 0 y de 1 '. Y así, cuando nos enfrentamos con números enteros, los cuales es algo que es técnicamente muy simple, debemos ser capaces de hacer cosas como la adición de ellos, que es probablemente una de las cosas más simples usted puede hacer para dos enteros, ¿no? Así que la suma y la resta funciona igual como funciona en notación decimal, excepto aquí es binaria, ¿verdad? Así que es en base dos. Así que añadir 1 más 1. Eso le da a 0 y 1 se traslada. Y así seguir haciendo eso, así que ahora viene la pregunta más interesante. Sabemos cómo representar todo números enteros positivos en el ordenador, pero vamos a hacer este ejercicio. Haga de cuenta que ustedes están todos en el año 1960 o algo tratando de crear una computadora, y usted tiene que venir de una manera de almacenar menos 1, por ejemplo, o menos cualquier número entero para el caso. ¿Cómo hacer eso? ¿Alguna idea? Simplemente tirar nada a mí. ¿Sí? AUDIENCIA: [inaudible] designar un especial si su [inaudible]. GABRIEL: Usted puede designar a un poco especial, que será 0 o 1. Digamos que uno si es positivo y 0 si es negativo. Y luego el resto de la broca es sólo para almacenar el número. Enfriar. Así que eso es una muy buena idea. Tenemos, no sé, 200. Y si el primer bit es encendido, entonces es más 200. Si está apagada, es menos de 200. Enfriar. Sólo hay una pequeña problema con esto, que es si tratamos de resumir las cosas. Así que imaginen que tenemos aquí 11111, y estamos sumando esto con 00,100 lo que sea. Si los dos son positivos, eso está bien. Pero entonces, si uno de ellos es negativo, al igual que digamos que esta poco aquí es la que es responsable para-- Voy a hacer una separate-- así que éste significa que este número aquí es positivo. Este significa que este número aquí es negativa, ¿no? Pero luego, cuando esté va a resumir ellos, necesitará una sentencia if diciendo oh si esto es 0, entonces mi suma será algo diferente, ¿no? Así que hay un poco más inteligente manera de hacerlo que, que se llama complemento a dos. Así que, básicamente, lo que hacemos es definimos menos 1 a ser la cosa que si sumamos a 1 nos da 0. Permítanme repetir eso. Así que digamos que esta aquí es 1. ¿Qué es lo que naturalmente en números enteros positivos añadido a que nos da 0? ¿Qué pasa si tratamos de agregarlo a este número? Vamos a tener-- bien, así que vamos a añadir. Vamos a tener 1 más 1 es 0, y luego se transporta. Y luego vamos a obtener 0 de nuevo. Me estoy confundido. Y usted va a obtener 0 y 0 y 0 y 0 y 0 y 0. Mucha de 0. Por lo último, no estamos va a ser capaz de llevar a la vuelta, porque digamos que sólo estamos tratando con un byte, por lo que sólo 8 bits. Así que lo que el equipo hace por defecto es simplemente se olvida de que [inaudible], ¿De acuerdo? Así que esto es lo que se llama el complemento a dos. Simplemente definimos menos 1 a ser el cosa aquí que si se agrega que a 1 le daría 0. Y eso es bastante cool porque no lo hacemos realmente necesitará tarde para implementar un tipo diferente de suma dependiendo de si eso es una negativo o un número positivo. ¿Eso tiene sentido? Así que una cosa que hacemos aquí el fin de convertir entre un positivo y un negativo entero está entonces voltear todo, y luego agregamos 1 a ese número. Si trata de hacerlo usted mismo en un trozo de papel, vas a ver que eso tiene sentido. Pero si tomo este número aquí, esto es cinco. Así que si le doy la vuelta todo aquí, así que 1, 1, 1, 1, 1. Voltear, flip, flip. Y luego añado 1 a la misma. Voy a tener exactamente menos 5. ¿De acuerdo? Este tipo de sentido porque si intenta resumir esto con el número que teníamos antes, que era-- vamos a voltear de nuevo. Fue 101 y un montón de de 0. Si intenta agregar estos dos números juntos, usted va a tener exactamente 0. Okay. ¿Alguna pregunta? AUDIENCIA: [inaudible] GABRIEL: ¿Qué quieres decir? AUDIENCIA: Negativo a positivo [inaudible]. GABRIEL: No, le da la vuelta y se agrega 1 siempre. Sí. Aceptar, por lo que los personajes también codificados binarios. Tenemos tabla ASCII, como usted también vio en la conferencia, ¿no? Así que es básicamente un mapeo de las cosas. Y aquí no puedo enfatizar lo suficiente que para un ordenador, a y 65 son literalmente la misma cosa. Así que si escribo algo como Char c es igual a una, yo podría al mismo tiempo acaba de escribir 65 aquí, y sería exactamente lo mismo, ¿de acuerdo? No hay diferencia alguna. Por lo general, tendemos a poner personajes de variables de tipo. Char, no porque son esencialmente hecho para eso, sino porque de convención humana. Pero sólo se puede tratar con números enteros en lugar de las variables de tipo char, y se le multa. La única diferencia real entre un char c y un int i es que un int tiene cuatro bytes más sistemas, mientras que un char tiene un byte. Son esencialmente el lo mismo en términos de datos. Así que lo que va a imprimir en esta lista? Aquí estamos imprimiendo un dígito usando printf con un más 1, y al igual que los números enteros, caracteres se pueden resumir, por lo personajes también se pueden sumar. Así que esto es exactamente 65. Así que va a ser 66, y aquí tenemos 65 más poco un menos grande A, que será, no lo sé. Pero va a ser exactamente la brecha entre las letras mayúsculas y las letras más pequeñas y, por lo vamos a obtener una pequeña, ¿verdad? Sí. Así que esto va a imprimir un personaje que es exactamente éste. Buena? ¿Alguna pregunta? Aquí tenemos un montón de diferentes tipos de variables numéricas. Ya hablamos de int. Float es sólo una manera a-- esto es realmente divertido, porque cuando supe por primera vez para programar en su día con Python, el primer programa que he tratado de escribir, me di cuenta de que había un tipo llamado y un tipo llamado flotador. Y el flotador era para todos los números reales. Entonces me preguntó por qué debería Yo nunca utilizo un int entonces? Porque si puedo usar todo números reales con un flotador, Sólo quiero dejar de usar enteros, ¿no? Debido a que los números reales son al igual que más genérico. Resulta que esto es no es el caso en los ordenadores porque son esencialmente diferentes cosas. Así que los números enteros y las carrozas, la operaciones que hagas con ellos son esencialmente diferente porque de la forma en que se almacenan, ¿de acuerdo? Vamos a hablar un poco poco más sobre eso en un segundo. Así que doble es sólo un flotador más grande. Por lo general, en la mayoría de los sistemas, un flotador es de cuatro bytes, como un int. Y una doble es de ocho bytes. Un largo, largo es en realidad sólo un símbolo que anexar a un tipo como int. Usted dice int largo plazo como este. Largo long int x para que sea más largo. Así que en la mayoría de los sistemas, que dará ocho bytes en lugar de los cuatro habituales. Y en realidad se puede caer el en, por lo que sólo se puede decir mucho, mucho, y que trabaja demasiado, ¿de acuerdo? También puede hacer otras cosas como int sin signo, o de nuevo justo sin firmar también funcionaría. Y eso haría que x sea una variable como todo lo que es positivo, así que realmente no se puede tener efectos negativos números en la forma en que vimos aquí. Así pues, siguiendo maravilloso punto flotante y precisión. Esa es una de las razones por las que querer usar enteros en lugar de carrozas, porque ints son 100% precisas, ¿no? Es exactamente ese número. Para los puntos flotantes, si decir la respuesta es igual a 1 sobre 10-- Resulta que tengo esta exacta programa aquí, float.c. Que imprime a 20 cifras decimales. 1 dividido por 10, y que por lo general es de 0,1, ¿verdad? Pero aquí si hacemos flotador y luego lo ejecutamos, vemos que no es exactamente 0,1. Es algo 0,149. ¿Y por qué es eso? Porque no se puede realmente representar a cada único número real posible en la memoria porque hay uncountably muchos de ellos. Así que estamos técnicamente sólo es capaz de representar una cantidad finita de ellos con una cantidad finita de datos. Pero es muy interesante. Ahora bien, esto nos lleva a la cuestión de cómo lo haría ir sobre lo que representa esto con los bits, ¿no? Entonces, ¿cómo se almacenan los flotadores? Con números enteros que fue fácil. Pero con flotadores que deseas para maximizar el rango, y quiere ser capaz de representar enormes números y números muy pequeños como 0.000001 al mismo tiempo. Así que de nuevo, el mismo juego. ¿Alguien tiene alguna idea de lo que pudimos ir sobre la representación de flotador en la memoria? Simplemente tirar nada. Sí, por favor. AUDIENCIA: [inaudible] como si se trataba de dos enteros y uno siendo la [inaudible] y un solo ser todo después del punto decimal. GABRIEL: OK, fresco. Así que dos enteros diferentes. Usted puede tener las 12.45, por lo que es 12 y 45. Niza. ¿Qué ERE que va a decir? La misma cosa? ¿Sí? AUDIENCIA: notación [inaudible] donde se separa la base. GABRIEL: La notación científica, sí que es por lo general lo que sucede. Así que esto es lo que se llama la mantisa. Eso es lo que es en realidad el número, y luego el exponente es justo donde la coma es, ¿verdad? Así que esto va a ser algo de la forma 1, 2, 3, 4, 5 veces 10 al menos 4. Me acabo de dar cuenta que-- Sí, exactamente. Y entonces este 10 a la menos 4 es va a definir donde la coma es, ¿de acuerdo? En Brasil se utiliza coma. Aquí ustedes utilizan un punto. Así un punto. Y esto es genial, porque entonces usted puede centrará muchos de sus pedazos en este chico aquí, en la mantisa, y entonces eso es va a ser su precisión real. Y usted puede hacer esto ya sea en decimal o en el sistema basado en binario. Hay diferentes formas de implementar esto. ¿Preguntas? ¿Sí? AUDIENCIA: ¿Cuántos lugares después del punto decimal [inaudible]? GABRIEL: Esa es una pregunta complicada, porque nunca es realmente 100% precisa, porque como usted ve aquí, por algunos números es 100% precisa. Creo que si ponemos 0.5 aquí, que va a ser 100% preciso. Va a ser 0,500000. Así que en ese caso, es perfecto. Pero en otros casos, es mucho menos perfecta. En mi experiencia, al igual que un máximo de cuatro, cinco cifras decimales es bastante preciso. Si utiliza un doble, que va a ser mucho más preciso que eso, ¿de acuerdo? ROB BOWDEN: Así que solo para arrojarlo algún contexto más en carrozas, No recuerdo cómo el 100% especificación de carrozas en realidad funciona, pero lo hago siempre recuerde que carrozas comienza a recibir desordenado. Así que la idea es que cuando usted consigue realmente, realmente grandes números o muy, muy números pequeños, que empiezan cada vez peor en la diferenciación entre dos flotadores cercanos. Entonces, ¿cómo me gusta pensar es en con punto flotante imprecisión, hay dos flotadores que si trato de especificarlos en C, a pesar del hecho de que son diferentes los números, que van a ser interpretado como el mismo número, porque no podemos almacenarlos de manera diferente. Tenemos que utilizar los mismos bits. Y así, cuando llegamos a muy, muy gran número, hablando como 10 a la 300 o algo, es en ese punto que 10 a la 300 o 5 veces 10 a la 300 no puede ser diferenciada de 7 veces 10 a la 300. Así que eso es una diferencia bastante grande entre los dos números. Pero luego, cuando te pones a las cosas normales de rango, que tienden a ser bastante bueno en la diferenciación. Y luego, cuando te pones realmente pequeño, usted también obtiene muy mal de nuevo. Así que, como un montón de 0.0000, que se pone bastante mal. GABRIEL: Sí, por lo que una nota rápida. Nunca haga esto. Nunca trate de comparar flotadores usando iguales iguales, porque incluso si son casi el mismo, casi el mismo no es el mismo. Así que lo que suele hacer es restar ellos, toman el valor absoluto de que, y ver si eso es menor que 0,0001 o algo así, ¿de acuerdo? Y fresco. Sé que mucha gente tiene algunos antecedentes en Java, especialmente los que hicieron Ciencias de la computación AP, ¿verdad? Y Java es un lenguaje que en su mayoría sobre la base de C, tiene muy grandes diferencias de un par. Pero para los bucles, e IFS, y cosas por el estilo que, son todos la misma sintaxis. Tengo un par de programas aquí para mostrar esto. Así, por ejemplo, un mundo hola simple. Esta es hola mundo en C, que le chicos son sin duda familiarizado con, y esto y esto es en Java. Así que en Java tenemos este public class, hola mundo, y public void estática args principal, y de cadena. Los argumentos de cadena van a aparecer en C muy poco. Pero no vamos a ir allí todavía. En este momento tenemos vacío aquí, lo que significa que la principal no se toma ningún argumento. Y entonces tenemos System.out.println, el y eso es especie de equivalente de printf. Aquí en realidad no necesitamos la barra invertida n porque ln impresión lo hace por usted. Se añade la barra invertida n en el extremo de la línea. Pero si usted entra en algo así como una para, usted puede ver que son más o menos la misma cosa. Así inicialización, y el condición, y la actualización es-- me perdí un espacio aquí-- son más o menos la misma cosa, a excepción de Java tiene como unos pocos más cosas de alto nivel. Aquí podemos hacer más I y Java automáticamente hacer de este i aquí, que es un número entero, en una cadena, y luego añadir el dos cadenas juntas. Aquí en C que necesitamos hacer el &% d. La línea de aquí, el para se ve exactamente lo mismo. Y si nos fijamos en si, las FI También verá exactamente lo mismo, ¿verdad? Así que las grandes diferencias reales son en las cosas que usted ve aquí. Estática Pública, nula, y entonces la clase pública si. Así que Java tiene lo que es llamado una máquina virtual. Y se basa en gran medida en lo que se llama la programación orientada a objetos, que es un muy, muy común paradigma de la programación de hoy en día. Y esta cosa de clase es lo que se ve, algo de la orientación a objetos, es que usted crea una clase y luego puede derivar objetos de esa clase. No vamos a hablar demasiado mucho de eso en CS50, pero eso es sin duda algo realmente fresco, especialmente si quieres ir en desarrollo web más sofisticado al final del curso, como presentar su proyecto final y algunos marcos bonitos y esas cosas. Así que, básicamente, la idea es que usted no quiero volver a implementar algo, por lo que se crea algo que es muy genérica, como la forma, y luego se crea diferentes formas de la misma, y después de cada uno de estas formas, se crean algunas formas más específicas de cada tres dimensiones o algo por el estilo. Y tienen esta jerarquía que heredar de los demás, por lo que todas las funciones y todas las variables que la gran forma de aquí tiene, todos ellos van a tener, y todos estos son va a tener, y así sucesivamente y así sucesivamente. Así que esa es la idea básica. C no tiene que, pero C ++ no tener ese tipo de característica. Y Java está fuertemente influenciado por la orientación a objetos, así que por eso se ve clase aquí todo el tiempo. Y la otra cosa es esta máquina virtual de Java. Así que esto, creo, es una idea muy inteligente. Así que lo que la gente que java inventado hizo es que no quieren compilar su código dos veces si tuvieran que ejecutar en un equipo con Windows, o un Mac, o Linux, así que lo que hacen es que, literalmente, se ejecutan algo así como el aparato, pero usted realmente no ve que esto ocurra. Así que se ejecutan en una máquina virtual en el interior de su equipo, que es, básicamente, como un mini sistema operativo. Y eso de funcionamiento El propósito del sistema en la vida es sólo para ejecutar lo que se llama código de bytes. Así que en lugar de en C, la forma en que lo haría compilar esto es hacer que si, a continuación, ejecute ./if. Me olvidé de la barra invertida en. En Java, que haría primero Java C a compilarlo, if.c. No es punto de java C.. Y luego tienes que correr no ./. Usted recibe este nuevo archivo if.class, pero realmente no se puede ejecutar if.class ahora sólo como lo hicimos antes. Esto no es un ejecutable. Tienes que correr. Usted tiene que alimentar en un programa llamado Java, y ese programa es la máquina virtual, y luego lo haces if.class, o si. Sí. Y entonces funciona. Aceptar así que esto es una especie de la máquina virtual sucediendo. C no tiene que, por lo que si yo fuera a poner este programa en una máquina Windows, que no funcionaría en C. En Java lo hace. ¿Preguntas? Enfriar. Eso si para super sección por hoy.