Errores Comunes en La Programación - norman-ipn/Errores GitHub Wiki

  1. Si al utilizar funciones de la biblioteca matemática no incluye el archivo de encabezado matemático, se producirá un error de sintaxis. Por cada función de la biblioteca estándar que utilice en un programa, debe indicar un archivo de encabezado estándar.
  2. La omisión de la clase de valor devuelto de una definición de función es un error de sintaxis si el prototipo especifica una clase devuelto distinto de int.
  3. No devolver un valor desde una función que supuestamente debe hacerlo es un error de sintaxis.
  4. La devolución de un valor desde una función cuya clase de devolución se ha declarado como void es un error de sintaxis.
  5. La declaración de parámetros de función de la misma clase como float x, y, en lugar de float x, float y, causará un error de compilación debido a que para cada parámetro de la lista de parámetros se requiera una clase de datos.
  6. Un punto y coma después del paréntesis derecho de la lista de parámetros de una definición de función es un error de sintaxis.
  7. Volver a definir un parámetro de función como variable local en la función es un error de sintaxis.
  8. El ( ) de una llamada de función de hecho es un operador de C++. Provoca que se invoque a la función. Omitir el () de una llamada de función que no tiene argumentos no es un error de sintaxis. Sin embargo si pretendía que se llamara a la función, esto no sucederá.
  9. Definir una función dentro de otra es un error de sintaxis.
  10. Sucede un error de sintaxis si el prototipo de función, el encabezado de la función y las llamadas de la función no coinciden en el número, clase de datos y orden de los argumentos y parámetros, así como en el tipo de valor devuelto.
  11. La omisión del punto y coma al final de un prototipo de función es un error de sintaxis.
  12. Las llamadas de función que no sean iguales a su prototipo provocan errores de sintaxis.
  13. Cuando el prototipo de función y la definición de la función no son iguales, sucede un error de sintaxis.
  14. La conversión de una clase de datos más alto en la jerarquía de promoción a un tipo menor puede cambiar su valor.
  15. Omitir el prototipo de una función cuando esta no ha sido definida antes de ser llamada por primera vez es un error de sintaxis.
  16. El intento por generar números aleatorios con srand() en lugar de rand() es un error de sintaxis, debido a que la función srand() no devuelve un valor.
  17. Asignarle el equivalente entero de una constante de enumeración a una variable del tipo de la enumeración es un error de sintaxis.
  18. Si después de definir una constante de enumeración intenta asignarle otro valor, provocará un error de sintaxis.
  19. Indicar varios especificadores de clase de almacenamiento para un identificador es un error de sintaxis. Sólo se le puede aplicar un especificador de clase de almacenamiento a un identificador. Por ejemplo, si incluye register, no incluya también auto.
  20. Por lo general es un error de lógica utilizar el mismo nombre para un identificador dentro de un bloque interno que para un identificador que es parte de un bloque externo cuando, de hecho, el programador quiere que el identificador del bloque externo esté activo en el bloque interno.
  21. El no devolver un valor desde una función recursiva cuando sea necesario, causará que casi todos los compiladores generen un mensaje de advertencia.
  22. La omisión del estado primitivo o la escritura incorrecta del paso de recursión de modo que no converja al estado primitivo, provocará una recursión infinita y agotará tarde o temprano la memoria. Esto es análogo al problema de los ciclos infinitos en las soluciones iterativas (no recurrentes) La recursividad infinita también puede ser provocada al proveer una entrada no esperada.
  23. La codificación de programas que dependen del orden de evaluación de los operandos de los operadores que no sean &&, ||, ?: ni coma (,) puede generar errores, pues los compiladores no necesariamente evaluarán los operandos en el orden que el programador espera. MIGUEL Á. TOLEDO MARTÍNEZ SUGERENCIAS, OBSERVACIONES Y CONSEJOS: SEGUNDA PARTE SUGERENCIAS-3
  24. Es un error de lógica que una función no recursiva se llame a sí misma, ya sea directa o indirectamente, a través de otra función.
  25. Los programas en C++ no se compilan a menos que se indiquen prototipos de función para todas las funciones o que se definan las funciones antes de usarlas.
  26. Debido a que los parámetros de referencia se mencionan sólo por nombre en el cuerpo de la función llamada, el programador podría tratarlos inadvertidamente como parámetros de una llamada por valor. Esto puede provocar efectos secundarios inesperados si el invocador modifica las copias originales de las variables.
  27. Declarar múltiples referencia en una instrucción suponiendo que el & se distribuye a través de una lista de nombres de variables separada por comas. Para declarar las variables x, y y z como referencias a un entero emplee la notación int &x = a, &y = b, &z = c; en lugar de la notación incorrecta int& x = a, y = b, z = c; o la otra notación incorrecta común int &x, y, z;
  28. No inicializar una variable de referencia al declararla es un error de sintaxis.
  29. Intentar reasignar una referencia declarada previamente como alias de otra variable es un error de lógica. El valor de la otra variable simplemente se le asigna a la localidad para la que la referencia es un alias.
  30. Devolver un apuntador o referencia a una variable automática en una función llamada es un error de lógica. Algunos compiladores presentarán un mensaje de aviso al encontrar esto en un programa.
  31. Especificar e intentar utilizar un argumento predeterminado que no sea el de más a la derecha (último) sin tomar los predeterminados de todos los argumentos a su derecha es un error de sintaxis.
  32. Intentar acceder a una variable no global desde un bloque exterior por medio del operador unario de resolución de alcance es un error de sintaxis si no existe una variable global con el mismo nombre que la variable del bloque exterior, y es un error de lógica si es que existe.
  33. La creación de funciones sobrecargadas con listas de parámetros idénticas y diferentes tipos de devolución es un error de sintaxis.
  34. Una función a la que se le han omitido los argumentos predeterminados podría ser llamada de manera idéntica a otra función sobrecargada; esto es un error de sintaxis. Por ejemplo, cuando un programa tiene tanto una función que explícitamente no recibe argumentos como otra con el mismo nombre que contiene sólo argumentos predeterminados, sucede un error de sintaxis cuando se intenta utilizar dicho nombre de función en una llamada que no pasa argumentos.
  35. No poner la palabra clave class antes de cada parámetro de tipo de una plantilla de función es un error de sintaxis.
  36. No emplear todos los parámetros de tipo de una plantilla de función en la firma de la función es un error de sintaxis.

Bibliografía

http://azul2.bnct.ipn.mx/c/funciones/archivos%20%28.pdf%29/complemento%20lecciones%2010-17.pdf