Unidad 3-AED-Parte 1 - 2023
Unidad 3-AED-Parte 1 - 2023
Unidad 3-AED-Parte 1 - 2023
OBJETIVOS:
• Prender a realizar las funciones en un lenguaje de programación.
• Utilizar adecuadamente los tipos de funciones en lenguaje C.
T EMAS:
1. Definición de función.
2. Variables globales, variables locales, ámbito de validez de cada una de ellas.
3. Tipos de funciones. Cabeceras, parámetros, sentencias de llamada.
4. Recursividad.
-1-
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
1. DEFINICIÓN DE FUNCIÓN
Los lenguajes de alto nivel incorporan lo que se denominan funciones o subprogramas que
realizan trabajos o tareas para facilitar la confección del código de un programa o para una mejor
legibilidad de este.
Línea 20
Línea 40
-2-
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
Las acciones que lleva a cabo la función es lo que se denomina definición de la función.
Según el lugar dónde se declaren las variables, las mismas pueden ser globales o locales
teniendo cada una de ellas un distinto ámbito de validez.
Las variables declaradas FUERA DE TODAS LAS FUNCIONES (incluida main ()) se
denominan VARIABLES GLOBALES y pueden accederse o ser usadas en cualquier función incluida
main ().
Ejemplo: Si las variables a y b son declaradas antes de main (), ellas pueden ser ingresadas o
mostradas en la función main () y en toda otra función que dependa de ella.
#include <stdio.h>
int a,b;
VARIABLES GLOBALES
main
()
{
...........;
}
#include <stdio.h>
main ()
{
int a, b
………;
} VARIABLES LOCALES
-3-
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
En el caso del lenguaje C tenemos dos grandes tipos de funciones (o subprogramas): las
funciones standards y las funciones declaradas por el usuario.
FUNCIONES STANDARD
Todas las instrucciones codificadas dentro de main (), corresponden a lo que se denomina
programa principal, llamada función principal. En consecuencia, todo algoritmo en C debe ser
codificado dentro de la función principal o main ().
Ambas directivas son realmente funciones, las cuales poseen argumentos los cuales están
encerrados entre paréntesis. Casi todas las directivas de ejecución de acciones en C, corresponden
a funciones standard debidamente establecidas por el compilador.
Las funciones creadas por el usuario no están incorporadas en los compiladores (como lo están
las standard), y es el usuario quien debe escribirlas de acuerdo con las reglas de sintaxis que el
lenguaje impone.
NOMBRE DE LA FUNCIÓN
Generalmente se recomienda dar nombres relacionados con lo que la función lleva a cabo
(suma, cálculo, promedio, etc.).
-4-
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
PARÁMETROS
DEFINICIÓN DE LA FUNCIÓN
En esta sección, se especifica que acciones realiza la función. Es decir, se escriben las instrucciones
que realizaran la tarea o cálculo para lo cual fue escrita la misma.
Toda función cuando es ejecutada puede o no devolver un valor (resultante del cálculo o
proceso que dicha función lleva a cabo). Dicho valor puede ser cualquier tipo de dato de los ya
estudiados (entero, flotante, carácter, etc.) como también acciones que el usuario establezca. En el
caso de no retornar ningún valor, o de retornarlos a través de parámetros, se dice que dicha función
es una función SIN TIPO.
-5-
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
En las funciones sin tipo la cabecera (en lenguaje C) debe contener la palabra void, el nombre
de la función y la lista de parámetros, indicando de qué tipo es cada uno de ellos.
Ej.:
Ejemplo: mayor(a,b,c);
-6-
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
inicio
funcion1
accion1
funcion1
accionN función
accionN
retorno de la
fin funcion
-7-
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
Ejemplo
Ingresar dos valores a y b, a través de una función sin tipo encontrar el valor de la suma y mostrar el
resultado en la función principal.
-8-
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
La codificación en lenguaje C:
void suma(int a1, int b1, int &s1) void suma(int a1, int b1, int &s1);
{
s1=a1+b1;
}
main ()
{
main () int a,b,s;
{ printf("Ingrese el valor de a: ");
int a,b,s; scanf("%d",&a);
printf("Ingrese el valor de a: "); printf("Ingrese el valor de b: ");
scanf("%d",&a); scanf("%d",&b);
printf("Ingrese el valor de b: "); suma(a,b,s);
scanf("%d",&b); printf("Suma: %d",s);
suma(a,b,s); getch();
printf("Suma: %d",s); }
getch();
}
void suma(int a1, int b1, int &s1)
{
s1=a1+b1;
}
Cuando una función devuelve un valor (resultante del cálculo o proceso que dicha función
lleva a cabo), se dice que es una función CON TIPO. Dicho valor puede ser cualquier tipo de dato de
los ya estudiados (entero, flotante, carácter, etc.)
-9-
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
Ejemplo:
Escribir una función que reciba dos argumentos enteros, los sume y devuelva el valor de dicha
suma
Ejemplo:
s = sumar (a, b);
printf(“la suma de los valores es d”,s);
Ejemplo:
Ingresar dos números, y calcular la suma de los mismos mediante una función con tipo, mostrar el
resultado en main ()
- 10 -
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
int suma(int a1, int b1) int suma(int a1, int b1);
{
int s1; main ()
s1=a1+b1; {
return s1; int a,b;
} printf("Ingrese el valor de a: ");
scanf("%d",&a);
printf("Ingrese el valor de b: ");
main () scanf("%d",&b);
{ printf("Suma: %d",suma(a,b));
int a,b,s; getch();
printf("Ingrese el valor de a: "); }
scanf("%d",&a);
printf("Ingrese el valor de b: "); int suma(int a1, int b1)
scanf("%d",&b); {
s=suma(a,b); int s1;
printf("Suma: %d",s); s1=a1+b1;
getch(); return s1;
} }
Los parámetros por valor (un tipo de parámetros formales) realizan duplicación de memoria, ya que
definen nuevas localizaciones de memoria y realizan una transferencia unidireccional de los valores
que se encuentran en los parámetros actuales. Esto implica que los cambios de las variables en la
función no producen alteración en las variables de donde recibieron su valor.
Los parámetros por referencia (otro de los tipos de los parámetros formales) utilizan las mismas
localizaciones de memoria que los parámetros actuales. Esto implica que los cambios de las variables
en la función producen alteración en las variables de donde recibieron su valor.
Son aquellos que se incluyen como argumento de funciones y cuyo valor cambia, si cambia
el valor de la variable correspondiente dentro de la función.
- 11 -
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
• En la declaración de la función, anteponer el operador & a las variables que serán consideradas
como parámetros por referencia en lenguaje C.
4. FUNCIONES RECURSIVAS
La recursividad forma parte del repertorio para resolver problemas en Computación y es de los
métodos más poderosos y usados.
Los algoritmos recursivos ofrecen soluciones estructuradas, modulares y elegantemente
simples.
La recursividad es un concepto fundamental en matemáticas y en computación. Una definición
recursiva dice cómo obtener conceptos nuevos empleando el mismo concepto que intenta describir.
En toda situación en la cual la respuesta pueda ser expresada como una secuencia de
movimientos, pasos o transformaciones gobernadas por un conjunto de reglas no ambiguas, la
fórmula recursiva es un buen candidato para resolver el problema.
Los razonamientos recursivos se encuentran en la base misma de las matemáticas porque
son necesarios para describir conceptos centrales como el de número:
Uno de los ejemplos más clásicos es el factorial de un número. Para cualquier entero positivo
N, el factorial de N (que se expresa como N!) es el producto (multiplicación) de todos los enteros
menores a él:
▪ 1! = 1
▪ 2! = 1 x 2 = 2
▪ 3! = 1 x 2 x 3 = 6
▪ 4! = 1 x 2 x 3 x 4 = 24
▪ 5! = 1 x 2 x 3 x 4 x 5 = 120
▪ 6! = 1 x 2 x 3 x 4 x 5 x 6 = 720
Por lo tanto: 2! es 1! x 2 3! es 2! x 3
Y así sucesivamente. Para cualquier entero N mayor a 1, podemos decir que el factorial de N
es igual al factorial del número anterior a N multiplicado por N.
- 12 -
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
Las funciones recursivas son aquellas en las cuales, dentro del código de la función, existe
una llamada a la misma función.
Para que una función recursiva esté completamente definida es necesario: ▪
tener un caso base que no se calcule utilizando casos anteriores y
▪ que la división del problema converja a ese caso base.
La recursividad es una técnica muy útil que puede utilizarse en lugar de las repeticiones,
dando una visión diferente de las iteraciones.
E JEMPLO
Escribir un programa para sumar los números consecutivos entre 0 y n, siendo n un número
ingresado por el usuario. Mostrar el resultado en la función main ().
Codificación en C
#include <stdio.h>
#include <conio.h>
main()
{
int n,s;
printf("Valor n: ");
scanf("%d",&n);
s=suma(n);
printf("Suma: %d",s);
getch();
}
- 13 -
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL TUCUMÁN
DEPARTAMENTO DE SISTEMAS
CÁTEDRA: ALGORITMOS Y ESTRUCTURAS DE DATOS
- 14 -