Hola y bienvenido.
Me gustaría hacer una demostración solución a nuestro
desafío anterior que consistía en implementar un juego de adivinanzas y números.
Así que abramos el código blocks,
cierre mi proyecto actual y cree uno nuevo.
Este nuevo proyecto lo estoy acabando para llamar al juego de adivinar el número.
Va a ser un aplicación de consola.
Así que solo voy a llámalo adivina el número.
Y lo que voy a hacer en esto para comenzar este proyecto voy a
declarar mis variables.
Siempre me gusta declarar y son mis variables en la parte superior.
Pero también voy a usar el generador de números aleatorios.
Así que quiero asegurarme de que Tengo un par incluye.
Stdlib ya está ahí de forma predeterminada.
Entonces todo lo que necesito hacer es agregar mi tiempo. h porque nuevamente esto es para un generador
de números aleatorios.
Esto es básicamente para asiento del generador de números aleatorios.
Las otras variables que soy que voy a necesitar en este programa es
que quiero almacenar mis números aleatorios.
Así que solo voy a decir número aleatorio, lo voy a inicializar en
0 hasta que obténgalo de la biblioteca real.
Así que declara initialize.
Voy a crear una variable para almacenar la suposición del usuario, y
la voy a inicializar con 0.
Voy a crear otra variable que va a ser
el número de conjeturas, el número actual de conjeturas o
en realidad debería decir número máximo de conjeturas, máximo número de suposiciones, y voy a inicializar esto a
5 porque solo pueden adivinar 5 veces.
Yo tambien tengo que crear un tiempo variable para poder usarla para mi
generador de números aleatorios.
Así que solo voy a decir tiempo t t.
Lo primero que quiero hacer antes de pedirle al usuario que ingrese si
quiero generar el número aleatorio.
Supongo que podría hacer esto después de preguntar el usuario para la entrada, pero es fácil
hacer lo primero que lo hace.
Así que voy a inicializar mi generador de números aleatorios, voy a poner
un pequeño comentario allí.
Asegúrese de utilizar un buen significado nombres y asegúrese de aplicar sangría.
Va a usar esa función srand del que hablé en la conferencia.
Puedes simplemente pasarlo en una semilla esencialmente.
Así que voy a decir sin firmar y estoy va a pasar mi variable t.
Esto va a hacer que el tiempo sea un función que obtiene la hora actual.
Voy a pasar en la t para que lo siembra y luego lo voy a acabar.
Ahora realmente necesito conseguir mi generador de números aleatorios, así que voy a decir
que obtengas el número aleatorio.
Y todo esto va a hacer es asignar una variable a lo
que devuelve la función rand.
Así que digamos un número aleatorio que ¿es mi variable local
igual y usa el operador de asignación? rand que está llamando a una función.
No necesitas saber nada de esto pero voy a sembrarlo con 21.
Esto asegurará que mi aleatorio el número está solo entre 0 y 20.
Ahora voy a generar un unir mensajes a la pantalla para que el usuario
sepa lo que está haciendo.
Así que voy a hacer una aplicación de impresión y voy a voy a decir que esto es un juego de adivinanzas.
Y luego también voy a dígales que he
vuelto a elegir un número entre 0 y 20, solo para que estén informados.
Y luego 0 y 20 que debes adivinar y terminar con el salto de línea.
Ahora que les dije lo que quiero en el juego, voy a empezar
a hacer bucles.
Y voy a hacer un bucle hasta que mi número de conjeturas es igual a 5.
Entonces, lo que realmente preferiría quise aclarar mi número de
conjeturas aquí, pero No quiero inicializar.
Quiero inicializar en mi bucle solo para mostrarte que puedo hacer eso.
Si lo inicialicé allí, antes del primer punto y coma en el bucle for,
podría mantenerlo vacío.
Entonces, por ejemplo, podría hacer algo así, inicialícelo aquí.
Y luego en mi bucle for, lo haría simplemente ponga un punto y coma
porque no necesito hacer una inicialización.
Porque recuerda, en nuestro bucle for, lo primero que
tienes antes del punto y coma es la inicialización de la variable de control de bucle.
Ya lo he inicializado así que no necesito
hacerlo, pero no quiero hacerlo.
Voy a declarar aquí arriba, y lo voy a
inicializar aquí abajo.
Voy a decir máximo número de conjeturas es igual a 5.
Esa es mi variable de control de bucle, Lo voy a inicializar.
Voy a saltar de la bucle si se alcanza mi número
máximo de conjeturas.
Así que aquí diría que en realidad estoy lo voy a escribir de otra manera.
Lo voy a escribir para que el bucle va de 5 a 0.
Entonces mi número máximo es igual a 5.
Sería mejor cambiar el nombre de esta variable.
Cambiemos el nombre y decir número de conjeturas.
Y la cantidad de conjeturas va a empezar como 5.
Y voy a hacer esto va al revés.
Y cuando el número de conjeturas es 0, quiero saltar del bucle.
Entonces mi condición de salida de bucle, Voy a decir que el número de
conjeturas es mayor que 0.
Mira lo que estoy haciendo aquí.
Solo voy a saltar del bucle si no me quedan más conjeturas.
Entonces, si soy mayor que 0, soy va a permanecer dentro del bucle.
Y luego lo último que quiero proporcionar en el bucle for después de que se
modifique el segundo colon climático de esa variable de control de bucle.
Así que voy a hacer un menos menos número de conjeturas.
Y lo que deberías notar en este bucle for es
que estoy empezando ... Estoy casi retrocediendo.
Empiezo en 5 y voy a 0.
Para todos los ejemplos que proporcionamos en el conferencia, comenzamos en 0 y subimos.
Pero puedes hacer ambas cosas No importa.
Todavía estás iterando aquí 5 veces.
Ahora quiero mostrar un mensaje que les dice
cuántos intentos les quedan.
Así que voy a decir printf, y de hecho voy a incorporar el operador
ternario aquí ya que no lo hemos usado.
No es necesario que lo hagas de esta manera pero lo haré de
esta manera solo para mostrarte cómo puede utilizar el operador ternario.
Así que aquí te voy a imprimir Quedan por ciento d intentos por ciento s.
El porcentaje d va a ser igual número de conjeturas y tr
porcentajes, va a cambiar.
O va a ser intentos o se va a intentar.
Y entonces voy a cambiar lo que se muestra en función de la
cantidad de conjeturas que me quedan.
Si el número de conjeturas es igual a 1.
No quiero planear intentos, uno prueba queda, eso no tiene sentido.
Quiero imprimir un intento.
Así que aquí voy a usar el operador termitario o más
precisamente el operador condicional.
Voy a decir si el número de conjeturas igual a 1, luego establezca el número de conjeturas igual
ay si no, configúrelo en IES.
Y lo voy a imprimir que es qué está haciendo el porcentaje s, lo
que se devuelva aquí.
Entonces esto va a volver ya sea un IES y muestre la información
correcta.
Así que hice eso solo para ser un poco de
fantasía te muestra cómo puedes usar el terminal, imprime proporcionar la información correcta.
Después de que imprimí el número de intentos por última vez, luego quiero decirles
que ingresen una suposición.
Así que voy a aguantar algo
de información y solo diga printf solo ingrese una suposición y esto tendrá un salto de línea.
Así que ingrese una suposición y luego iré para leer en esa suposición usando scanf, sabemos cómo leer desde
el teclado.
Va a ser un número entero, así que estoy voy a hacer el porcentaje dy lo voy
a poner en la variable de conjetura.
Entonces necesito usar el ampersand.
Ahora tengo que hacer mi comprobación.
Tengo que comprobar si supongo que Soy el que me preocupa.
Asi que aqui tenemos otra condición de salida.
Voy a usar una declaración if.
Voy a decir si mi Supongo que es igual a mi número aleatorio, ¿qué
quiero hacer?
Bueno, primero quiero imprimir y dígales que
han adivinado correctamente.
Así que voy a imprimir felicitaciones, lo has adivinado.
Que mas quiero hacer si adivinan correctamente?
Quiero salir del bucle.
Entonces, ¿cómo puedo salir del bucle?
Podría poner freno.
Podría hacer un descanso, que saltará de mi bucle.
Ahora si no fuera igual, entonces Quiero agregar un else if.
Si no es igual, quiero verificar asegúrese de que hayan validado el número.
Así que antes de que dije que podrías tener un bucle anidado para la validación para
que ingresen nuevamente, usted no es necesario hacer eso, solo puede
tener una declaración f.
Entonces aquí quiero validar el número.
Si no es igual al número aleatorio,
quiero asegurarme de que esté entre 0 y 20.
Entonces, si la suposición es menor que 0 o estamos
usando un operador lógico o 2 barras paralelas o la suposición es mayor que 20,
que básicamente busca una suposición no válida.
Si ese es el caso y no soy voy a usar un corchete porque
solo tengo una declaración aquí, los corchetes son opcionales si solo
tiene una declaración.
Entonces, si ingresaron una conjetura no válida, todo lo que voy a hacer es imprimirf.
Voy a imprimir dije el número está entre 0 y 20.
Y lo que pasará aquí no es nada.
Solo se va a imprimir eso fuera
y pasará a la siguiente iteración.
Les va a decir como muchos intentos les quedan y va a
entrar en una conjetura.
Ahora si no quisieras valido números si ingresaron números
válidos para no contar como una suposición, entonces puedes tener un bucle anidado.
Pero si entran a algo 25, seguirá contando como una suposición.
Así que solo digo que establecí un número entre 0 y 20.
Si ingresaron un número válido pero no era correcto, esa sería
la cláusula else.
Aquí, solo voy a decir: lo siento, número equivocado, y les
diré si es mayor o menor que.
Y podría usar el ternario operador aquí, pero no voy a hacerlo.
Así que agreguemos un si aquí también.
De lo contrario, si aleatorio es mayor que adivina, entonces, ¿qué quiero imprimir?
Quiero imprimir lo siento, el porcentaje d es mal, el porcentaje d será su suposición.
Mi número es porcentaje s es la primera palabra.
Si el azar es mayor, mi número es mayor.
Mi número es mayor que eso y no
utilizo ningún percentil y solo tengo un salto de línea.
De lo contrario, si el número aleatorio es menos de lo que supongo, entonces quiero decirles que es
más bajo.
Entonces puedo hacer la copia y pega lo mismo.
Podría decir lo siento, el número está mal mi número es menor que eso.
Y de nuevo, en realidad podrías pon estos 2 otros ifs.
Podrías tener uno más si
y podría hacer una declaración condicional aquí.
Podrías tener el operador ternario, pero voy a usar 2 más ifs y diré que es
menos que eso.
Y luego eso será todo eso va a terminar el ciclo.
Y si salimos del circuito y no adivinamos correctamente y
excedimos nuestro número de intentos, luego solo les diré que tuvieron
5 intentos y que no adiviné el número y les voy a
decir el número.
Así que una última salida para que el usuario le diga decirles que no ganaron el juego y
decirles cuál era el número.
Así que ha tenido 5 intentos y ha fallado. el número era un número aleatorio.
De acuerdo, ¿eso tiene sentido?
Estamos haciendo muchas cosas aquí.
Estamos usando declaraciones if, de lo contrario declaraciones en un bucle y estamos implementando el
juego de números.
Y luego lo último somos nosotros volver de la función principal.
Así que vamos a compilar y ¿Qué debería haber estado
haciendo durante todo este ejercicio?
Deberías haber estado probando y trabajando en pequeños trozos.
Probablemente deberías tener comenzó a trabajar primero, solo obtenga
el número aleatorio para que funcione luego probar y compilar y probar.
Luego comienza tu ciclo.
Asegúrate de que tu bucle se ejecute solo el número de conjeturas, 5 veces como máximo y luego
hacer que funcione y pruebe.
Luego pregunte al usuario que responda algo de información, haz que
funcione y prueba.
Luego compare con cuándo salir si adivinan correctamente, prueban y luego escriben sus
declaraciones if prueba, así es como lo implementaría.
Así que construyamos esto y ver si se compila.
Con suerte, no cometí ningún error.
Voy a decir construir.
Tengo un error, yo tiene un número inválido.
Tiene que ser un número aleatorio, no aleatorio porque ese es el
nombre de mi variable.
Y esta vez tengo 0 errores 2 advertencias.
Tengo un porcentaje d esperar algunos int coincidente.
Olvidé apagar el número aleatorio o la suposición.
La suposición aquí y el adivinar y el otro.
Quiero decirles que su conjetura lo siento, supongo que estuvo mal, no tengo que hacer
esto, pero solo una pequeña cosa agradable.
Ahora vamos a construirlo porque tu siempre quiero arreglar sus advertencias.
Quieres tener 0 advertencias 0 errores.
Ahora, cuando ejecutamos esto, tenemos que probar.
Y hay muchas pruebas diferentes casos que desea ejecutar aquí.
Querrás ejecutar varias pruebas casos porque recuerde que nunca es bueno probar
una sola cosa.
Así que aquí dice que esto es una suposición. juego,
he elegido un número entre 0 y 20, que debes Supongo que te quedan 5 intentos.
Así que voy a poner 16.
Lo siento, 16 está mal, el el número es menor que eso.
Voy a intentar tenerlo 8.
8 está mal, menos que eso.
Voy a hacer 4.
4 esta mal, mi numero es mayor que eso.
Oh, cometí un error, yo no leí eso primero.
Entonces es mayor que 8.
Probemos 12.
Solo me quedan 2 intentos.
Supongo que lo correcto con 12.
Entonces dice felicitaciones.
Pero también desea probar una falla.
Quieres probar algunas cosas aquí, pero aquí déjame probar y voy a
decir mi suposición y Solo voy a poner 0.
0 es incorrecto.
Voy a seguir poniendo 0 y allí supongo que 5 veces me equivoqué.
Dice que has tenido 5 intentos y fallaron.
El numero que tu quería adivinar era 3.
Entonces eso funciona.
Ahora probemos para asegurarnos de lo que sucede si ingresamos números inválidos.
si entro 45.
Dije que el número es 0 y 20.
Entonces ese es otro caso de prueba y contó como un intento.
Si no quisiera esa cuenta como intente, podría tener un bucle anidado.
Creo que eso es todo.
Hemos probado todos los casos.
Probamos los casos en los que adivinó con éxito.
Hemos probado el caso donde no adivinaste correctamente.
Y probamos el caso donde ingresaste un número inválido.
Quizás la única otra prueba sería ser para asegurarse de que decía mayor que y menor que, que creo que
probamos en el primero, en realidad nos diría
para ingresar menor o mayor que.
Así que intentemos eso.
Así que en esta ocasión, cuando entro en 20, dice menos de lo que es bueno.
Ahora voy a entrar 10 y lo adiviné.
Así que supongo que son rápidos.
Pero deberíamos ver menos de y mayor que en la misma salida.
Inténtelo de nuevo, y el azar el número funciona porque estoy generando números
diferentes cada vez que ejecuto el programa.
20 está mal.
Ahora intentemos 19.
Probemos 1 y es mayor que eso.
Entonces veo más grande y menos que.
Así que estoy bastante seguro de que está funcionando.
Se ve muy bien para mí.
Una cosa que deberías haber notado había un pequeño error en
el programa que te estaba probando.
Entonces, cuando lo ejecutó porque tenemos esta ruptura aquí, todavía se va
a imprimir que fallé aunque cuando lo logré.
Entonces deberías haberte dado cuenta que en la salida anterior, supongo
que el número correcto.
Está impreso felicitaciones.
Pero luego también imprimí yo falló, eso no parece correcto.
Entonces la forma de arreglar eso eres tú no tienes un gran
avance, quieres tener un retorno.
Y ahora cuando regrese no
se imprimirá en la línea 39 si gana.
No se va a imprimir fuera que fallaste.
Así que una última prueba y deberías hemos detectado
esto antes, pero cuando construimos y adivinamos correctamente, no mostrará un error.
Para que podamos ahorrar, correr y cuando ejecuta este, tienes 5 conjeturas.
Voy a decir 10, menos que eso.
Vamos a decir 6, y lo adiviné.
Y te darás cuenta allí dice felicitaciones.
No vemos esa salida extra eso dice que yo también fallé.
Entonces quieres asegurarte agregue ese retorno en la línea 30 para
que el programa se ejecute correctamente.
Podría agregar otra declaración if si quería para que
no imprima la impresiónf, podría haber tenido un descanso aquí y luego
en printf podrías haber comprobado cuántas conjeturas también tenía que determinar si era menos
de 5 y luego felicitaciones.
Pero un pequeño error ahí, y Ojalá lo hayas
notado en las pruebas, la devolución lo solucionará.
Así que un pequeño programa ordenado.
Espero que esto te haya ayudado a aprender un mucho sobre el bucle y
todas sus declaraciones de decisión y realmente resolución de problemas.
Con suerte, sacaste esto y diseñé esto antes de que
empezaras a escribir código, eso siempre es importante.
Espero que esto ayude.
Proporcionaré el código fuente para que puede compararlo y verlo y analizarlo.
Gracias.