Errores
Sitio: | Facultad de Ingeniería U.Na.M. |
Curso: | Computación ET-344 |
Libro: | Errores |
Imprimido por: | Invitado |
Día: | miércoles, 22 de enero de 2025, 12:50 |
1. Tipos de Errores
Por supuesto, somos humanos, y por lo tanto nos equivocamos. Los errores de programación pueden clasificarse en varios tipos, dependiendo de la fase en que se presenten.
Recordemos que en C++ tenemos:
En cada una de estas 5 etapas pueden ocurrir errores:
- Errores de sintaxis
- Warnings o avisos
- Errores de enlazado
- Errores de ejecución
- Errores de diseño
Veamos cada uno de ellos.
2. Errores de Sintaxis
Los errores de sintaxis, o sintácticos, ocurren cuando el programador escribe código que no va de acuerdo a las reglas de escritura del lenguaje de programación.
Estos errores son observados durante la Compilación y ocurren porque la sintaxis del lenguaje no es correcta .
Observación:
Muchas veces los alumnos NO observan el texto del Error y este texto es importante para saber el por que del error. Argumentos como que no entienen Inglés suelen ser frecuentes como para evitar interpretar el mensaje de error.
Cuestiones como:
- Olvidarnos de un punto y coma al final de una sentencia.
- No cerrar llaves en algún bloque de código, método, clase o en alguna estructura de control.
- Repetir variables con el mismo nombre aunque sean de diferente tipo.
- Asignar en una variable otra variable con tipo de dato diferente:
Ejemplos:
include <iostream> //faltó el #
float x=3 //faltó ;
etc...
En estos casos la etiqueta de la IDE indica : ERROR !
3. Warnings o avisos
Warnings o avisos
Estos no son Errores, como su nombre lo indica son Advertencias y pueden ser ignoradas, pero se recomienda al menos leerlas como para ver si se entienden y están dentro de lo que sabemos y solo decidimos ignorarlo.
Ejemplo: Definir una variable y no usarla genera una advertencia.
4. Errores de enlazado
Antes de ver el por que de los errores de enlazado vamos a tratar mostrar como funciona un compilador.
Recordemos que el Compilador de C++ es un programa que traduce el códig fuente del programador en un código Objeto ejecutable ( ceros y unos )
El compilador realiza VARIAS pasadas
y en cada una de ellas realiza alguna acción que busca generar el ejecutable.
- Toma el l código fuente y realiza un análisis Lexico, Siintáctico y Semántico , esto NO facil de realizar y la comprensión de ello escapa a nuestra materia. En esta etapa controla por ejemplo variables no definidas, palabras claves mas escritas, reemplazo de constantes simbólicas, etc.
- Se incorpora el código fuente correspondiente a las librerías para ir formadno un código objeto o módulo de objeto. Un programa puede tener muchos objetos y bibliotecas que necesitan ser unidas entre sí para crear el ejecutable.
- Se crean los conectores, para enlazar todos los componentes del programa.
- Se reasignan los bloques de memoria dentro del programa de modo que una pieza no sobreponga a otra parte en la memoria, esto sería parte de la optimización.
- Los archivos compilados se graban en el disco u otro tipo de memoria permanente.
- El resultado es un archivo o programa ejecutable.
Como vemos hay varios pasos.
Errores de Enlazado
El compilador intenta enlazar ( unir , incorporar ) código fuente de las librerías pero NO las encuentra, puede ser una función que NO existe en una librería o una Librería que no se encuentra. En este caso tira un error de Enlazado.
5. Errores de ejecución
Estos errores son conocidos también como errores en tiempo de ejecución, el compilador TERMINÓ su tarea y al ejecutar el programa pueden aparecer estos errores.
Observación:
Recordemos que con la sentencia if se pueden producir ramas o partes de códigos que NO son ejecutadas siempre,
así que podría suceder que durante una ejecución y con datos determinados NO existan errores de ejecución.
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{ float a,b;
cout<<"Ingrese el Dividendo: "<<endl;
cin>>a;
cout<<"Ingrese el Divisor: "<<endl;
cin>>b
cout<<"El cociente es : "<<a/b<<endl;
return 0;
}
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, char *argv[])
{ float a;
cout<<"Ingrese un númeror: "<<endl;
cin>>a;
cout<<"la Raiz de : "<<a<< " es :"<<sqrt(a)<<endl;
return 0;
}
6. Errores de diseño
Errore s de diseño o errores de lógica, son los mas dificiles de detectar. ¿Por que?
Sucede que cuando uno piensa o razona un ejercicio le resulta dificil tomar distancia y observar el error.
Frecuentemente si uno le pide a otra persona o simplemente deja el asunto y lo retoma mas tarde NO podrá entender como no veía el error.
Por supuesto NO todos los casos son como lo mencionado, algunas veces debemos tomar parpel y lapiz o simplemente correr el Depurador o Debug para poder entender el por que del error.
Veamos algún ejemplo:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{ int acumulador,x;
>cout<<"Ingrese un numeror: "<<endl;
cin>>x;acumulador=acumulador+x;
cout<<"Ingrese un numeror: "<<endl;
cin>>x;acumulador=acumulador+x;
cout<<"Ingrese un numeror: "<<endl;
cin>>x;acumulador=acumulador+x;cout<<"El promedio de los tres numeros ingresados es: "<<acumulador/3<<endl;
return 0;}