Fundamentos de Programación en C: Ámbito de Variables y Funciones
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 2,48 KB
Implementación del Cálculo Factorial en C
long Factorial(short);
int main(void)
{
short n;
printf("Introduzca el valor de n ... ");
scanf("%hd", &n);
printf("El factorial de %hd ", n);
printf("es %ld", Factorial(n));
getch();
return 0;
}
long Factorial(short a)
{
long F = 1;
while(a)
{
F = F * a;
a = a - 1;
}
return F;
}Gestión de Ámbito y Memoria
En este programa, la función principal main tiene definida una variable de tipo short, a la que hemos llamado n. En dicha función, esta variable es local, permitiéndonos gestionar sus características. La variable n se almacena en una dirección de memoria específica y guardará el valor recibido a través de la función scanf.
La función main invoca a la función Factorial. En la llamada, se pasa como parámetro el valor de la variable n. En ese instante, el valor de n se copia en la variable a de Factorial:
- Cambio de ámbito: Desde el momento en que se produce la llamada a
Factorial, abandonamos el ámbito de la funciónmain. - Estado de las variables: La variable
nestá fuera de ámbito y no puede hacerse uso de ella, aunque no ha sido eliminada. - Independencia de datos: En el cálculo dentro de
Factorial, se modifica el valor de la variable locala. Esta modificación no influye en la variablen, ya que residen en posiciones de memoria distintas.
Retorno y Finalización
Cuando termina la ejecución de Factorial, el control del programa vuelve a main. Las variables a y F dejan de existir (mueren), pero el valor de F ha sido devuelto y recibido como parámetro en la función printf, permitiendo mostrarlo por pantalla. De nuevo en la función principal, recuperamos el acceso al ámbito de la variable n.
Ejemplo: Máximo Común Divisor
Veamos ahora otro ejemplo, con un programa que calcule el máximo común divisor de dos enteros. De nuevo, resolvemos el problema mediante funciones:
#include <stdio.h>
#include <conio.h>
long euclides(long, long);
int main(void)