Académique Documents
Professionnel Documents
Culture Documents
Funciones
Definicin:
Lasfuncionessonlosbloquesdeconstruccin
bsicosdeC.Dentrodeellassedatodala
actividaddelprograma.
Criteriosparacrearlas:
SeusalaestrategiadeDividiryConquistar,en
otraspalabras,esrealizarlaparticindelatarea
ensubtareasmsfcilesdeabordar.
Todoproblemasepuederesolverconfuncioneso
sinellas,perosuusoadecuadohacequeel
programaseamseficiente,fcildeleeryprobar.
2
Funciones: ventajas
1. Facilitaeldiseodescendente.
2.Losprocedimientosdentrodeellassepueden
ejecutarvariasveces.
3.Facilitaladivisindetareas.
4.Sepuedenprobarindividualmente
5.Confuncionesapropiadamentediseadas,es
posibleignorarcomoserealizaunatarea,
sabiendoquesloquehacen.
3
Funciones: Especificacin formal
tipo nombre_funcion(lista de parmetros){
cuerpo de la funcin
}
tipo : especificaeltipodevalorquedevuelvela
funcin.Sinoseespecificatipo,elcompiladorasume
queesentero(int).
lista de parmetros : eslalistadenombresde
variablesseparadosporcomasconsustipos
asociadosquerecibenlosvaloresdelosargumentos
actualesdelallamadaalafuncin.
4
La sentencia return
Fuerzalasalidainmediatadelafuncinenquese
encuentra.
Sepuedeutilizarparadevolverunvalor.
5
Funciones
Lasfuncionesterminansuejecucinyaseaa
travsdelaejecucindelaltimainstruccino
utilizandolasentenciareturn.
Unfuncinpuederetornarvalorslocuandoel
tipoderetornonoesvoid.
Lasfuncionesquesondetiposdistintosdevoid
puedenserutilizadascomooperandosenotras
expresionesdellenguaje.
6
Funciones: modos de uso
1.Funcionesdiseadaspararealizar
operacionesapartirdesusargumentosy
devolverunvalorbasadoensusclculos.
2.Funcionesquenorecibenargumentos,
realizanunprocesoydevuelvenunvalor.
3.Funcionesquenotienenargumentosni
valorderetornoexplcito,operansobreel
entornodevariablesglobalesoatributosdel
sistemaoperativo.
7
Funcin main()
Mediantelasentenciareturn,elprograma
puededevolveruncdigodeterminacinal
procesodellamada(Ej.:enteroaShellde
comandosenUnix).
Elvalordevueltopuedeser0queindica
terminacinnormalounvalorqueidentifica
unerrordetectadoporelprograma.
Elvalordevueltopuedeserusadopara
ejecucincondicionaldecomandosenshell
enUnix.
8
Variables locales y globales
VariablesLocales:
Sedeclarandentrodelafuncinysloestn
disponiblesdurantesuejecucin.
Secreancuandoseentraenejecucinuna
funcinysedestruyencuandosetermina.
Variablesglobales:
Sedeclaranfueradelasfunciones.Puedenser
utilizadasportodaslasfunciones.
Existendurantetodalavidadelprograma.
9
Argumentos de funciones
Sonvariableslocalesconocidascomoparmetros
formalesyseutilizancomounmedioparaentregarle
informacinalafuncin.
Losparmetrosformalesrecibensusvaloresiniciales
desdelosparmetrosreales,esdecirdesdelosvalores
queselespasanatravedelallamada.Ejemplo:
11
Ejemplo
Construyaunprogramaquecalculeel
cuadradodelos10primerosnmeros
enteros.
12
Solucin
#include <stdio.h>
main(){
int i,resultado;
for (i=0;i<10;i++){
resultado = cuadrado (i);
printf("Cuadrado de %d: %d\n",i,resultado);
}
return 0;
}
13
Ejemplo
Construyaunafuncinquecalculelasumade
loskprimerosnmerosenterosimpares.
14
Solucin ?
#include <stdio.h>
int sumaImpares(-------){
------------------
return r;
}
15
Ejemplo
Construyaunafuncinquerealiceintercambio
delosvaloresentre2variables.
16
Solucin con error porqu?
#include <stdio.h>
void intercambio(int x, int y){
int temp;
temp=x;
x=y;
y=temp;
printf( x=%d y=%d temp=%d\n,x,y,temp);
}
main(){
int a=1,b=2;
printf("a=%d b=%d\n",a,b);
intercambio(a,b);
printf("a=%d b=%d\n",a,b);
return 0;
}
17
Solucin correcta
#include <stdio.h>
void intercambio(int *x, int *y){
int temp;
temp=*x;
*x=*y;
*y=temp;
printf( x=%d y=%d temp=%d\n,*x,*y,temp);
}
main(){
int a=1,b=2;
printf("a=%d b=%d\n",a,b);
intercambio (&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}
18
Ejemplo
Realizarunafuncin,enelcualseingresaun
nmeroenterodevariascifrasyunentero
conunaposicinyseretornaeldgitode
dichaposicin.
Ejemplo:
Entrada:9872
Salida:8
19
Programa
#include <stdio.h>
int buscar(int x,int k){
int i,n;
if (k<=0 || x<0) return -1;
for (i=0;i<k-1;i++)
x=x/10;
return (x%10);
}
void main(){
int n,k,digito;
printf("Ingrese numero y posicion:");
scanf("%d %d",&n,&k);
digito=buscar(n,k);
if (digito<0) printf("No encontrado\n");
else printf("El digito encontrado es: %d\n",digito);
return 0;
}
20
Prototipos
Uso:
Identificareltipoderetornodelafuncin.
Especificareltipoyelnmerodeargumentosque
utilizalafuncin.
Elprototipodebeaparecerantesdequese
hagacualquierllamadaalafuncin.
Noesnecesarioincluirlosnombresrealesde
losparmetros.
21
Prototipo (cont.)
#include <stdio.h>
22
Prototipo (cont.)
#include <stdio.h>
void intercambio(int *, int *) /*Prototipo*/
main(){
int a=5,b=3;
printf("a=%d b=%d\n",a,b);
intercambio (&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}
void intercambio(int *x, int *y){
int temp;
temp=*x;
*x=*y;
*y=temp;
}
23