funciones

21
Ing. Paulo Guerra 22-Marzo-2010

Upload: paulo-guerra-teran

Post on 13-Jun-2015

2.078 views

Category:

Education


0 download

DESCRIPTION

Presentación sobre introducción al uso de funciones de usuario en el lenguaje C.

TRANSCRIPT

Page 1: Funciones

Ing. Paulo Guerra22-Marzo-2010

Page 2: Funciones

Objetivos de la ClaseEstudiar los conceptos básicos entorno a las

funciones en lenguaje C.

Revisar la estructura y sintaxis de las funciones.

Analizar la diferencia entre paso de parámetros por valor y dirección.

Aplicar todos los conocimientos y capacidades desarrolladas en la solución de problemas

Page 3: Funciones

IntroducciónUna función es un conjunto de líneas de

código, diseñada para realizar una tarea específica .

Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para evitar tediosas repeticiones de programación.

Page 4: Funciones

Ventajas

Permite una mejor estructuración mediante código modular.

Reduce el tamaño del códigoFacilita la escritura y depuración de

códigoGenera código reutilizable

Page 5: Funciones

Cuando una función es invocada se le pasa el control a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada.

Page 6: Funciones

Forma general de una función

Donde:tipo, especifica el tipo de dato del valor devuelto por la función.nombre_función: es un identificador o nombre válido.lista de parámetros, es la lista de nombres de variables, reciben los valores de los argumentos cuando se llama a la función. cuerpo: bloque de código de la función.

Page 7: Funciones

Prototipos de FuncionesAntes de escribir una función es necesario

informarle al Compilador los tamaños de los valores que se le enviarán al “stack” y el tamaño de los valores que ella retornará al programa invocante.

Ejemplofloat mi_funcion(int i, char ch ) ;

Observación: La declaración termina en ";"

Page 8: Funciones

Implementación o definición

La definición debe comenzar con un encabezamiento, que debe coincidir totalmente con el prototipo declarado para la misma, y a continuación del mismo, encerradas por llaves se escribirán las sentencias que la componen.

Page 9: Funciones

Ejemplo#include <stdio.h> int suma (int i, int j ); /* PROTOTIPO */

void main( ) {

/*Sentencias del Cuerpo de la función.*/ }

int suma (int i, int j ) /* DEFINICIÓN O IMPLEMENTACIÓN */ { int total; total=i+j; return total; /* RETORNO devolviendo un valor int */ }

Page 10: Funciones

Argumentos y Parámetros

Argumentos : son los valores que se envían a la función en el momento que se realiza su llamada, estos valores pueden ser constantes, variables o expresiones .

int cantidad=5;calculo(cantidad , ’A’ , cantidad *2);

Page 11: Funciones

Parámetros:

Es la lista de variables que reciben los valores de los argumentos que se pasan a la función. Por lo que deben ser declarados y se comportan como variables locales dentro de la función, creándose al entrar en la función y destruyéndose al salir.

void calculo(int num, char ch, int producto){ /*Sentencias*/}Los parámetros de esta función toman los valores

num=5, ch=‘A’ y producto=10.

Page 12: Funciones

Llamada por valor

Este método, también llamado por paso por valor, copia el valor del argumento en el parámetro de la función en el momento de la llamada. De esta forma los cambios en los parámetros de la función no afectan a las variables (argumentos).

Page 13: Funciones

Ejemplovoid suma(int x, int y);

void main(){int u=12;Suma(u,3);}void suma(int x, int y){printf(“Suma =%d \n”,x+y);}El resultado será: 15

12

3

3

12

MEMORIAPILA VARIABLE

u

x

y

Dirección de MemoriaFEE2

FEE0

EF02

EF00

Page 14: Funciones

Llama por dirección

Este tipo de llamada usa la dirección real del argumento por lo que los cambios hechos en los parámetros correspondientes afecta a dichas variables.

Page 15: Funciones

Ejemplo./*función que intercambia el contenido de sus dos

argumentos*/void intercambio(int *x, int* y){int aux;aux= *x;*x=*y;*y=aux;}Llamada :Intercambio(&u , &v);

Page 16: Funciones

La sentencia returnEsta instrucción tiene como objetivo el definir el

punto en que se devuelve el control de ejecución al punto de llamada y devolver un valor.

Sintaxis

return [<valor-devuelto>] ; <valor-devuelto> es opcional; puede ser cualquier

expresión que pueda reducirse a un valor del mismo tipo que devuelve la función. Una función puede tener más de un punto de retorno (situación que debe ser evitada en la medida de lo posible), pero se debe tener en cuenta que la ejecución de la función finaliza con la primera ejecución de una sentencia return.

Page 17: Funciones

Vida de una variableCuando definimos una variable dentro de una

función, esa variable sólo es válida dentro de la función. Si definimos una variable dentro de main sólo podremos usarla dentro de main. Si por el contrario la definimos como variable global, antes de las funciones, se puede usar en todas las funciones.

Page 18: Funciones

Biblioteca estándar de funcionesCada compilador viene con una serie de

funciones predefinidas disponibles para su uso, estas son en su mayoría funciones de entrada/salida, de manipulación de cadenas y caracteres y funciones matemáticas. Los prototipos están definidas para Usted por el escritor de su compilador para todas las funciones incluidas en su compilador. La mayoría de los compiladores tienen funciones adicionales predefinidas que no son estándar pero que permiten al programador sacar mayor provecho de su computadora .

Page 19: Funciones

Ejercicio 1 Descubre los errores#include <stdio.h> #include <conio.h> int main() { int num1, num2; int resultado, printf( "Introduzca dos números: " ); scanf( "%i %i", &num1, &num2 ); resultado = compara( num1, num2 ); printf( "El mayor de los dos es %i\n",

resultado ); return 0; } int compara( int a, int b ); { int mayor; if ( a>b ) mayor = a; else mayor = b; return mayor; }

Page 20: Funciones

Busca los errores.#include <stdio.h> int resultado( int parametro ) int main() { int a, b; a = 2; b = 3; printf( "%i", resultado( a ); return 0; } char resultado( int parametro ) { return parámetro+b; }

Page 21: Funciones

Fuentes ConsultadasLuís Joyanes Aguilar, Ignacio Zahonero Martínez

“Programación en C”. Evelio Granizo Montalvo, “Lenguaje C Teoría y

Ejercicios.”Andrés Marzal, Isabel Gracia, “Introducción al

lenguaje C.” http://sopa.dis.ulpgc.es/so/cpp/intro_c/introc01.htmhttp://www.elrincondelc.com/cursoc/cursoc8.htmlhttp://www.modelo.edu.mx/univ/virtech/prograc/cfuncio

n.htm