En este punto describiremos los elementos que conforman un programa típico desde el punto de vista de la programación en lenguaje C.
Un programa de computadora en un lenguaje estructurado tiene un esquema que se puede describir para todos los casos, independientemente del lenguaje que se seleccione. Este esquema general, de todo programa de computadora, tiene dos grupos de instrucciones:
En los lenguajes de alto nivel un algoritmo sencillo, conformado por unas cuantas instrucciones, se denomina procedimiento o programa principal, en el lenguaje C equivale a un modulo denominado función principal, según se muestra a continuación:
Main() /* Función principal */
{
Declaraciones ejecutables;
INSTRUCCIONES EJECUTABLES (Lectura, proceso y despligue de resultados);
}
El ámbito de la función principal esta delimitado por medio de llaves que encierran a las declaraciones y a las instrucciones ejecutables; toda información entre /*...*/ es un comentario que no se procesa.
Estas son un conjunto de instrucciones que por lo general son conocidas en la mayoría de los lenguajes de alto nivel como no ejecutables; su objetivo es dar a la computadora información sobre tipos de variables, arreglos, y características diversas, pero, en el caso del lenguaje C, también incluye la posibilidad de dar valores iniciales de variables.
Las instrucciones ejecutables son aquellas expresiones en las que se calcula o realiza algo, es decir son aquellas que implican hacer algo y no simplemente declarar características de variables o dar información.
Las instrucciones ejecutables más empleadas son por ejemplo calculo de expresiones de las instrucciones de reemplazo, las instrucciones de control de flujo o ramificaciones, los ciclos iterativos, etc. Es toda instrucción que implica un cambio u orden a ejecutar.
El conjunto de instrucciones anteriores (EJECUTABLES Y NO EJECUTABLES), se conoce como programa fuente.
El proceso de la información, en el caso particular del lenguaje C, se realiza por medio de módulos que el programador define y son en si mismos funciones. La primera de las funciones se conocerá como función principal o main(), las siguientes se podrán denominar arbitrariamente y agrupar parte del proceso que realizan nuestro programa, por ejemplo de f1() hasta fN(), según nuestra muy particular técnica de programación.
Además se cuenta con diversos elementos de la programación estructurada y funciones de biblioteca en conjunto con las funciones que el usuario define, permite la entrada de información, su procesamiento y salida de resultados, ese conjunto de funciones definirá en C nuestro programa fuente.
Con excepción de las funciones
de biblioteca, las funciones que defina el usuario por lo general incluirán
sus propias DECLARACIONES e INSTRUCCIONES EJECUTABLES, de esta manera un
problema extenso o complicado puede dividirse mediante módulos más
sencillos determinados en cada función.
PARTES DE UN PROGRAMA CONSIDERANDO MÓDULOS
(FUNCIONES O SUBPROCESO SEPARADOS)
#directivas del procesador <nom_arch.h>
#define nombe_equiv cadena_o
declaraciones sobre los tipos de funciones empleadas y, declaraciones de variables globales o que son válidas en todas las funciones;
main() /* Función principal */
{
Declaraciones sobre variables locales al proceso principal
INSTRUCCIONES EJECUTABLES;
Return(0);
}
función1(argumentos)
{
Declaraciones locales a este proceso o que actúan solo dentro de esta parte;
INSTRUCCIONES EJECUTABLES;
Return(expresión);
}
funciónX(argumentos)
{
Declaraciones locales a la función X este proceso o que actúan solo en este ámbito
INSTRUCCIONES EJECUTABLES;
Return(expresión);
}
funciónX(argumentos)
{
idem casos anteriores;
}
Como se observa el esquema más empleado para un programa en C se compone básicamente por:
Declaraciones
Una función principal [main()]
Funciones secundarias definidas por el usuario
El proceso de la información se lleva a cabo mediante la función principal [main()] auxiliada con funciones secundarias definidas por el programador que, en su conjunto, constituyen el programa. Dichas funciones obedecen a la definición clásica que indica que:
Dado el valor o valores de los argumentos de una función, se calcula un resultado único que la función regresa al lugar donde fue llamada.
Otro esquema empleado coloca las funciones secundarias antecediendo a la función principal, según se muestra a continuación:
Declaraciones
Funciones secundarias
Una función principal
las demás funciones, por lo general son llamadas a ejecución
dentro del ámbito de nuestra función principal y, por consiguiente,
ahí pueden regresar valores.
Main() /* función principal */
{
Declaraciones locales;
INSTRUCCIONES EJECUTABLES;
Return(0);
}
Observe que toda función se escribe con letra minúscula y que el ámbito de la función se inicia mediante una llave { que encierra el conjunto local de declaraciones e instrucciones ejecutables y que dicho ámbito está delimitado por una llave que cierra }, además toda declaración o instrucción ejecutable termina con un punto y coma
La sintaxis o escritura de las funciones que el programador defina es parecido a lo anterior. No obstante, debe tomarse en cuenta que en el lenguaje C, las funciones que el usuario genere pueden no regresar valor alguno. Cuando se requiere que la función regrese algún valor se usara la función:
Return(expresión);
Las funciones que únicamente realizan algo, pero que no necesitan regresar un resultado, indican esa condición mediante una declaración de tipo void y se omite la instrucción return.
Toda función secundaría definida por el usuario deberá declararse, indicando su tipo (entera, real o de carácter), inmediatamente después de las directivas del preprocesador. Por ejemplo:
De tipo entero, por ejemplo: int funcionz(argumentos)
De tipo real, por ejemplo: float funciony(argumentos)
De tipo void (que no regresa nada): void funcionx(argumentos)
De tipo void (sin argumentos): void funcionw(void)
EL ESQUEMA GENERAL PARA LAS FUNCIONES QUE EL PROGRAMADOR DEFINE ES:
Declaración_de_tipo_de_la_funcion; /* por ejemplo: int mi_funcion(void)
Tipo_y_nombre_de_la_función(argumentos) /* por ejemplo mi_funcion(void) */
{
Declaraciones locales;
INSTRUCCIONES EJECUTABLES;
Return(expresión);
}
comentario: al iniciar el ámbito de la función, su nombre jamas incluye un punto y coma al final, solo lo incluyen las declaraciones, funciones de biblioteca e instrucciones ejecutables.
