Antes de continuar con lo
siguiente les voy a mostrar un ejemplo (Ejemplo 3.2), el enunciado dice:
El siguiente programa copia un
mensaje en un array de caracteres y lo imprime en la
pantalla. Ya que printf() y strcpy() (una función de cadena) se utilizan, se necesitan sus archivos de
cabecera específicos.
/* nombre del archivo demoinc2.c
utiliza dos archivos de cabecera
*/
#include
<stdio.h>
#include
<string.h>
int main(){
char
mensaje[20];
strcpy
(mensaje, "Atapuerca\n";
/* Las
dos líneas anteriores también
se pueden sustituir por
char mensaje[20] =
"Atapuerca\n";
*/
printf(mensaje);
return 0;
}
Para explicar un poco el programa
anterior, tenemos que inicialmente declara dos librerías (<stdio.h> que es la
librería estándar de entrada y salida, y la librería <string.h> que engloba
ciertas funciones de cadena, que en este caso nos servirá para utilizar la
función strcpy()). Luego tenemos la función main en donde se desarrolla todo lo que se desea, en donde declaramos una
variable de tipo char y posteriormente utilizamos la función strcpy() la cual su función no es mas que
copiar "Atapuerca\n" en la variable mensaje. Y finalmente se procede a imprimir por pantalla
o consola la variable mensaje y la función main finaliza con un retorno de valor 0.
Hay que tener en cuenta que los
archivos de cabecera o conocidos también como librerías, van con la extensión
.h mientras que los archivos fuente con la extensión .c
Ahora si prosigamos con el
siguiente tema =)
Creación de un
programa
Una vez creado un programa en C
como el anterior, a este se lo debe ejecutar. Los pasos para realizar dependerá
del compilador que utilizaremos. A continuación se mostrarán los pasos más
generales escritos en la página 82 del libro escrito en la bibliografía:
Ø Al utilizar un editor de texto
para escribir el programa y posteriormente grabarlo en un archivo; esto
constituye el código fuente del programa.
Ø Después se compila el código fuente; en otras palabras se traduce el
código fuente en código objeto (es decir lenguaje máquina, es entendible por el
computador).
Ø Finalmente se enlaza el código objeto con las bibliotecas
correspondientes (una biblioteca C contiene código objeto de un grupo de
funciones las cuales realizan tareas, tales como mostrar en pantalla alguna
información o de realizar un cálculo de promedio de varios números.
El proceso de
ejecución de un programa en C
El proceso de ejecución de un programa por lo general no suele funcionar
a la primera vez, esto se da porque casi siempre existen errores de sintaxis
(por ahí nos olvidamos de poner un “;”) o en tiempo de ejecución. El siguiente
flujograma representa el proceso completo de un programa:
Depuración de un
programa en C
Muy pocas veces los programas suelen funcionar correctamente la primera
vez que se los ejecuta. Los programas producen errores que son detectados,
aislados y corregidos. Todo este proceso de encontrar los errores se llama depuración de un programa.
El momento que el compilador encuentra un error, éste nos muestra un mensaje de error el cual nos indicará
que se ha cometido un error. A veces el interpretar estos mensajes de error
suelen ser un poco difícil y se suele llegar a conclusiones erróneas, y también
varían de un compilador a otro.
Existen tres tipos de errores: de sintaxis, lógicos y de regresión.
De sintaxis
Estos errores son aquellos que se
producen debido a las reglas de la gramática del lenguaje. Los errores típicos
son por escritura incorrecta de palabras reservadas o falta de signos de
puntuación (punto y coma, comillas, entre otros). Estos son los errores más
fáciles de encontrar, puesto que ya son detectados y aislados por el
compilador.
Lógicos
Estos representan a los errores
del programador en el diseño del algoritmo y posterior programa. Estos errores
son más difíciles de encontrar puesto a que no suelen ser detectados por el
compilador. A continuación se muestra un ejemplo mediante el cual se podrá
entender de mejor manera este tipo de errores.
double peso = densidad * 5.25 * PI * pow(longitud, 5)/4;
A simple vista la sentencia no
contiene un error, pero resulta que el 3er asterisco debía ser +. En este caso
el compilador no produce ningún mensaje de error de sintaxis porque no se ha
cometido ningún error, y se procederá a compilar el programa y se ejecutará
bien, aunque a la final no producirá el resultado que se desea.
De regresión
Estos errores son aquellos se
crean accidentalmente cuando se intenta corregir un error lógico. Los errores
de regresión son comunes , y son fáciles de leer y corregir.
Una ley no escrita es que:
<<un error se ha producido, probablemente, por el último código
modificado>>[1]
Mensajes de error
Los compiladores emiten mensajes
de errores o una advertencia en la fase de compilación, de enlace o de
ejecución de un programa.
Tenemos los errores se agrupan en
tres grandes grupos los cuales son los siguientes:
Ø
Errores fatales; algunos de estos
indican un error interno del compilador. Al momento que se da uno de estos
errores, la compilación se detiene en ese instante, procedemos a tomar la
acción apropiada y después volvemos a inicial la compilación.
Ø
Errores de sintaxis; estos son los
errores típicos de sintaxis. El compilador terminará la fase actual de
compilación y se detiene.
Ø
Advertencias; esto no impide la
compilación, esto solo nos indican condiciones que son un poco sospechosas pero
son legítimas como parte del lenguaje.
Errores en tiempo de ejecución
Existen dos tipos de errores en
tiempo de ejecución, por un lado están los que son detectados por el sistema
mientras se ejecuta un programa en C; y del otro lado están los que permiten la
terminación del programa pero producen resultados incorrectos.
Estos errores pueden ocurrir como
resultado de que un programa obliga a la computadora a realizar una operación
ilegal, como por ejemplo, dividir un número para 0.
Elementos de un
programa en C
En lenguaje C, un programa consta de uno o más archivos. Estos archivos
son traducidos en diferentes fases (1ra fase es el pre-procesado, esto hace la
inclusión de archivos y la sustitución de macros; el resultado de este
pre-procesado es una secuencia de tokens).
Tokens
Estos son los elementos léxicos
de los programas, los cuales existen 5 clases que son: identificadores, palabras reservadas, literales, operadores y otros
separadores.
Identificadores
Los identificadores son una
secuencia de caracteres, letras, dígitos y guión-bajo. Donde el primer carácter
debe ser una letra (algunos compiladores admiten el carácter “_”). Cabe resaltar
que las letras mayúsculas y minúsculas son distintas. Por ejemplo:
Nombre apellido edad Dia_Nacimiento
Palabras reservadas
Una palabra reservada es una característica
asociada con algún significado especial para cualquier lenguaje de programación.
Estas palabras reservadas no se pueden utilizar como nombre de identificador o
de una función. Por ejemplo:
enum char int float void
Comentarios
De este tema ya se habló un poco
en el tema anterior =) =)
Signos de puntuación y separadores
Todas las sentencias en lenguaje
C deben terminar con “;” y tenemos otros signos de puntuación los cuales son:
¡ %
^ & * ( ) - + = { } ~
[ ] \ ; ’ : < > ? , . / ”
Archivos de cabecera
Los archivos de cabecera son
archivos especiales que contienen declaraciones de elementos y funciones de
biblioteca. Para acceder y utilizar estos macros, constantes, tipo y funciones
almacenados en una librería procedemos a utilizar la directiva #include para insertar el
archivo de cabecera correspondiente a nuestro programa. Por ejemplo para
utilizar la función pow() añadimos la librería math.h con la directiva:
#include <math.h>
Bibliografía y Net-grafía:
Luis Joyanes Aguilar, Ignacio
Zahonero Martinez. (1999). PROGRAMCACIÓN EN C. Metodología, algoritmo y estructura de
datos.
Madrid: Editorial McGraw-Hill.
[1] (Luis Joyanes Aguilar, Ignacio Zahonero Martinez, 1999)

No hay comentarios:
Publicar un comentario