Semana 5 Subprogramas..

Slides:



Advertisements
Presentaciones similares
Programación de Computadores
Advertisements

Estructuras de control
Programación modular Procedimientos y Funciones
Procedimientos y Funciones
Programación I Teoría III
Direcciones, Arreglos y Argumentos de Funciones
Funciones. Programación, Algoritmos y Estructuras de Datos.
FUNCIONES EN C.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Prof. Franklin Cedeño. FUNCIONES EN C++ Cuando tratamos de resolver un problema, resulta muy útil utilizar la filosofía de “divide y vencerás”. Esta estrategia.
Funciones Funciones De biblioteca Definidas por el usuario
Unidad 3 Punteros.
Curso Práctica 3 1 Funciones CONTENIDO Consideraciones sobre funciones Estructura de un programa en C Uso de funciones Paso de parámetros Punteros.
Tema 3. Optimización de Código
Acciones y funciones Concepto
Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
2 Acciones y funciones 2.1 Concepto
Funciones en lenguaje C
Funciones y procedimientos
Funciones Computación.
Funciones: conceptos básicos
FUNCIONES EN C.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
El lenguaje de programación C - Funciones -
Subrutinas.

Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Creación de una librería propia. Conceptos Básicos Interfaz –El concepto formal se refiere al límite entre dos entidades distintas. –Al hablar de librerías,
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Tema 6: Clases Antonio J. Sierra.
Lenguaje C.
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
PROCEDIMIENTOS FUNCIONES
Estructura de un programa en C
Funciones1 PROGRAMACIÓN ESTRUCTURADA EN PSEUDÓCODIGO Profr. Miguel Rodríguez Hernández PROGRAMACIÓN MODULAR O FUNCIONAL.
Prog. Univ. Rodríguez Rey, Pablo Funciones Programación I.
Programación Modular (Pseudocódigo)

Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Capítulo 1 “Elementos de Programación”
Descomposición Modular. Funciones
1.1 Concepto y terminología
Fundamentos de Programación
Material de apoyo Unidad 4 Estructura de datos
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
EXPRESIONES Y SENTENCIAS
Unidad II Introducción a la programación en C++
Estructuras de Control.
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Informática Ingeniería en Electrónica y Automática Industrial
Punteros.
Elementos básicos del lenguaje
Funciones Definidas por el Programador
Definición de subprogramas en C
Curso de C # República Bolivariana de Venezuela Área de Computación
INTRODUCCION A LA PROGRAMACION
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
LENGUAJE “C” Programación.
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
Introducción a los TADs
Una función es un bloque de instrucciones que se ejecuta al ser llamada desde algún punto del programa, con nombre, que ejecuta una tarea específica y.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
MEMORIA DINÁMICA.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Transcripción de la presentación:

Semana 5 Subprogramas.

Subprogramas Un programa puede volverse complejo, esta complejidad puede ser abordada dividiendo el programa en subprogramas más pequeños y más manejables (basada en estrategia romana “divide y conquista”). Conociendo nuestro objetivo, procedemos a dividir nuestro problema en tarea más simples. “Divide et impera” - Divide y Conquista (Julio César)

Subprogramas Los subprogramas permiten: Organizar de mejor manera el código. Reducir la cantidad de código redundante en un programa. Reutilizar código. Dividir problemas grandes en problemas más sencillos. Mejorar la legibilidad del código. Facilitar la portabilidad del código. Sentencias que se ejecutan muchas veces y que no están contenidas en un ciclo, deberían estar definidas como un subprograma.

Divide et Impera

Tipos de Funciones 1.- Funciones diseñadas para realizar operaciones con sus argumentos y devolver un valor basado en sus cálculos. 2.- Funciones que manipulan información y devuelven un valor que indica simplemente el éxito o el fallo de esa manipulación. 3.- Funciones que no tienen valor de vuelta explícito, es decir, es de tipo procedimiento y no genera un valor.

Ejemplo #include <stdio.h> int main ( int argc, char * argv [ ] ) { int num1,num2,num3, max; printf ( "ingrese 3 numeros\n“ ); scanf ( "%d %d %d", &num1, &num2, &num3 ); if ( ( num1 >= num2 ) && ( num1 >= num3 ) ) max=num1; else if ( ( num2 >= num1 ) && ( num2 >= num3 ) ) max=num2; max=num3; printf ( "el maximo es %d\n", max ); return ( 0 ); }

Ejemplo #include <stdio.h> int max3 ( int n1, int n2, int n3 ) { if ( ( n1 >= n2 ) && ( n1 >= n3 ) ) return ( n1 ); else if ( ( n2 >= n1 ) && ( n2 >= n3 ) ) return ( n2 ); return ( n3 ); } int main ( ) int num1,num2,num3, max; printf ( "ingrese 3 numeros\n“ ); scanf ( "%d %d %d", &num1, &num2, &num3 ); max = max3 ( num1, num2, num3 ); printf ( "el maximo es %d\n", max ); return ( 0 );

En C Existen 2 tipos de subprogramas: Las Funciones y los Procedimientos. Las funciones son un conjuntos de instrucciones que deben devolver un resultado. En cambio un procedimiento sólo realiza un conjunto de instrucciones sin devolver nada. Para C, los procedimientos también los considera como funciones, solo que devuelven un resultado tipo void. Una función es subprograma que representa una abstracción de una expresión compleja. Su utilización es similar a la matemática, recibe 0 o más parámetros, y devuelve un único resultado.

Prototipo especifica la interfaz de datos (firma) de una función por: Prototipos de Función Todas las funciones deben ser declaradas antes de ser usadas. Este requisito se cumple mediante la utilización del prototipo. Prototipo especifica la interfaz de datos (firma) de una función por: Tipo que retorna. El tipo de sus parámetros. El numero de sus parámetros. Ejemplo: int cuadrado ( int i ); int cuadrado ( int );

Prototipos Nos permiten programar permitiéndonos un nivel de abstracción de funciones que aun no hemos programado. Elimina la dependencia de funciones que fueron implementadas posterior al lugar (orden) en que se definieron. Además, proveen información para que el compilador pueda detectar problemas en la cantidad de parámetros, y en la incompatibilidad de tipos de datos.

Ejemplos con prototipos

La forma de declarar funciones es la siguiente. Formato General La forma de declarar funciones es la siguiente. (Si fuera un prototipo no tendría cuerpo). tipo_dato_r Nombre_funcion(tipo_dato1 parametro1, tipo_dato2 parametro2, ... tipo_dato_n parametro_n) { //cuerpo del subprograma //retornando un resultado de tipo tipo_dato_r }

Declaración Nombre_funcion: es el identificar con el cual llamaremos a la función. Parámetros: son el conjunto de valores que se necesitan para hacer el cálculo. Cada parametro tiene su tipo de dato. Tipo_dato_r: es el tipo de dato del resultado que se espera entre la función.

Ejemplo Fibonacci

Manejo de Variables Ya sabemos que cada variable tiene asociado su tipo de dato. Pero además debemos tener muy claro que existe otra clasificación: variables globales, variables locales, y parámetros formales. Esta última clasificación restringe a una variable en cuando o no puede ser accesada, y además su volatilidad (tiempo de vida).

Manejo de Variables

Variables locales vs Globales Las variables definidas en los subprogramas se clasifican en: Variables Locales: - Está declarada dentro de la función y sólo está disponible durante su ejecución. - Se crean cuando se entra a una función y se destruyen cuando sale. Variables globales: - Se declaran en el programa principal. Pueden ser utilizados por el programa y los subprogramas (funciones). - Existen durante toda la vida del programa.

Ámbitos

Parámetros Parámetros Formales - Corresponden a la definiciones de los parámetros de una función, deben tener su tipo dato y sus nombres identificadores. Un parámetro formal se comporta como otra variable local dentro de la función. Parámetros Actuales - Estos corresponden a los valores o expresiones con los cuales es llamada la función. El parámetro formal es instanciado con el parámetro actual.

Existen dos maneras de pasar parámetros a un subprograma Paso de parámetros Existen dos maneras de pasar parámetros a un subprograma Paso de parámetros por valor Paso de parámetros por referencia

Argumentos de las Funciones funcion ( param1, param2, param3, param4, ... ); Los argumentos están definidos por los parámetros formales, y utilizados con los parámetros actuales. Es la manera de entregarle la información al subprograma. Se comportan como variables locales. El paso de los parámetros puede ser por valor o por referencia.

Paso de parámetros por Valor Se pasan valores desde el punto de invocación hacia la función. El parámetro formal es una variable local, mientras que el parámetro actual es una expresión que sustituye el correspondiente parámetro formal (sustitución por valor). Una vez finalizada la función se retorna a la siguiente instrucción de la invocación, sin provocar cambios en la variables de ambiente ( a excepción de la modificación directa de variables globales).

Paso de parámetros por Referencia Se permite transferir información desde el punto de invocación hacia la función, y el retorno de resultados desde la función. Los resultados son entregados por medio de variables visibles o accesibles, llamados parámetros formales variables (precedidos por *). Se les llamas variables por referencia, ya que no se crea un nuevo espacio para el parámetro formal, sino que se hace una referencia a la variable actual durante la ejecución del procedimiento. El parámetro formal en este caso es sólo una variable muda.

Ejemplo

Retorno de una Función Una función retorna a la rutina que lo llamo cuando: Se encuentra la llave que cierra la función O cuando la sentencia de return es ejecutada Puede ser usada con o sin un valor asociado Sin embargo, si la función fue declarada como aquella que retorna un valor de un cierto tipo, entonces debe retornar un valor. Solo funciones declaradas con tipo void pueden usar el return sin valor

Determinar las Salidas

Ejemplo 2 Desarrollar una función intercambio, que reciba dos números como parámetro y los devuelva intercambiados

Solución void intercambio ( int * x, int * y ) { int temp; temp = * x; * x = * y; * y = temp; printf ( "\n x=%d y=%d temp=%d ", * x, * y, temp ); } main ( ) int a = 1,b = 2; printf ( "a=%d b=%d\n", a, b ); intercambio ( &a, &b ); return ( 0 );

Ejemplo Invertir un numero void invierte(int* n) { int tmp; tmp = * n; * N = 0; while ( tmp > 0 ) * n = ( * n ) * 10 + tmp % 10; tmp /= 10; } int main ( ) int num; scanf ( "%d", &num ); invierte ( &num ); printf ( "invertiendo es %d\n", num ); return ( 0 );

Ejercicio determinar salidas

Invocación de Funciones Recordar que las variables globales pueden ser accesadas por cualquier función Si en una función existe una variable local de igual nombre que una global, es la variable local con la que se trabaja. Normalmente del main invocamos a las funciones, pero cualquier función puede invocar a otra función que ya ha sido definida, incluso puede llamarse a si misma (recursividad). void diez_veces ( int v ) { if ( v == 10 ) return; else diez_veces ( v + 1 ); }

Función main ( ) Como ya se señaló, es la función principal en un programa. Cuando se utiliza return, el programa devuelve un código de terminación al proceso de llamada (Sistema Operativo). El valor devuelto puede ser 0 que indica terminación normal o cualquier otro valor cuando se produce un error.

Argumentos de main ( )

Argumentos de main ( )

Paso de Arreglos unidimensionales a funciones

Paso de Arreglos unidimensionales a funciones

Pasando arreglos como parámetros

Paso arreglos unidimensionales a funciones Al llamar una función pasándole un arreglo como parámetro, como se le entrega la dirección del primer elemento, entonces si los valores del arreglo son modificados dentro de la función, también son modificados en la función que llama. Por lo tanto el paso de la arreglos es por referencia.

Pasando arreglos para que no sea modificado Una forma de pasar un arreglo y que no sea modificado, es declararlo como un parámetro constante funcion ( const int x [ 10 ] ) { ... } Si se intenta modificar dentro el la función, resultará un error de compilación

Fin Todavía es tiempo …