Algoritmo que revisa si un número está en un rango

Dos condiciones que se cumplen a la vez: el operador Y y los valores de borde, donde más se equivoca la gente.

El problema y su planteamiento

Lee un número. Si está entre 1 y 10 (incluidos), muestra Dentro; si no, Fuera.

Planteamiento: entrada, proceso y salida
EntradaProcesoSalida
Un número.Comprobar que sea mayor o igual a 1 y menor o igual a 10.Dentro si está en el rango (incluidos 1 y 10); Fuera si no.

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.

Diagrama de flujo del algoritmo dentro del rangoInicioLeer nn >= 1 Y n <= 10Escribir "Fuera"Escribir "Dentro"FinNoSí

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 dentro_del_rango
    Leer n
    Si n >= 1 Y n <= 10 Entonces
        Escribir "Dentro"
    SiNo
        Escribir "Fuera"
    FinSi
FinAlgoritmo
Pruebas del reto
EntradaSalida esperada
5Dentro
0Fuera

Con estas entradas, el programa debe mostrar exactamente esa salida.

Cómo pensarlo

Estar entre 1 y 10 son dos condiciones juntas: que sea mayor o igual a 1 y que sea menor o igual a 10. Se unen con el operador lógico Y, que solo da verdadero si ambas lo son.

La condición queda: n >= 1 Y n <= 10. No se puede escribir como 1 <= n <= 10: en pseudocódigo cada comparación va por separado.

Los bordes son el 1 y el 10: ambos cuentan como dentro, por eso se usan >= y <=. Por eso este reto se prueba con 0, 1, 10 y 11, que son los valores donde un error de signo se nota.

Errores comunes

  • Escribir n > 1 Y n <= 10: el 1 saldría como Fuera.
  • Usar O en lugar de Y: con O, casi cualquier número cumpliría alguna de las dos condiciones.
  • Encadenar comparaciones como en matemáticas (1 <= n <= 10): no funciona, hay que separarlas con Y.

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 dentro_del_rango
n = float(input())
if n >= 1 and n <= 10:
    print("Dentro")
else:
    print("Fuera")

Preguntas frecuentes

¿Qué hace el operador Y en una condición?

Une dos condiciones y da verdadero solo cuando las dos se cumplen. El operador O, en cambio, da verdadero si se cumple al menos una.

¿Por qué importan tanto los valores de borde?

Porque es donde se equivocan los signos > y >=. Un buen programa se prueba con los valores justo en el límite y uno antes y uno después.

Sigue con otro reto