funciones

Post on 13-Jun-2015

2.078 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Ing. Paulo Guerra22-Marzo-2010

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

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.

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

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.

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.

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 ";"

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.

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 */ }

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);

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.

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).

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

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.

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);

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.

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.

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 .

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; }

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; }

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

top related