You are on page 1of 43

Funciones

2011/1 - CLASE 13

Chiste del da

AGENDA
1

RESUMEN
Diagrama de Flujo
Vble1 <- vble Vble2 <- valor Vble3 <- constante

Pseudocdigo
Vble1 Vble2 Vble3 . vbleN <- vble <- valor <- constante . . <- expresin Vble1 Vble2 Vble3 . vbleN

Lenguaje C
= = = . = vble; valor; constante; . expresin;

. . .
VbleN <- expresin

NO (falsa)
CONDICION

SI (verdadera)

secuencias 1

secuencias 2

SI (condicion) ENTONCES secuencia 1 | camino 1 SINO Secuencia 2 | camino 2 FIN_SI

if (condicion) { cdigo_secuencia1; } else { cdigo_secuencia2; }

VBLE_CONTROL

Valor 1
secuencias 1

Valor 2
secuencias 1

OtrosValores

. . .

Otras secuencias

SEGUN(vble_control)HAGA valor 1 secuencias 1 valor 2 secuencias 2 . . . otrosValores otras secuencias FIN_SEGUN

switch(vble_control) { case 1: cod_secuencia1; break; case 2: cod_secuencia2; break; . . . default: cod_secuencias; }

RESUMEN
Diagrama de Flujo
Falso
MQ(CONDICIN)

Pseudocdigo

Lenguaje C

verdadero
Cuerpo del bucle

MIENTRAS(condicin)HAGA secuencia FIN_MIENTRAS

while(condicin){ secuencia; }

Falso
PARA VC=LI, LF,INC

verdadero
Cuerpo del bucle

PARA VC DESDE LI HASTA LF DE INC HAGA secuencia FIN_PARA

for(expre1;expre2;expre3){ secuencia; }

Cuerpo del bucle

verdadero
MQ(CONDICIN)

HAGA secuencia MIENTRAS QUE(condicin)

do{ secuencia }while(condicin);

Falso

AGENDA
1

ESTRUCTURAS DE LOS PROGRAMAS

Estructuras Bsicas de los programas


//Comentario //Directivas #include <librerias.h> #define MACROS //Inicio int main (void){ //Declaracin Variables Locales //Ingreso de Datos //Proceso return 0; }

ESTRUCTURAS DE LOS PROGRAMAS

Estructuras de los programas vista hasta el momento


Se tiene un solo archivo fuente. Todo lo que hace el programa se implementa dentro de la funcin main. Slo hemos declarado variables locales.

#include <stdio.h> int main(void){ int a[3],b[3],c[3]; int i;

ESTRUCTURAS DE LOS PROGRAMAS

ProblemasRepeticin metodologa de esta


de cdigo

printf(" Ingrese el vector: "); 1 for(i=0;i<3;i++) { scanf("%d",&a[i]); } printf(" vec1 = [%d %d %d]\n\n",a[0],a[1],a[2]); printf(" Ingrese el vector: "); 1 for(i=0;i<3;i++) { scanf("%d",&b[i]); } printf(" vec2 = [%d %d %d]\n\n",b[0],b[1],b[2]); for(i=0;i<3;i++) { c[i]=a[i]+b[i]; } printf(" vec3 = [%d %d %d]\n\n",c[0],c[1],c[2]); return 0; }

2
Cdigo Repetitivo y engorroso

ESTRUCTURAS DE LOS PROGRAMAS

Problemas de esta metodologa


Programacin repetida. A medida que el problema se hace mas complejo el main tiende a crecer mucho y hacerse mas difcil de entender. Poca reutilizacin de cdigo.

Solucin al problema: USO DE FUNCIONES

ESTRUCTURAS DE LOS PROGRAMAS

Ventajas del uso de funciones

1
2 3

Al dividir el problema en mdulos o partes se comprende ms fcilmente Al hacer modificaciones es ms fcil sobre un mdulo en particular que en todo el algoritmo.
En cuanto a los resultados, se probarn mucho mejor comprobando si cada mdulo da el resultado correcto que si se intenta probar de un golpe todo el programa

ESTRUCTURAS DE LOS PROGRAMAS

Ventajas del uso de funciones


MOD 1.1

=
=

MOD 1.1.1 MOD 1.1.2

P R O C E S O

MOD 1

=
MOD 1.2.1
MOD 1.2.2

MOD 1.2

=
MOD 2.1

= =

MOD 2.1.1 MOD 2.1.2

MOD 2

=
MOD 2.2.1 MOD 2.2.2

MOD 2.2

AGENDA
1

INTRODUCCIN A LAS FUNCIONES

Funciones
Conjunto de instrucciones que realizan una accin especifica y que tienen un nombre que las representa.

printf printf(la vble es: %d, vble); potencia = pow pow(base,exp); raiz = sqrt sqrt(vble);
Una funcin sirve para facilitar la programacin, ahorrar espacio, tiempo y para facilitar la portabilidad de los programas.

INTRODUCCIN A LAS FUNCIONES

Funciones
La forma ms razonable de encarar el desarrollo de un programa complicado es aplicar lo que se ha dado en llamar "Programacin Top - Down" .

INTRODUCCIN A LAS FUNCIONES

Funciones
Esto implica que, luego de conocer cual es la meta a alcanzar, se subdivide esta en varias tareas. Luego a estas se las vuelve a dividir en otras menores. Y as se contina hasta llegar a tener un gran conjunto de pequeas y simples tareas. Luego slo queda resolver cada una de ellas por separado.

DIVIDE Y VENCERAS

INTRODUCCIN A LAS FUNCIONES

Funciones
Tal es el criterio con que est estructurado el lenguaje C, que una de sus herramientas fundamentales son las funciones.

INTRODUCCIN A LAS FUNCIONES

Funciones
Todo programa tiene al menos una funcin:
int main (void){
...
}

Desde la funcion main se puede estructurar todo el programa por medio de llamados a las Funciones
PROGRAMA main() PROGRAMA main()

f1 f4

f2

f3 fn

INTRODUCCIN A LAS FUNCIONES

Funciones
main()

f1()

f2()

f3()

f4()

Llamados a Funciones
Programa

INTRODUCCIN FUNCIONES

int Main(void) { int a, b; Func1(); --------------Func2(); --------------return 0; }

Func1 __ __ __ return

Func2
---Func3() ---return

Func3 __ __ __ return

20

INTRODUCCIN A LAS FUNCIONES

Funciones
El uso de funciones permite dividir grandes tareas. Se ahorra programacin repetida. Se evita reinventar la rueda gracias a la reutilizacin de cdigo. Hace que los programas sean ms modulares, mas fciles de leer y mas fciles de editar .

INTRODUCCIN A LAS FUNCIONES

Funciones
Las funciones permiten agrupar una serie de operaciones de tal manera que se puedan utilizar ms tarde sin tener que preocuparnos por cmo estn implementadas, simplemente sabiendo lo que harn.
El uso de funciones es una prctica comn y recomendable ya que permite modularizar nuestro cdigo, simplificando as el desarrollo y la depuracin del mismo.

INTRODUCCIN A LAS FUNCIONES

Ejemplo
Programa que recibe el radio de una esfera y calcula el volumen y el area de la superficie de la esfera y los muestra.
#include <stdio.h>
int main (void) { float r,v,a; r = leaRadio (); v= calVolumen (r); a= calArea (r); muestreArVol (a,v); return 0; }

AGENDA
1

Partes Fundamentales de una Funcin


En el momento de crear mi_funcin debo seguir tres pasos fundamentales:

Declaracin del prototipo de la funcin Definicin de la funcin Llamado a la funcin

2
3

Declaracion del prototipo de una Funcin


Consiste en informarle al Compilador los tamaos de los valores que se le enviarn y el tamao de los valores que ella retornar al programa invocante. Convencionalmente se escribe al principio del programa

tipo_retorno nombre(tipo_1 param_1, tipo_N param_N);

Declaracion del prototipo de una Funcin


tipo_retorno nombre(tipo_1 param_1, tipo_N param_N);

tipo_retorno

Es un tipo de dato de los que maneja C (int, float, char,..). Si la funcin no retorna nada, en ese lugar se utiliza la palabra void.
nombre

Es el nombre de la funcin es el nombre que le damos al conjunto de instrucciones que ella representa.
tipo_dato_parametros

Son todos aquellos tipos de los parmetros que la funcin necesita para su funcionamiento. Si la funcin no necesita parmetros se escribe la palabra void.

Ejemplo declaracin de funciones


tipo_retorno nombre(tipo_datos_Parametros);

float mi_funcion(int i, int j) ; int otra_funcion(void) ; void otra_mas(float p) ; char la_ultima_funcion(float z, char y, int x) ;

Nota: En el prototipo no es necesario indicar variables. Slo el tipo de dato. Si se indican variables el compilador no las toma en cuenta

Ejemplo declaracin de funciones


Escribir el prototipo de funcin para la suma de dos nmeros flotantes
float suma(float num1, float num2); float suma(float, float);

Definicin de la funcin
La definicin de la funcin consiste en expresar COMO la funcion va a realizar su tarea. Se comienza poniendo el prototipo de la funcin y entre { } se expresan las instrucciones de la funcion Tipo de dato retornado
por la funcin Nombre de la funcin

Cuerpo de la funcin

float suma(float num1, float num2){ float res; Argumentos a la res = num1 + num2; funcin. return res; } Variable retornada por la funcin

En el campo de los parametros, se estan declarando variables. En el cuerpo de la funcion: *Se pueden declarar todas las variables necesarias y pueden operarse. *Se utiliza la palabra return para expresar cual va a ser el valor que la funcion va a devolver!!! Compare esta funcion con la funcion main() !!!!

Definicin de la funcin
La definicin de una funcin puede ubicarse en cualquier lugar del programa, con slo dos restricciones: 1. Debe hallarse luego de su prototipo. 2. No puede estar dentro de la definicin de otra funcin ( incluida main() ).

La definicin debe comenzar con un encabezamiento, que debe coincidir totalmente con el prototipo declarado para la misma, y a continuacin del mismo, encerradas por llaves se escribirn las sentencias que la componen

Definicin de funcin
Una funcin debe ser declarada antes de ser usado, por ello suele ser comn colocar las declaraciones antes de la funcin main.
#include <archivo_cabecera> protipo_funciones; declaracion_variables_globales; int main(void) { declaracion_variables_locales; funcion_1(); funcion_2(); . . . funcion_N(); return 0; } funcion_1() { codigo_funcion_1; } . . . funcion_N() { codigo_funcion_N; } #include <archivo_cabecera> float suma(float,float); int main() { . . . return 0; } float suma(float num1, float num2) { float res; res = num1 + num2; return res; }

Definicin de funcin
void saludar(void) { printf(Hola parce!!\n); } void re_saludar(int N){ int i; for(i=0;i<N;i++) { printf(Hola !!\n); } }
Para indicar no retorno de datos se usa la palabra clave void, hay tres casos bsicamente: 1. Cuando una funcin no tiene argumentos de entrada ni retorna nada. 2. Cuando una funcin tiene argumentos de entrada pero no devuelve nada.

int ver_algo(void){ return algo; }

3. Cuando una funcion no pide argumentos de entrada pero devuelve algo.

Llamado a la funcin
Una vez se ha declarado y definido la funcin, podemos pasar a la fase en el que la funcion ya se puede utilizar.

raiz=sqrt(a); printf(el valor es: %d, val );


Para hacer que las instrucciones contenidas en una funcin, se ejecuten en determinado momento, no es necesario ms que escribir su nombre como una lnea de sentencia en el programa. varRetorno = nomb_funcion(TipoDatosParametros);

34

Llamado a la funcin
Convencionalmente en C los nombres de las funciones se escriben en minscula y siguen las reglas de las variables, se distinguen de las variables porque van seguidas de parentesis.

35

Llamado a la funcin
varRetorno = nomb_funcion(TipoDatosParametros);
#include <stdio.h> float suma(float,float); int main() { f1(); f2(); return 0; } 0 main() 1 f1() 2 7 FIN 3

6
f2() 5 f3() 4

f1(){ . . . }
f2() { f3(); . . . }

Llamado a Funciones
Para hacer que las instrucciones contenidas en una funcin, se ejecuten en determinado momento, no es necesario ms que escribir su nombre como una lnea de sentencia en el programa. Dentro de esos parntesis est ubicados los datos que se les pasan a las funciones. Est permitido pasarles ninguno una lista de ellos separados por comas, por ejemplo: raiz=sqrt(a), printf(el valor es: %d, val ) . El valor de retorno puede ser cargado a una variable o no (Depende del programador).

Llamado a la funcin
#include <stdio.h>

float suma(float,float);
int main() { int a = 3, b = 2, c = 0, d = 3; int e, f, g, h, i, k; d = suma(2,-4); c = suma(a,b); f = suma(2,c++); g = suma(++c,d++); h = suma(suma(1,a),d); return 0; } float suma(float num1, float num2) { float res; res = num1 + num2; return res; }

Una funcin se puede invocar las veces que se desee.

EJEMPLOS
Realice el prototipo y la definicin de la funcion invocada en el main()

Creacion Func.

int doble(int);
#include <stdio.h>

Prototipo

void main(){ int x,resul; scanf(%d,&x); resul=doble(x); printf(El doble de %d es %d,x,resul); } int doble(int n){ return 2*n; }

Llamado

Definicin

39

Ejemplo
Realice programa que sume dos numeros. Hagalo utlizando una funcion que se llame suma() Prototipo

Invocacin

Definicin

Ejemplo 2
Realizar programa que pida dos nmeros y que encuentre el mayor, realice una funcin mayor() que sea la que encuentre el mayor entre dos #s.

Prototipo llamado

Definicin

Bibliografa
Joyanes Aguilar, Luis. PROGRAMACIN EN C. Metodologa, algoritmos y estructura de datos Capitulo3. H.M. Deitel, P.J. Deitel. Como programar en C y C++ Google

You might also like