Subprogramas

     Un subprograma es un conjunto de instrucciones precisas, específicas y detalladas, escritas en un lenguaje particular, necesarias y suficientes para la solución de un problema, que por sí solas no constituyen un programa.

     Se reconocen tres tipos de subprogramas:

  1. aquellos que pueden ser definidos en una sóla oración y producen un sólo valor

  2. aquellos que necesitan más de una oración para su definición y producen un sólo valor

  3. aquellos que producen varios valores ó ninguno


     En el lenguaje C éstos reciben el nombre genérico de función y tienen ciertas características en común:
  • constan de dos partes: prototipo y definición

  • comienzan indicando el tipo de valor que producen: int, short int, long int, unsigned int, float, double, long double, char ó void

  • continuan con el nombre de la función

  • por último, entre paréntesis, los parámetros formales y sus tipos

  • terminan con la oración return antes del último cierra-corchete: }


Prototipos

     Se colocan entre las directrices al compilador y el comienzo del programa.  Entre paréntesis sólo se indica el tipo de cada parámetro formal.  Termina con el signo de punto y coma: ;.  Si el parámetro formal es un apuntador (localización) debe ir seguido de un asterísco: *.

Ejemplos:

#include<math.h>

int Ejemplo1( int, float );
void Ejemplo2( float*, char );

int main( void )
{

Definiciones

     Se colocan al final del programa.  Entre paréntesis se indica el tipo de cada parámetro formal y su nombre.  No termina con el signo de punto y coma: ;.  Si el parámetro formal es un apuntador (localización) debe ir precedido de un asterísco: *.  Su composición es similar a la de un programa; tiene principio, documentación, declaraciones, oraciones y final.  En la oración return se indica el valor producido por la función, si alguno.

Ejemplo:

   return 0;
}

int Ejemplo1( int N, float X )
{

   /* Propósito : parte entera de XN */
   /* Autor: Prof. Cabassa */

   int J;

   J = pow( X, N );

   return J;

}


Usos

     Se utilizan de igual forma y manera que las funciones predefinidas, teniendo en cuenta que exista correspondencia, tanto en cantidad como en tipo, entre los argumentos y los parámetros formales.  Si el parámetro formal es un apuntador debe de ir precedido por el símbolo &.  Si la función no produce valor no puede asociarse con operador alguno.













Subprograma tipo "Instrucción aritmética"

     Es utilizado para definir funciones que puedan ser definidas en una sola oración.

tipo nombre( parámetros ) { return expresión; }
  1. Debe aparecer al final del programa.
  2. El tipo de valor se refiere al tipo de valor devuelto por la función.

  3. EL nombre de la función se construye iqual a los nombres de las variables.

  4. Los parámetros formales son nombres de variables representativas de los valores necesarios para evaluar la función.  Corresponden al concepto algebráico de variable independiente.  Deben ir precedidos de su tipo.

  5. La expresión que define la función.


     Una vez definida, la función es utilizada de igual forma y manera que las funciones predefinidas, teniendo en cuenta que exista correspondencia, tanto en cantidad como en tipo, entre los argumentos y los parámetros formales.

Ejemplo:

#include<stdlib.h>
#include<stdio.h>
#include<math.h>

double Cubo( double );

int main( void )
{
   /* Propósito : Elevar valor al cubo */
   /* Autor: Prof. Cabassa */
   double X, Y;
   printf("X         Y\n");
   for ( X = 0.0; X <= 100.0; X += 5.0 )
   {
      Y = Cubo( X );
      printf("%lf         %lf\n", X, Y );
   }
   return 0;
}

double Cubo( double A ) { return A * A * A; }


Subprograma tipo "Función"

  • Es utilizado para definir funciones que requieran más de una oración para su definición.
  • Estas oraciones tienen que ser compiladas por separado.
  • Deben aparecer al final del programa.

Descripción :

tipo de valor nombre de la función( parámetros formales)
{

   /* propósito de la función */

   declaraciones de las variables utilizadas en la definición

   oraciones que definen la funcion

   return expresión;

}
  1. El tipo de valor se refiere al tipo de valor devuelto por la función.

  2. El nombre de la función se construye iqual a los nombres de las variables.

  3. Los parámetros formales son nombres de variables representativas de los valores necesarios para evaluar la función.  Corresponden al concepto algebraico de variable independiente.  Deben ir precedidos de su tipo.

  4. La expresión que define la función.

Una vez definida la función es utilizada de igual forma y manera que las funciones predefinidas, teniendo en cuenta que exista correspondencia, tanto en cantidad como en tipo, entre los argumentos y los parámetros formales.













Ejemplo:

#include<stdlib.h>
#include<stdio.h>
#include<math.h>

double Coseno( double );

int main( void )
{
   /* Propósito : Cosenos de X */
   /* Autor: Prof. Cabassa */
   double X, Y;
   printf("Entre el primer ángulo\n");
   for ( scanf("%lf",&X); !(X == 55555.0); scanf("%lf",&X) )
   {
      Y = Coseno( X );
      printf("Cos %lf = %lf\n", X, Y );
      printf("Entre el próximo ángulo\n");
   }
   return 0;
}

double Coseno( double X_en_grados )
{
   /* Propósito : Coseno de X */
   /* Autor: Prof. Cabassa */
   double X, Suma, N, Var1, Var2;
   X = 3.141593 * X_en_grados / 180.0;
   Suma = 1.0;
   N = 1.0;
   Var1 = 1.0;
   Var2 = - pow( X, 2 ) / ( 2.0 * N * ( 2.0 * N - 1.0 ) ) * Var1;
   while ( ! ( fabs( Var2 - Var1 ) < 1.0E-5 ) )
   {
      Suma += Var2;
      N ++;
      Var1 = Var2;
      Var2 = -pow(X,2)/(2.0*N*(2.0*N-1.0))*Var1;
   }
   return Suma;
}









Subprograma tipo "Subrutina"

void nombre de la función( parámetros formales precedidos de su tipo
                                          tipo y de un asterisco )
{

   /* propósito de la función */

   declaraciones de las variables utilizadas en la definición.

   oraciones que definen la funcion.

   return;

}
  1. El nombre de la función se construye igual a los nombres de las variables.

  2. Los parámetros formales son nombres de variables representativas de los valores necesarios para evaluar la funcion ó utilizados para devolver resultados.

Una vez definida, la función es utilizada por medio de la oración de control:

  • nombre de la función( argumentos precedidos del signo & );

teniendo en cuenta que exista correspondencia, tanto en cantidad como en tipo, entre los argumentos y los parámetros formales.


















Ejemplo:

#include<stdlib.h>
#include<stdio.h>
#include<math.h>

void Conversion( double, double, double*, double* );

int main( void )
{

   /* Propósito : Coordenadas polares */
   /* Autor: Prof. Cabassa */

   double R, T, X, Y;

   printf("Entre coordenadas polares\n");
   scanf("%lf%lf", &R, &T );

   Conversion( R, T, &X, &Y );

   printf("Coordenadas polares : R = %lf, T = %lf\n", R, T );
   printf("Coordenadas rectangulares : X = %lf, Y = %lf\n", X, Y );

   return 0;
}

void Conversion( double Radio, double Theta,
                 double *Xcoord, double *Ycoord )
{
   /* Propósito : Convertir polares a rectangulares */
   /* Autor: Prof. Cabassa */

   *Xcoord = Radio * cos( Theta );
   *Ycoord = Radio * sin( Theta );

   return;
}

Ejercicios




Última modificación : miércoles 18 de noviembre de 1998


©Derechos Reservados - 1991 - Prof. H. D. A. Cabassa