¿Cómo verificamos la corrección de un algoritmo?

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.

Esta forma de razonamiento informal debe aplicarse para verificar un algoritmo antes de implementarlo como un programa.

More Interesting

¿Debería darse más reconocimiento a las personas que hacen el trabajo de limpiar conjuntos de datos para que puedan ser utilizadas por personas que ejecutan algoritmos de aprendizaje automático?

Cómo usar el hash rodante y la búsqueda binaria para encontrar la subcadena común más larga

¿Cuál es el mejor algoritmo para usar para la detección de valores atípicos en el flujo de datos?

Además de la complejidad de tiempo y espacio, ¿qué otras métricas de rendimiento deben tenerse en cuenta al medir el rendimiento de un algoritmo?

Rendimiento del software: ¿los algoritmos de cálculo se ejecutarán más rápido cuando se implementen en Node.js en lugar de C?

Dada una matriz con 1s y 0s, necesitamos crear una matriz tal que a [i] [j] = 1, si solo cada elemento en la fila i y columna j es 1, de lo contrario 0. Tenemos que usar un espacio constante y tener Una óptima complejidad temporal. ¿Cuáles son algunas posibles soluciones?

¿Cómo se puede observar fácilmente que la complejidad temporal del código escrito es exponencial?

¿Qué es la recursividad en matemáticas?

¿Cuál es la estructura de árbol más eficiente para crear un índice para un almacén en memoria?

¿Qué estrategia debo usar para resolver esta pregunta? - HackerEarth | Iniciar sesión (Equipo del proyecto | HackerEarth)

¿Desde dónde debo comenzar a aprender los algoritmos necesarios para la programación competitiva?

¿Es mejor representar aristas en un gráfico que sale de un vértice como miembros de una matriz dinámica o una lista vinculada?

Cómo encontrar el subconjunto contiguo de suma máxima utilizando un método de divide y vencerás

¿El operador 'in' mientras busca claves en Python Dictionary toma O (1)? Si es así, ¿cómo?

¿Qué tan difícil es la entrevista de Google? ¿Qué tipo de algoritmos y preguntas de ingenio espero?