ZAMYLA CHAN: Es un yo, Zamyla. Hoy en Mario, vamos a estar dibujar la mitad de la pirámide de Mario Escalar. Así que vamos a hablar de nuestra cosas por hacer para este problema. Vamos a querer para impulsar y validar el usuario para una entrada válida de cómo alta que quieren pirámide de Mario sea. Y luego, vamos a dibujar. Así que vamos a empezar con indicaciones y validar el usuario para su entrada. Podemos hacer uso de la Biblioteca de funciones CS50 int conseguir que asegurará que el usuario introduce un número entero. Cualquier enteros positivos, negativos números enteros, número 0 son presa fácil. De lo contrario, el usuario se le pedirá que hasta que vuelva a intentar introducir un número entero válido. Ahora bien, aunque get int hace una gran parte del trabajo por nosotros para garantizar que el usuario nos da un número entero, todavía tenemos que aplicar un poco restricciones adicionales al respecto. Después de todo, no podemos tener Mario escalada una media pirámide de altura negativa de 12. Además de eso, la especificación problema dice que sólo podemos permite a Mario a subir una pirámide de alturas entre 0 y 23. Aceptar, por lo que significa que necesitamos para impulsar continuamente el usuario para darnos una válida número y sólo continuará una vez que nos han dado una altura válida. ¿Como hacemos eso? Pues bien, los procesos continuos nos dan la idea de hacer algo loops-- repetitivamente. Un bucle en C como un tiempo bucle que continuamente se ejecutar el cuerpo del bucle, siempre y cuando la condición dada se evalúa como verdadera. Tan pronto como esa condición se evalúa como falsa, el programa procederá a lo que viene después de eso. Así, mientras que los bucles son una forma de asegurar que continuamente solicitar al usuario una entrada válida. Y una vez que nos dan una entrada válida, procederemos a lo que venga después. Sabemos que vamos a pedir entrada al usuario al menos una vez. Así que ahora llegamos a una hermana de la while, que es el do while. Bucle do ejecutarán el cuerpo del bucle al menos una vez. Así que sin la comprobación del estado, se ejecutará el cuerpo del bucle. Y a continuación, comprobar el estado para ver si tiene que repetirse. Esto es muy útil cuando estamos validar la entrada del usuario. Sabemos que vamos para pedirles que al menos una vez. Por lo que un bucle Do While podría algo parecido a esto. Tenemos un número entero n. Y dentro de la DO while, inmediatamente solicitar al usuario un número entero. Si n no es válido, entonces vamos a impulsarlos una y otra vez y otra vez hasta que se darnos esa entero válido. Por último, una vez que n es una entrada válida, vamos a siga con el resto de nuestro programa. Así que vamos a volver a la especificación y verificación cuáles son las condiciones para una entrada válida va a ser. Las alturas válidos van a ser entre 0 y 23, inclusive. Así alturas no válidos van a ser inferior a 0 o más de 23. Así que recuerda al diseño su estado de salud atentamente, sabiendo que la condición para el do while debe ser mientras que n no es válido. Ahora bien, esto no va a ser una expresión booleana única y sencilla. Vamos a tener que combinar dos expresiones diferentes para que toda nuestra condición. Así que vamos a ver en una tabla de verdad que he ya que dado el indicio de que estamos va a estar tratando con dos booleanos. Así que aquí hay una tabla de verdad donde tienen dos Booleans-- booleano 1 y 2. Así que tenemos la opción de evaluar Bool1 y Bool2 o Bool1 o Bool2. Y sólo será verdadera si ambos Booleanos como resultado true, mientras que todos o será cierto siempre y cuando uno de los dos booleanos se evalúa como verdadera. OK, así que tome un momento, hacer una pausa en este vídeo y digerir esta tabla de verdad. Voy a estar aquí esperando. Cuando vuelvas, consulte si se puede armar una expresión booleana para su condición de que n es una entrada válida. Así que ahora que tenemos de entrada de usuario válido, vamos a seguir adelante y hablar sobre cómo podría dibujar la pirámide mitad. Aquí, en este editor de texto simple, He dibujado una pirámide alineado a la izquierda. Sin embargo, sabemos que necesitamos nuestra pirámide para ser alineado a la derecha. Entonces, ¿cómo podría yo hacer esto? Bueno, yo podría tratar de empujar todo a un lado con solo colocar un poco carácter en el medio. Y luego, para la siguiente línea, voy a poner algunos caracteres más para empujar a lo largo, y further-- así sucesivamente y así forth-- hasta que tenga la pirámide alineado a la derecha. Así que tenemos una pirámide Alinear a la derecha, pero no se ve tan grande con los puntos. Pero todavía queremos mantener esa buena separación. Así que voy a, literalmente, insertar algunos espacios. En lugar de tres puntos, me quedo poner uno, dos, tres espacios. En la segunda línea. Voy a poner una, dos espacios. Y en la penúltima línea, un solo espacio. Y aquí tengo una pirámide alineado a la derecha. De hacer el ejemplo en el texto editor, tenemos una idea para el patrón que vamos a utilizar para dibujar la pirámide mitad. Para cada fila, lo que hicimos está escribimos algunos espacios, y después se pasan algunos hashes, y después se pasan la tecla Intro, el cual es la creación de una nueva línea. Así que ahora que tenemos que, vamos a ir un paso más allá y encontrar un patrón. Así que voy a decir, para el interés de este ejemplo, estamos tratando con una altura de 8. La primera fila va a tener dos hashes que sigue siete espacios. Los tres second-- hashes, seis espacios. En tercer lugar row-- cuatro, cinco hashes spaces-- así sucesivamente y así sucesivamente hasta llegar a la fila n. Así pues, os pido la fila n, cuántos hashes vamos a tener y el número de espacios? Así que depende de usted para encontrar una fórmula para representar el número de hashes y cuántos espacios son necesarios para la enésima fila cuando se tiene una cierta altura. Ahora, cuando usted está calculando todo eso, tener cuidado de cómo se está indexando. Lo que quiero decir con esto es que en todos nosotros la vida cotidiana empezar a contar, por lo general por 1. Pero en CS50 y en ciencias de la computación en general, somos 0 indexada. Así que la primera fila sería n de 0 a diferencia de 1. Tenga cuidado de esto cuando estás tratando de averiguar su patrón. Así que ahora vamos a volver a la forma vamos a llamar nuestra pirámide. Para cada fila, vamos a querer imprimir los espacios, imprimir los valores hash, y luego imprimir una nueva línea. La sugerencia aquí es la palabra "porque" cada fila. En C, tenemos una construcción llama un bucle for, que se compone de una inicialización, un estado, una actualización, y el cuerpo del bucle. Decir lo que quería decir, hola mundo, 50 veces, mis de bucle sería algo como esto. Me inicializar mi número entero de 0. La condición es que I es menos de 50. Y entonces mi actualización es sólo Me incrementando en uno cada vez. También podemos utilizar los bucles para repetir las cosas. Nótese aquí la forma en que no tenemos codificación fija un número, sino que más bien se coloca la variable de altura en lugar de la condición. Entonces, ¿qué estoy haciendo aquí es que estoy iterando sobre cada fila de la pirámide. Puedo hacer algo para cada remar en el interior del cuerpo de mi bucle. ¿Qué estamos haciendo en el interior el cuerpo del bucle? Bueno, como ya dijimos, estamos imprimiendo espacios y nosotros estamos imprimiendo hashes y nosotros estamos imprimiendo una nueva línea. Así que mi ciclo for exterior tendrá este aspecto. Me iterar sobre cada fila de la pirámide, utilizando, en este caso, la altura como la variable que almacena la altura de la pirámide. En el interior del cuerpo de ese bucle, estoy va a imprimir espacios en repetidas ocasiones, la impresión los hashes en varias ocasiones, y luego imprimir una nueva línea. Así que ahora, el uso de todos los conceptos que He hablado en este recorrido, usted debe ser capaz de indicar al usuario para la entrada, validar esa entrada, y luego dibujar la pirámide mitad. Mi nombre es Zamyla, y esto es CS50.