Algoritmo que suma números hasta que escriben cero

Un ciclo que no sabe cuántas veces se repetirá: el acumulador y el valor que avisa que ya hay que parar.

El problema y su planteamiento

Lee números hasta que escriban 0 y muestra la suma de todos.

Con 4, 6, 10 y 0, muestra:
Suma: 20

Planteamiento: entrada, proceso y salida
EntradaProcesoSalida
Una lista de números, que termina cuando se escribe 0.Ir sumando cada número a un acumulador mientras no sea 0.El texto Suma: seguido del total.

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 suma hasta el ceroIniciosuma <- 0Leer nn <> 0suma <- suma + nLeer nEscribir "Suma: ", sumaFinSíNo

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 suma_hasta_cero
    suma <- 0
    Leer n
    Mientras n <> 0 Hacer
        suma <- suma + n
        Leer n
    FinMientras
    Escribir "Suma: ", suma
FinAlgoritmo
Pruebas del reto
EntradaSalida esperada
4, 6, 10, 0Suma: 20
0Suma: 0

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

Cómo pensarlo

No sabes de antemano cuántos números van a escribir, así que no sirve un ciclo que cuente. Se usa Mientras: se repite mientras la condición sea verdadera, y se revisa antes de cada vuelta.

La suma empieza en 0 antes del ciclo: es el acumulador. Cada vuelta le suma el número leído. El 0 que escriben al final es el valor centinela: avisa que se acabó y no se suma.

El truco es leer un número antes del ciclo y otro al final de cada vuelta. Así, la condición n <> 0 siempre revisa el número más reciente. Si el primero ya es 0, el ciclo no se ejecuta y la suma queda en 0.

Errores comunes

  • No leer el siguiente número dentro del ciclo: el programa repetiría el mismo número para siempre (ciclo infinito).
  • Empezar la suma sin inicializarla en 0: la variable no tendría valor al sumar.
  • Leer solo dentro del ciclo y no antes: la condición se revisaría con una variable vacía.

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 suma_hasta_cero
suma = 0
n = float(input())
while n != 0:
    suma = suma + n
    n = float(input())
print("Suma: ", suma, sep="")

Preguntas frecuentes

¿Qué es un valor centinela?

Es un valor especial que marca el final de los datos. Aquí es el 0: cuando se escribe, el ciclo termina y no se suma.

¿Cuál es la diferencia entre Mientras y Para?

Para se usa cuando sabes cuántas vueltas dar. Mientras repite hasta que una condición deje de cumplirse, sin saber cuántas serán.

Sigue con otro reto