unidad 1

24
Funciones Unidad 1

Upload: crete

Post on 07-Jan-2016

48 views

Category:

Documents


1 download

DESCRIPTION

Funciones. Unidad 1. Objetivos del Aprendizaje. Explicar la naturaleza y usos de las funciones. Describir algunas funciones incorporadas de C y explicar cómo se usan. Identificar las diferentes partes del encabezado de una función. Describir los diferentes tipos de argumentos. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Unidad 1

–Funciones

Unidad 1

Page 2: Unidad 1

Escuela de Computación

Objetivos del Aprendizaje

• Explicar la naturaleza y usos de las funciones.

• Describir algunas funciones incorporadas de C y explicar cómo se usan.

• Identificar las diferentes partes del encabezado de una función.

• Describir los diferentes tipos de argumentos.

• Definir los prototipos de funciones y sus usos.

• Explicar cómo usar las funciones para solucionar problemas.

Page 3: Unidad 1

Escuela de Computación

Introducción

• Una función es un programa autocontenido que lleva a cabo una tarea específica.

• Un programa en C es realmente una colección de una o más funciones.

• Así, main() es en efecto una función.

• Todos los programas en C deben tener una función main.

• Los programas en C se inician con la ejecución de la función main.

• Una función toma cero o más entradas, lleva a cabo una tarea específica y retorna un solo valor como resultado.

Page 4: Unidad 1

Escuela de Computación

Funciones Incorporadas en C

• Las funciones incorporadas son aquellas que son parte de la librería estándar de C.

• Son diferentes a las funciones definidas por el usuario las cuales son diseñadas y escritas por el programador para un uso específico en las aplicaciones.

• Algunas funciones incorporadas en C son:• printf• scanf• toupper• sqrt

Page 5: Unidad 1

Escuela de Computación

Más acerca de Funciones

• Una función tiene las siguientes características :- Tiene un nombre único o un identificador.

- Trabaja con cero o más entradas (parámetros).

• Las funciones también se pueden invocar dentro de otras funciones y se conoce como llamar a una función (calling).

• La función invocada desde otra función se conoce como la función llamada (called).

• La función llamada ejecuta las sentencias que son parte de la función, llevando a cabo la tarea deseada y retorna a la función que la invocó.

• La ejecución se reanuda en la sentencia que sigue inmediatamente después a la llamada de la función.

Page 6: Unidad 1

Escuela de Computación

Características de las Funciones en C

Algunas características relacionadas con Funcionesen C son:

• Se pueden crear funciones definidas por el usuario.

• Ofrece diferentes mecanismos para:

1. Pasar entradas a la función.

2. Aceptar las entradas para luego procesarlas.

3. Retornar un solo valor como resultado.

4. Controlar tareas internas involucradas en el proceso de invocar, transferir el control, ejecutar y retornar a la función que la invocó.

Page 7: Unidad 1

Escuela de Computación

Ventajas de las Funciones• Permite descomponer un programa grande en partes más

pequeñas, manejables y autocontenidas, y el proceso se denomina modularización.

• La modularización se puede lograr en C sólo a través de las funciones.

• Se logra una claridad lógica de los programas al descomponerlo en pequeñas unidades.

• Ayudan a evitar repetir la programación de las mismas instrucciones que necesitan otros programas o partes de un programa.

• Ayuda a los programadores a construir sus propios conjuntos de funciones en una librería personalizada.

• Permiten que porciones del programa que son dependientes de la máquina sean separadas de las otras para facilitar la portabilidad de los programas.

Page 8: Unidad 1

Escuela de Computación

Partes de una Función

Una función tiene dos partes principales:• Encabezado de la función.

• Cuerpo de la función.

El encabezado de función tiene:• Especificación del tipo del valor a ser retornado por la

función. • Un nombre de función, que sigue las reglas para crear un

identificador.• Un conjunto de argumentos, datos pasados como entrada a

la función, que están separados por comas.• El conjunto de argumentos en un encabezado de función

es opcional.• Si una función no toma ninguna entrada, el encabezado

tendrá un nombre de función seguido por().

Page 9: Unidad 1

Escuela de Computación

Partes de una Función...2

• El cuerpo de la función es el conjunto de sentencias encerradas entre llaves { }.

• El conjunto de sentencias define la tarea que lleva a cabo la función.

• El cuerpo de la función puede contener los siguientes tipos de sentencias:- Sentencias Declarativas.

- Sentencias de Asignación.

- Sentencias Compuestas.

- Llamadas a Funciones.

Page 10: Unidad 1

Escuela de Computación

• El cuerpo puede contener cero o más sentencias return.

• Las sentencia return ayudan a pasar el valor del resultado único al programa que hizo la llamada.

• Ejemplo:nombreFuncion(){ sentencias; return;

}

• La sentencia return causa que el programa que llama inicie la ejecución a partir de la sentencia que sigue inmediatamente después a la llamada de la función.

Uso de Funciones en la Solución de Problemas

Page 11: Unidad 1

Escuela de Computación

Funciones y Sentencias return

• Las funciones con tipo de retorno void no necesitan tener la sentencia return explícitamente.

• La sentencia return en este caso se mantiene por dos razones:

• La sentencia return se usa cuando hay múltiples condiciones verificadas en una función y la función debe finalizar su ejecución, cuando una de sus condiciones se satisface.

• Se considera una buena práctica de programación insertar una sentencia return aún cuando hay un solo punto de retorno en la función.

Page 12: Unidad 1

Escuela de Computación

Funciones...Ejemplo 1Determinar el Máximo de Dos Números Enteros: /* Versión 1 */ int max(int x, int y){

if(x >= y) return (x);else return (y);

} /* Versión 2 */ int max(int x, int y){ int maximo; if(x >= y)

maximo=x; else

maximo=y; return maximo;}

• La función llamada max retorna int como resultado.

• El cuerpo de la función verifica cuál de las variables es mayor y retorna el valor.

Page 13: Unidad 1

Escuela de Computación

Determinar si un Entero es Impar: int esImpar(int x){

if(x % 2 != 0) return (1);

else return (0);

}

• Verifica si el residuo de la división entre 2 es 0. • Si el residuo no es 0 entonces es un número impar y

retorna el valor de verdadero. • En C el valor de 1 se considera VERDADERO y el valor

0 FALSO.

Funciones...Ejemplo 2

Page 14: Unidad 1

Escuela de Computación

Convertir un Carácter de Minúscula a Mayúscula.

char min_a_may(char en){ if(en >= 'a' && en <= 'z'){

return (en - 'a' + 'A'); } else{ return(en); }

}

Proponer una Segunda Versión para dicha coversión.

Funciones...Ejemplo 3

Page 15: Unidad 1

Escuela de Computación

Funciones ... Ejemplo 4

Determinar el Factorial de un Entero. int factorial(int x){ int k,fact;

fact = 1; if(x == 0 || x == 1) return (1); else{ for(k = 2; k <= x; k++) fact = fact * k; return (fact); }}

Page 16: Unidad 1

Escuela de Computación

Clases de Almacenamiento

• En C se puede especificar una clase de almacenamiento en la declaración.

• Las clases de almacenamiento se usan en C para definir la visibilidad y el tiempo de vida de las variables.

• El formato es:

<clase-de-almac><tipo-dato>nom-var;

• C tiene cuatro clases de almacenamiento:

automatic

extern

register

static

Page 17: Unidad 1

Escuela de Computación

Clase de Almacenamiento tipo automatic

• Las variables definidas dentro de una función se denominan variables locales

• Por defecto las variables locales corresponde a la clase de almacenamiento automatic. int f1(){

int i; /* Variable automatic */

float f;

sentencia1;

sentencia2;

sentencian;

}

Page 18: Unidad 1

Escuela de Computación

Clase de Almacenamiento tipo register

• La clase de almacenamiento register asigna memoria en los registros de alta-velocidad de la CPU .

• Se usa para sugerirle al compilador que una variable local automática sea guardada en un registro del procesador, en vez de la memoria regular.

int f1(register int a}{

register int i;

}

Page 19: Unidad 1

Escuela de Computación

Clase de Almacenamiento tipo static

• La clase de almacenamiento static le informa al compilador que los valores almacenados en las variables están disponibles entre llamadas a funciones.

main(){ int i;

/* El bucle invoca la función generarIdno */ for(i = 1; i <= 10; i++)

printf("idno es %d\n", generarIdno());

}  /* La función generarIdno inicia aquí */ generarIdno(){

static int idno = 0; return ++idno;

}

Page 20: Unidad 1

Escuela de Computación

Clase de Almacenamiento tipo extern

• Las variables cuya definición está fuera de cualquier función (incluyendo la función main())pertenecen a la clase de almacenamiento extern.

• Las variables de tipo extern son visibles a través del programa, a partir del punto en que son definidas hasta el final del ámbito establecido para ellas.

• Cualquier cambio que se haga a los valores de las variables de tipo extern afectan al resto del programa.

• ¿Se puede tener una variable declarada como extern en otro archivo?

La respuesta es sí.

Page 21: Unidad 1

Escuela de Computación

Clase de Almacenamiento tipo extern...2

/* Archivo1.c */

int k, m;

main(){

}

 

/* Archivo2.c*/int k,j; extern int m;int f1(){

…}int n;int f2(){ … }

/* Archivo3.h */

/* Los prototipos de funciones están en éste archivo */

int f1(); int f2();

Page 22: Unidad 1

Escuela de Computación

Archivos de Encabezados (header)

• Los archivos de Encabezados (header) centralizan las definiciones y declaraciones.

• Permite tener una sola copia mientras se desarrolla el programa facilitando el mantenimiento. 

• En el ejemplo, el contenido común se coloca en Archivo3.h conocido como un archivo header que se incluye a través de la sentencia #include “Archivo3.h” en los archivos Archivo1.c y Archivo2.c.

• El mecanismo de cómo compilar y cargar un programa en C que reside en varios archivos fuente varía de un sistema a otro.

• En UNIX, el comando cc realiza el enlace:  cc Archivo1.c Archivo2.c Archivo3.h

Page 23: Unidad 1

Escuela de Computación

Resumen

• Se explicó la naturaleza y uso de las funciones.

• Se describieron algunas funciones incorporadas de C y cómo se usan.

• Se identificaron las diferentes partes del encabezado de una función.

• Se estudiaron los diferentes tipos de argumentos.

• Se definió el concepto de prototipos de funciones y y se estableció sus usos.

• Se estudiaron los tipos de almacenamiento.

• Se discutió las ventajas de los archivos de encabezado.

Page 24: Unidad 1

Escuela de Computación

Resumen

• Explicar el concepto de recursión.

• Discutir las diferentes condiciones que deben ser satisfechas para que las funciones recursivas trabajen correctamente.

• Describir cómo una función recursiva trabaja cuando se ejecuta.

• Definir el rol de la pila en la ejecución de las funciones recursivas.