240 likes | 478 Views
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.
E N D
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. • Definir los prototipos de funciones y sus usos. • Explicar cómo usar las funciones para solucionar problemas.
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.
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
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 llamara 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.
Características de las Funciones en C • Algunas características relacionadas con Funciones • en C son: • Se pueden crear funciones definidas por el usuario. • Ofrece diferentes mecanismos para: • Pasar entradas a la función. • Aceptar las entradas para luego procesarlas. • Retornar un solo valor como resultado. • Controlar tareas internas involucradas en el proceso de invocar, transferir el control, ejecutar y retornar a la función que la invocó.
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.
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().
Partes de una Función...2 • El cuerpo de la funciónes 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.
Uso de Funciones en la Solución de Problemas • 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.
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 returnaún cuando hay un solo punto de retorno en la función.
Funciones...Ejemplo 1 • Determinar 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.
Funciones...Ejemplo 2 • 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 3 • 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 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); } }
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
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; }
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; … }
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; }
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 comoextern en otro archivo? • La respuesta es sí.
Clase de Almacenamiento tipo extern...2 /* Archivo1.c */ int k, m; main(){ … } /* Archivo3.h */ /* Los prototipos de funciones están en éste archivo */ int f1(); int f2(); /* Archivo2.c*/ int k,j; extern int m; int f1(){ … } int n; int f2(){ … }
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 headerque 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
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.
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.