Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Funciones
Introduccin
La Programacin Estructurada pretende evitar la
edicin de programas en un solo bloque
(monolticos), dificiles de manejar por su longitud.
Algunos autores aconsejan que el cuerpo de una
funcin debera ser visible en una sola pantalla.
La Programacin Estructurada es una estrategia de
resolucin de problemas y una metodologa de
programacin que incluye dos grandes lneas:
El control de flujo en un programa debera ser tan
simple como fuera posible.
La construccin de un programa debera hacerse
empleando la tcnica del diseo descendente (topdown).
Prof. Omar Rosales
Diseo Top-down.
El mtodo de diseo Top-Down, tambin llamado
mtodo de refinamientos sucesivos o divide y
vencers,
consiste
en
descomponer
repetidamente un problema en problemas ms
pequeos. Es decir:
Construir un programa a partir de pequeas piezas o
componentes.
Esas pequeas piezas son llamadas mdulos.
Cada pieza es ms manejable que el programa original
Prof. Omar Rosales
Programando Mdulos en C
Funciones;
Mdulos en C.
Los programas combinan funciones definidas por el
usuario (funciones de usuario) con funciones de librera.
Las libreras estandar de C contienen una amplsima coleccin de
funciones generales y especficas.
Llamadas a funciones:
Invocar a funciones:
Mediante su nombre y argumentos (datos sobre los que actuar)
Pueden devolver resultados.
Devolucin:
Prof. Omar
Rosales
=
=
=
=
x1 x2;
y1 y2;
pow(a,2) + pow(b, 2);
sqrt(d);
O bien:
d = sqrt(pow((x1-x2),2) + pow((y1-y2),2));
Prof. Omar
Rosales
Funciones
Realmente al llegar a este punto, tod@s hemos escrito nuestras propias
funciones y usado funciones de librera::
Declaracin de funciones
La definicin de una funcin es como sigue:
tipo_devuelto nombre_funcion(lista parmetros formales)
{
declaraciones
sentencias
Protipo de funcin
Cuerpo de la funcin
}
tipo_devuelto - es el tipo del dato que devuelve la funcin.
void indica que la funcin no devuelve valor.
nombre_funcion cualquier identificador vlido.
lista de parmetros formales describe el tipo y el
nombre de los argumentos que se le pasan a la funcin cuando es
invocada, separados por comas, para que acte sobre ellos.
Prof. Omar
Rosales
Ejemplo
Definimos la funcin que eleva al cubo un
nmero:
int cubo(int num)
{
int resultado;
resultado = num * num * num;
return resultado;
}
Esta funcin puede ser llamada como:
n = cubo(5);
O bien:
printf(El cubo de %d es %d, n, cubo(5));
Prof. Omar
Rosales
10
Prototipos de Funcin
Funcin prototipo:
Nombre de la funcin.
Parmetros que la funcin va a utilizar.
Tipo de dato devuelto: tipo del dato que la funcin
devuelve mediante return (por defecto es int)
11
#include <stdio.h>
#include <conio.h>
int maximo( int, int, int );
/* funcion prototipo */
int main()
{
int a, b, c;
printf( "Intro tres enteros:\n " );
scanf( "%d%d%d", &a, &b, &c );
printf( "El maximo es: %d\n", maximo( a, b, c ) );
getch();
return 0;
Ver
}
/* Definicin, cuerpo de la funcion maximo */
f3.cpp
12
#include <stdio.h>
#include <conio.h>
//declaracin y cuerpo de la funcion
int maximo( int x, int y , int z)
{
int max = x;
if ( y > max )
max = y;
f4.cpp
if ( z > max )
max = z;
return max;
}
int main()
Ver
{
int a, b, c;
printf( "Intro tres enteros:\n " );
scanf( "%d%d%d", &a, &b, &c );
printf( "El maximo es: %d\n", maximo( a, b, c ) );
getch();
return 0;
}
f5.cpp
Prof. Omar
Rosales
13
#include <stdio.h>
int main(void)
{
min(x,y);
max(u,v);
..
}
int max (int a, int b) //cuerpo
{
.
}
int min (int a, int b)
{
.
}
Llamada a la Funcin
Un programa consta de una o
ms funciones, una de las cuales
debe ser la funcin principal
main( ).
Cuando un programa encuentra
nombre elde una funcin, la
funcin es llamada o invocada.
Cuando la funcin finaliza su
trabajo, el control del programa
es devuelto al entorno desde
donde
fue
invocada,
continuando all la ejecucin del
programa.
main()
func1
func2
Prof. Omar
Rosales
15
Ejemplo de funcin
#include <stdio.h>
void mensaje(void); // prototipo de funcin
// o funcin prototipo
int main (void)
{
mensaje( ); /* Llamada a la funcin*/
return 0;
}
void mensaje(void) /*Definicin, cuerpo de la funcin*/
{
printf(Un mensaje para t,\n);
printf(desde la funcion\n);
}
Significado: void mensaje(void);
No devuelve nada.
No recibe argumentos para operar
Prof. Omar
Rosales
16
17
include <...>
Variables Globales
void funcion(void)
{
int posicion; //local a funcion()
int resultado //local a funcion()
resultado = (int)(numero + valor);
}
Prof. Omar
Rosales
18
19
x, y, m, n son variables
diferentes, en las mismas
direcciones de memoria
(no simultneamente)
int funcion1(...)
{
int x = 1, y = 2, m = 3, n = 4;
. . .
}
int funcion2(...)
{
int x = 1, y = 2, m = 3, n = 4;
. . .
}
local.cpp
local2.cpp
Prof. Omar
Rosales
20
La sentencia return
Si una funcin es declarada sin tipo a devolver, por defecto devolver un valor
int:
main()
//devolver un entero
22
Ejemplos de return
return;
return 77;
return ++a;
return (a+b+c);
Hay que tener cuenta que cualquier instruccin que vaya detrs
de return no ser ejecutada (ya que el flujo del programa es
transferido al lugar de la llamada a la funcin).
Prof. Omar Rosales
23
#include <stdio.h>
#include <conio.h>
int min (int a, int b);
24
Parmetros, argumentos
En la llamada a la funcin:
valor = func(edad, puntuacion, letra);
Lista de parmetros
actuales (sin su tipo):
25
26
#include <stdio.h>
void imprime_mensaje (int k);
/*funcion
prototipo */
void imprime_mensaje(int k)
{
int i;
/* definicin de funcion */
printf(\nEste es tu mensaje:\n);
for (i=0; i < k; ++i)
printf(En el fondo del mar\n);
}
Prof. Omar
Rosales
27
Prof. Omar
Rosales
28
#include <stdio.h>
int sumar (int n);
int main (void)
{
int n, resultado;
n = 3;
printf(%d\n, n);
resultado = sumar(n);
printf(%d\n,n);
printf(%d\n,resultado);
return 0;
}
Prof. Omar
Rosales
int sumar(int x)
{
int sum=0;
for ( ; x > 0; --x)
sum += x;
printf(%d\n, x);
return sum;
}
Ver
f2.cpp
3
0
3
6
29
int g (void)
printf (Funcin interna\n);
int h(void)
{
printf(Funcion interna h\n);
}
La funcin h() no
es correcta. LAS
FUNCIONES NO
PUEDEN SER
ANIDADAS
2.
{
La funcin debe
devolver un valor
int
}
Prof. Omar
Rosales
30
int a, b, c, resultado;
printf(Intro 3 enteros: );
scanf(%d %d %d, &a, &b, &c);
resultado = a * b * c;
printf(El resultado es %d\n, resultado);
return result;
}
Prof. Omar
Rosales
31
#include <conio.h>
#include <stdio.h>
void f(float a);
void main()
{
float z=25;
f(z);
printf("\nEl valor de z en main() no cambia: %g", z);
getch();
}
void f(float z)
{
z += 100;
printf (En la funcion imprimimos; %g", z);
}
Ver
f1.cpp
Prof. Omar
Rosales
32
Prof. Omar
Rosales
33
cadcat.cpp
matbi.cpp
matf2.cpp
34
charff2.cpp
charff3.cpp
Prof. Omar
Rosales
35
Recursividad
Dado que una funcin puede llamar a otras funciones, en C
est permitido que una funcin pueda llamarse a s misma.
Esta propiedad recibe el nombre de recursividad.
Como la funcin es llamada con argumento, este debe
cambiar para evitar caer en un bucle infinito.
Ver recursiv.cpp
Ver recursi2.cpp
Ver potrecusiv.cpp
36
37