Skip to main content

Command Palette

Search for a command to run...

001. Problema: Obtener el promedio de una lista de calificaciones

Updated
4 min read
001. Problema: Obtener el promedio de una lista de calificaciones

Problema

Dada una lista de calificaciones, calcula el promedio de un salón de clases. Las calificaciones son números enteros.

Ejemplo 1
Entrada: [10,9,9,8,5]
Salida: 8.2
Ejemplo 2
Entrada: [8,7,9,10,6]
Salida: 8
Resuleve el problema solo. Escribe a mano o en tu editor de código tu solución. Compara tu solución con el artículo.

1. Análisis

  • Entrada es una lista de números enteros; la salida es un número decimal.

  • Piden calcular el promedio. El promedio es la suma de los datos divididos por el número de estos.

  • Asumimos que las calificaciones miden del 0 al 10, que la lista no puede estar vacía, y que todos los datos son correctos.

2. Diseño

1. Idea de solución

  • Usar la función interna Suma(). Pero eso hace todo el trabajo. Por lo tanto, queda fuera.

  • Usar un ciclo para obtener el promedio. Elegimos esta.

2. Diseño del algoritmo

La técnica para resolver problemas de programación consiste en dividir el problema en problemas más simples.

Luego, refinamos el diseño para lograr pasos concretos hasta completar todos los pasos necesarios para resolver el problema.

El primer diseño

1. Sumar las calificaciones
2. Obtener el promedio

Primer refinamiento

1. Sumar las calificaciones
    1. Sumar una calificación con la siguiente
    2. Guardar el resultado de la suma
2. Repetir la suma hasta sumar todas las calificaciones
3. Dividir el resultado de la suma por la cantidad de calificaciones
4. Escribir el promedio

Segundo refinamiento

Inicializamos la variable suma en 0 para guardar el resultado de las sumas. 0 es un valor neutro. Al sumar 0 + un número, obtenemos el número.

Sumamos la calificación actual a suma. Esto porque visitamos una calificación de la lista de calificaciones a cada paso del ciclo. Al final, suma contendrá la suma de todas las calificaciones.

1. Sumar las calificaciones 
    1. Asignar 0 a suma
    2. Sumar la calificación actual a suma
    3. Guardar el resultado de la suma
2. Repetir la suma hasta sumar todas las calificaciones
3. Dividir el resultado de la suma por la cantidad de calificaciones 
4. Escribir el promedio

Tercer refinamiento

Organicemos las variables que usaremos:

  • En la variable tamaño guardamos el número de elementos de la lista de calificaciones.

  • Asignamos 0 a suma.

  • Asignamos 0 a i que es la variable de control del ciclo.

💡
Obtenemos el número de elementos de una lista o array con la función interna Longitud.

Usaremos un ciclo mientras. El ciclo se va a repetir mientras i < tamaño.

En cada paso del ciclo se ejecuta:

  • suma ← suma + calificaciones[i]

  • i++

💡
Es muy importante no olvidar aumentar la variable de control i. De lo contrario, el ciclo caerá en un ciclo infinito. Esto porque i siempre va a ser 0. Por lo tanto, la condición de parada del ciclo i < tamaño siempre evaluará true.

Ejecutemos en seco dos pasos del ciclo para ver qué estamos haciendo.

isuma
00 + 10 = 10
110 + 9 = 19 ...

Diseño final en pseudocódigo

Algoritmo Promedio:

# Variables
array[n] enteros: calificaciones
real: suma ← 0
entero: i ← 0
        tamaño ← Longitud(calificaciones)

inicio
    mientras i < tamaño hacer
        suma ← suma + calificaciones[i]
        i++
    fin mientras
    escribir(suma / tamaño)
fin

3. Comprobación en seco

Ejecutamos en seco el algoritmo para comprobarlo paso a paso.

Ejemplo 1

isuma
010
119
228
336
441

Promedio = 8.2

Al parecer, nuestro algoritmo es correcto. Hicimos un buen trabajo.

Ahora es tu turno. Ejecuta en seco el algoritmo con los datos del ejemplo 2.

3. Codificación

Una vez que tenemos el algoritmo, podemos traducirlo a cualquier lenguaje de programación. He aquí el algoritmo codificado en Python.

# Programa Promedio
# variables
calificaciones = [10,9,9,8,5]
tamanio = len(calificaciones)
suma = 0

# Obtener la suma de las calificaciones
i = 0
while i < tamanio:
    suma = suma + calificaciones[i]
    i+=1 

# Salida
print(suma/tamanio)

Comprueba el programa ejecutándolo. Si encuentras errores, es necesario depurar el programa. Depurar es estudiar el código para encontrar el error y solucionarlo.

4. Complejidad

Tiempo: O(n) (lineal) porque el algoritmo debe recorrer cada elemento de la lista.

Espacio: O(1) (constante) porque el algoritmo no utiliza una estructura de datos adicional.

Bibliografía

Joyanes Aguilar, L. (2008). Fundamentos de programación. Madrid: McGraw-Hill.

More from this blog

G

Gilberto Ramírez

13 posts

Soy un ingeniero de software con experiencia desarrollando aplicaciones web. Mi pila tecnológica es .NET, React, SQL. Me gusta escribir y compartir lo aprendido.