El problema y su planteamiento
Pide la contraseña hasta que escriban jaguar y al final di cuántos intentos fueron.
Si escriben gato, perro y jaguar, muestra:
Entraste en 3 intentos
| Entrada | Proceso | Salida |
|---|---|---|
| Contraseñas que se van escribiendo, hasta que se escribe jaguar. | Pedir la clave y contar cada intento, hasta que la clave sea jaguar. | El texto Entraste en, el número de intentos y la palabra intentos. |
Diagrama de flujo
Así se dibuja el algoritmo: el óvalo marca el inicio y el fin, el paralelogramo es una entrada o una salida, el rectángulo es un proceso y el rombo es una decisión.
Pseudocódigo
Esta es una solución. Léela línea por línea con el diagrama al lado y compara con lo que tú escribirías.
Algoritmo contrasena
Definir clave Como Texto
intentos <- 0
Repetir
Leer clave
intentos <- intentos + 1
Hasta Que clave = "jaguar"
Escribir "Entraste en ", intentos, " intentos"
FinAlgoritmo
| Entrada | Salida esperada |
|---|---|
| gato, perro, jaguar | Entraste en 3 intentos |
| hola, jaguar | Entraste en 2 intentos |
Con estas entradas, el programa debe mostrar exactamente esa salida.
Cómo pensarlo
Siempre se pide la contraseña al menos una vez, y solo después se revisa si era la correcta. Para eso existe Repetir… Hasta Que: ejecuta el bloque primero y revisa la condición al final.
Un contador empieza en 0 y sube de 1 en 1 cada vez que se pide la clave: intentos <- intentos + 1. Al salir del ciclo, el contador dice cuántos intentos fueron.
La condición de salida es clave = "jaguar". El ciclo se repite mientras no se cumpla y termina en cuanto sea verdadera. La clave se define como Texto.
Errores comunes
- Usar Mientras sin leer antes la clave: la condición se revisaría con la variable vacía.
- Poner el contador fuera del ciclo: contaría una sola vez.
- Escribir "Jaguar" con mayúscula en la condición: el texto se compara tal cual, y jaguar no es igual a Jaguar.
El mismo programa en Python
Si más adelante pasas a Python, así se ve la misma lógica. Cambian las palabras (print, input, if) y los bloques se marcan con sangría en lugar de FinSi o FinPara.
# Algoritmo contrasena
clave = ""
intentos = 0
while True:
clave = input()
intentos = intentos + 1
if clave == "jaguar":
break
print("Entraste en ", intentos, " intentos", sep="")
Preguntas frecuentes
¿En qué se diferencia Repetir de Mientras?
Repetir ejecuta el bloque al menos una vez y revisa la condición al final. Mientras revisa la condición antes de cada vuelta y puede no ejecutarse ninguna.
¿Qué es un contador?
Una variable que empieza en 0 y sube de 1 en 1 cada vez que algo ocurre, para saber cuántas veces pasó.