Antes de proceder a implementar un algoritmo como programa, se debe verificar su corrección. Hay formas formales de hacerlo, pero aquí se utilizan métodos informales.
Al considerar el algoritmo que se acaba de desarrollar, primero se verifica el caso general, es decir, hay números en el archivo. Después de abrir el archivo, el punto de lectura actual se establece en el primer número. Al ingresar la instrucción de bucle, se lee el número actual y el punto de lectura en el archivo avanza al siguiente elemento. Finalmente, el marcador de fin de archivo será el siguiente elemento que se leerá y la condición ‘no al final del archivo’ se vuelve falsa y la salida se realiza desde el bucle. Esto muestra que dentro del bucle solo se leen los números del archivo y no se intenta tratar el marcador de fin de archivo como un número. Por lo tanto, todos los números en el archivo se leen pero nada más. Al estudiar el cuerpo del bucle, se observa que cada vez que se lee un número, se agrega al total acumulado y se incrementa el conteo. Por lo tanto, como ambas cantidades comienzan en cero y el cuerpo del bucle se ejecuta para cada número, el total acumulado y el recuento de números deben ser correctos, por lo tanto, el promedio debe ser correcto.
Después de verificar el caso general, se deben verificar las condiciones de contorno. En este caso, la única condición límite es el caso de que el archivo esté vacío. En este caso, el recuento se inicializa a cero, el cuerpo del bucle nunca se ejecuta, por lo tanto, el recuento de números permanece en cero. La condición ‘recuento de números es cero’ en la declaración condicional es entonces verdadera y se emite el mensaje apropiado.
- ¿Qué es mejor: una lista enlazada de codificación o el uso de libs de plantillas estándar?
- ¿Cuál es la diferencia entre el algoritmo que venció a los humanos en el ajedrez y el algo que venció a los humanos en Go?
- ¿Por qué BFS no puede resolver todos los problemas de ruta más corta de una sola fuente?
- ¿Qué tan buena es la calidad de los problemas de HackerRank en comparación con los problemas de Topcoder, Codeforces, Codechef?
- ¿Cuándo sería el algoritmo A más lento que el algoritmo B? Demuestre su respuesta con la ayuda de un ejemplo.
Esta forma de razonamiento informal debe aplicarse para verificar un algoritmo antes de implementarlo como un programa.