ZAMYLA CHAN: Es una-me, Zamyla.
Hoy en día, vamos a poner en práctica Mario, donde dibujamos Mario
una pirámide completa para él para saltar por encima.
Vamos a romper el sub-tareas para este problema.
>> En primer lugar, queremos pedir al usuario para la altura de la pirámide.
Y luego queremos para asegurarse que esa entrada es válida.
Y luego vamos a quiero llamar la pirámide.
>> Así que vamos a hablar de que provocó y validar la entrada del usuario.
Podría ser algo como esto, un bucle do-while que
solicita al usuario una enteras y después sólo se repite
si ese número entero no es válido.
Entonces, ¿cuál debería ser esta condición?
>> Para ello, vamos a volver con la especificación.
Pues bien, la especificación nos dice que cualquier válida altura va a ser entre 0 y 23,
inclusivo.
Así entonces eso significa que cualquier inválida altura va a ser inferior a 0
o más de 23.
>> Así que ahora que tenemos esta información, diseñemos nuestra condición.
Pero tenemos que tener cuidado, porque ahora tenemos
dos booleanos que queremos evaluar.
>> Aquí os he proporcionado con una tabla de verdad.
Esto nos permite tomar dos Booleanos, Boolean uno y dos.
Y podemos evaluar desde Bool1 y Bool2 o Bool1 o Bool2.
>> Entonces, ¿cuál es la diferencia entre AND y OR?
Bueno, Bool1 y se Bool2 resultado verdadero si y sólo
si ambas son ciertas Booleanos, mientras que el o la operación
será verdadera si cualquiera de los Booleanos o ambas son ciertas.
Así que con esto en mente, ver si se puede averiguar
lo que la condición apropiada para el bucle do-while para un n no válido
va a ser.
>> Con esto, hemos incitado y validado el usuario para la altura de la pirámide
que quieren.
Así que ahora, le toca a nosotros para dibujar la pirámide.
La pirámide completa para este problema se verá un poco
como éste, en el que tenemos una pirámide izquierda, alguna distancia, y luego una pirámide recta.
Así que vamos a romper esta abajo un poco.
>> Si voy a mi editor de texto, aquí tengo nos dibujado una pirámide alineada a la izquierda.
Pero eso no va a hacer.
Lo que queremos hacer es que queremos crear una pirámide alineado a la derecha en primer lugar.
Así que para hacer esto, simplemente empujar mis valores hash a lo largo de al lado,
Sólo voy a poner algunos caracteres en el medio, sólo estos puntos.
Entonces me voy a poner dos en el siguiente línea, y uno en esa línea.
Y aquí tengo una pirámide alineado a la derecha.
>> Después de eso, voy a volver a la fila superior
y poner en el hueco, el cual es decir, por la especificación, dos espacios.
A continuación, voy a llenar el otro lado de la pirámide.
Voy a ir a la segunda fila, escribo dos espacios de la brecha y luego dos
hashes.
Volver a la tercera fila, dos espacios de la brecha y tres hashes.
Y al final, dos espacios de la brecha y cuatro hashes.
Así que eso es lo que una completa pirámide se verá así.
>> Por supuesto, no queremos estos puntos en el camino.
Así que vamos a sustituir a éstos puntos por poner algunos espacios en.
Uno, dos, tres en la primera línea.
Uno, dos en el segundo.
Y uno en la tercera línea.
Así que esto es lo que haríamos si nos quería hacer sólo una pirámide completa,
decir, en nuestro editor de texto.
>> Así que vamos a llevar esto, la comprensión de los patrones,
y convertirlo a algunos pseudocódigo.
Para cada fila de la pirámide, queremos para imprimir la pirámide de la izquierda y luego
la brecha y luego la pirámide recta.
Para la pirámide izquierda es la impresión de la cantidad requerida de espacios,
seguido de los valores hash.
Entonces es la impresión de la brecha, la cual está a sólo dos espacios cada vez.
Y en la pirámide de la derecha es la impresión de el número requerido de valores hash.
>> Para la segunda fila, se realizó exactamente el mismo proceso.
Imprimimos los espacios para la izquierda pirámide, la cantidad requerida
de hash, la brecha, dos espacios, y a continuación, los hashes de la pirámide de la derecha.
>> Vamos a abordar el patrón para la pirámide izquierda.
Si lo hubiera hecho, para los propósitos de este ejemplo, una altura
de ocho solicitado por el usuario, entonces mi primera fila
tendría un hash y siete espacios.
Mi segunda fila tendría dos hash, seis espacios.
Tercera fila, tres, cinco plazas de hashes.
Probablemente puede hacer esto usted mismo para una altura de ocho
y determinará para cada fila cuántos hashes y el número de espacios que necesita.
Pero lo que queremos hacer es queremos abstracto ella.
Así que te pido para cualquier fila n, el número de hashes y cuántos espacios necesitamos?
>> Ahora, mientras se determina el patrón para el número de hashes
y el número de espacios que necesita para cualquier fila n para una altura dada,
recuerde tener cuidado de cómo se está indexando.
Lo que quiero decir con esto es que en la vida cotidiana la vida la mayoría de nosotros empezar a contar por uno.
Así que la primera fila sería el número uno.
Y la segunda fila sería fila número dos, así sucesivamente y así sucesivamente.
>> Pero en informática y CS50, estamos indexados a cero.
Así que en realidad comienzan a contar desde cero.
Así que la primera fila haría ser fila número cero.
Y la segunda fila sería fila número uno.
Así que si tuviera una altura de ocho para mi pirámide, entonces el último valor de n
en realidad sería siete y no ocho.
>> Así que tenga cuidado con esto.
Y tener en cuenta cuando se está determinando su patrón si indexados a cero su
o uno indexados
>> DE ACUERDO.
Así que ahora que tenemos la patrón para la pirámide izquierda,
necesitamos determinar el patrón de la brecha.
Por suerte, esto es realmente fácil.
Es sólo siempre dos espacios.
>> Así que ahora se procede a el patrón correcto.
La primera fila tendrá un hash.
La segunda fila, dos.
Tercera fila, tres.
Etc., etc.
Así que de nuevo, determinar para cualquier extracto n y cualquier altura cuántos hashes
y el número de espacios cada fila debe tener.
>> DE ACUERDO.
Así que sabemos que para cada fila que necesario llevar a cabo algún proceso.
¿Como hacemos eso?
Bueno, utilizamos el de construcción de lazo, compuesto de una inicialización,
una condición, y una actualización.
Para bucles se pueden utilizar repetir los procesos.
>> Así que digo que quiero que diga hola, mundo 50 veces, entonces mi bucle for
sería algo como esto, donde Me inicializar mi variables a cero.
La condición es que i es menor que 50.
Y a continuación, la actualización es que se incrementa en una unidad cada vez.
Entonces, ¿esto sería hacer sería imprimir hola, mundo 50 veces en una fila.
>> Ahora, digamos que quería repetir sobre la altura de la pirámide.
Entonces, en lugar de la codificación dura algún valor en la condición,
Sólo tiene que utilizar la variable altura.
Así que lo que esto hará es iterate sobre la altura de cada fila.
Y yo puedo hacer algo en su interior del cuerpo de dicho bucle.
>> Qué queremos hacer en el interior del cuerpo del bucle?
Pues bien, como hemos indicado antes, queremos para imprimir los espacios y los hashes
de la pirámide de la izquierda y luego imprimir dos espacios y luego se imprimen los valores hash.
Así que ya hemos dado cuenta de eso.
Por lo tanto, podemos empezar a llenar en nuestro programa mucho más.
>> Aquí tengo un ciclo for exterior que itera sobre cada fila de la pirámide.
Y dentro de ese cuerpo que voy para imprimir espacios repetidamente,
hashes varias veces, y luego la brecha, y luego hashes de la pirámide recta,
y luego, finalmente, una nueva línea para iniciar la siguiente fila.
>> Con esto, hemos incitados el usuario para la entrada.
Nos hemos asegurado de que es válido.
Y luego hemos dibujado la pirámide.
Así que Mario puede éxito subir a la pirámide.
>> Mi nombre es Zamyla.
Y esto es CS50.