PROGRAMACION ESTRUCTURADA: Tema 3. Funciones

Documentos relacionados
ESTRUCTURA DE DATOS: Tema 3. Recursividad

PROGRAMACION ESTRUCTURADA: Tema 1. El lenguaje de programación C

Estructuración del programa en partes más pequeñas y sencillas

Capitulo 2. Programación Modular

Tema: Funciones, Procedimientos y Recursividad en C#.

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Tema: Funciones, Procedimientos y Recursividad en C#.

Funciones Tipos de funciones y Recursividad

Programación I Recursividad.

REPRESENTACIÓN DE DATOS

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

Tema 16: Tipos de datos estructurados en lenguaje C

TEMA 5: Subprogramas, programación modular

Tema 05: Elementos de un programa en C

LENGUAJE PROGRAMACIÓN UNA BREVE INTRODUCCIÓN.

Programación I Teoría II.

FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )

Lenguaje C, tercer bloque: Funciones

El operador contenido ( ) permite acceder al contenido de

funciones printf scanf

Lenguaje de Programación

Elementos de un programa en C

Tema 13: Apuntadores en C

Programación Estructurada. Complementos de Informática Tema 2: Programación Estructurada y Programación Modular. Números Amigos

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Modularización en lenguaje C. Funciones

Introducción a la Programación

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

PROGRAMACIÓN UNIDADES

SESIÓN DE EJERCICIOS E1

INTRODUCCIÓN A LA POO EN C++

Funciones y paso de parámetros

Introducción a la Programación en C Funciones

Programación II Recursividad Dr. Mario Rossainz López

Tema 18: Memoria dinámica y su uso en C

Autoestudio 2: Variables y Operadores

PROGRAMACION MODULAR FUNCIONES

Programación. Test Autoevaluación Tema 3

Dpto. de Lenguajes y Ciencias de la Computación Universidad de Málaga. TEMA 8: Funciones. Fundamentos de Informática (Ingeniería Técnica Industrial)

UNIDAD 3 Modularidad

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Tema 7: Recursividad

Asignatura Programación

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Introducción al lenguaje C

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO INGENIERÍA EN COMPUTACIÓN

Análisis de algoritmos. Recursividad

Funciones Definición de función

SESIÓN DE EJERCICIOS E1

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Funciones en Lenguaje C

Cómo implementar tus propias funciones en Lenguaje C?

Procedimientos y funciones

Laboratorio de Arquitectura de Redes. Introducción al lenguaje C

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Escuela Superior Tepeji del Río

Curso de Java Introducción a la Programación II

Universidad Don Bosco (UDB) Facultad de Ingeniería / Escuela de Computación

PUNTEROS (APUNTADORES)

Tema 3. Tipos de datos simples

LENGUAJE. Tema 3 Elementos de un programa II

Estructuras de Datos Declaraciones Tipos de Datos

Tipos de Datos Simples Contenido del Tema

Ámbito y Funciones. Lenguaje de Programación Estructurado. Siempre imaginé el Paraíso como algún tipo de biblioteca.

Programación. Carrera: MAE 0527

FUNCIONES EN C QUÉ SIGNIFICA VOID? QUÉ ES EL TIPO DE RETORNO? PARA QUÉ SIRVE RETURN? MÓDULOS (CU00547F)

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Introducción al lenguaje C

Declaración. Introducción. Definición o implementación. Llamada. Un programa en C consta de una o más funciones.

Tipos de datos y Operadores Básicos

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez

Recursividad. Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

Subrutinas. Subrutinas. Erwin Meza Vega

TIPOS DE DATOS BASICOS EN LENGUAJE C

USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++

Introducción al lenguaje C

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16

Punteros y aritmética de punteros. se almacena el operando

Guía práctica de estudio 05: Diagramas de flujo

Unidad 1. Lógica de programación. Tema 1. Introducción a la programación

Sobre Carga de Operadores

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

Programación Estructurada

FUNDAMENTOS DE PROGRAMACIÓN. PRÁCTICA 11: Apuntadores

Tema 06: Recursividad

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Tema: Repaso sobre uso de Funciones, Arreglos y Punteros en C++.

Tema: Plantillas en C++.

Carrera: EMZ Participantes Representante de las academias de ingeniería Electromecánica de los Institutos Tecnológicos.

UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI

Tema: Funciones y Procedimientos en C#.

SUBPROGRAMAS FUNCIONES

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Informática Ingeniería en Electrónica y Automática Industrial

Transcripción:

PROGRAMACION ESTRUCTURADA: Tema 3. Funciones Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 dtorres@mixteco.utm.mx Contenido 1. Definiciones de funciones 2. Funciones con paso de parámetros por valor 3. Funciones con paso de parámetros por referencia 4. Funciones recursivas 5. Referencias 1

1. Diseño descendente También conocido como diseño top-down o divide y vencerás. Consiste en empezar analizar un problema complejo e ir descomponiendo en subproblemas(módulos) e ir avanzando nivel a nivel, hasta obtener subproblemas fáciles de solucionar. En lenguaje C, la solución de un problema se compone de una función principal, el cual invoca a funciones que resuelven una parte del problema dado, donde cada función puede particionarse en otras más. 1. Diseño descendente Nivel 1 Cálculo superficie de un rectángulo Nivel 2 Entrada Cálculo Salida Nivel 3 Entrada altura Entrada base S = B * Alt Salida altura Salida base Salida superficie Lectura num. Real Validación Lectura num. Real Validación Nivel 4 2

1. Diseño descendente Ventajas Facilita solución de problemas Permite que cada desarrollador realice una parte de forma independiente. Propicia la reutilización de código. Consideraciones Realizar una correcta descomposición Adecuada definición de las interfaces(argumentos) Terminar con una correcta integración incremental suficientemente probada. 2. Funciones Las funciones son módulos que resuelven una parte de un problema complejo. Componentes de una función en C Prototipo de función Llamadas a función (Paso de parámetros) Definición o implementación de la función Ejemplo, desarrollar el problema del cálculo de la superficie de un rectángulo. 3

4

2. Funciones Tanto el prototipo, llamada e implementación de la función, deben coincidir en tipo de retorno, nombre de la función y tipos de los parámetros, así como el orden de estos últimos. (ver ejemplo anterior) Las funciones crean un espacio en memoria durante su ejecución y se libera ese espacio al terminar su ejecución. 2. Funciones #include <stdio.h> int menu(); // prototipos de funciones void introducir( ); int main() { int opc; opc=menu(); int menu() {... void introducir( ) {... //llamadas de función //Implementación de función //Implementación de función 5

2. Funciones (Prototipos) Las funciones en C deben de ser declaradas antes de ser usadas, de manera que tenemos dos opciones: 1. El estándar ANSI C en la estructura de un programa indica que el prototipo de función se coloca antes de la implementación del main. 2. Puede no colocarse el prototipo e iniciar con la implementación de la función antes de la implementación del main (no recomendado de acuerdo al ANSI C). 2. Funciones (Prototipos) El uso de propotipos de función le indica al compilador la cantidad y tipo de dato de los parámetros o argumentos y el tipo de dato que retornará la función. En el prototipo no es necesario definir el nombre de los argumentos, es suficiente con los tipos de datos correspondientes. 6

2. Funciones (Prototipos) tipodatoretorno nombrefuncion(listaparámetros); Ejemplo: prototipo de la función del cálculo de factorial: #include <stdio.h> int factorial (int num); //prototipo de función int main() { 2. Funciones (Llamada de función) La llamada a una función es cuando se solicita la ejecución de una función que ya se encuentra definida previamente. En este caso se debe incluir el nombre de la función y entre paréntesis la lista de los datos que se envían como parámetros, en caso que devuelva un valor, considerar la asignación correspondiente. 7

2. Funciones (Llamada de función) Los datos deben coincidir en número y tipo con los declarados en el prototipo y la definición de la función. #include <stdio.h> int factorial (int num); int main() { int resultado; resultado=factorial(num); //prototipo //llamada 2. Funciones (implementación de función) tipo nombre (listaparámetros ) { declaraciones; instrucciones; 8

2. Funciones (implementación de función) mifuncionnula(){ Al no declarar tipo de retorno, se considera entero Será válida? 2. Funciones (implementación de función) Ejemplo: A continuación se muestra la implementación de la función que calcula el factorial de un número entero positivo. int factorial (int n){ int i, result =1; for( i=2; i<=n; i++) result = result *i; return result; 9

3. Funciones con paso de parámetros por valor En la llamada de función, se pasa solo el contenido de los parámetros (variables) a la función que se invoca. Estas funciones no modifican los valores de las variables que se pasan como argumentos. El resultado que retorna es la solución del subproblema. 3. Funciones con paso de parámetros por valor En estas funciones, para que la función regrese algún valor es necesario utilizar la instrucción return return provoca además la terminación de la ejecución de la función Se recomienda que se coloque al final de la función La sintaxis de la instrucción return es: return expresión; ejemplo: return resultado; 10

//Ejemplo de función con paso por valor #include <stdio.h> int factorial (int); int main() { resultado=factorial(num); int factorial (int n){ int i, mult; mult =1; for( i=n; i>1; i--) mult = mult *i; return mult; //prototipo //llamada 4. Funciones con paso de parámetros por referencia En la llamada de función, se pasa la dirección de uno o más parámetros a la función que se invoca. Desde la implementación de la función, se puede modificar el valor de variables que se pasaron por referencia. 11

4. Funciones con paso de parámetros por referencia Importante mencionar que en C no existe el paso de parámetros por referencia [2], todos los parámetros se pasan por valor. Sin embargo, es posible por medio de variables de tipo apuntador simular el paso por referencia. 4. Funciones con paso de parámetros por referencia Antes, Introducción a apuntadores. Un apuntador es una variable que contiene una dirección de memoria. Frecuentemente esta dirección es la localidad de otra variable. La forma general de la declaración de una variable apuntador es: tipo * nombrevariable; 12

4. Funciones con paso de parámetros por referencia Declaración de variables apuntador int *intptr; float *floatptr; char *strptr; int **intptrptr; 4. Funciones con paso de parámetros por referencia Operadores a utilizar con apuntadores: & Operador de dirección o referencia. Devuelve la dirección de memoria de la variable * Operador de indirección o desreferencia. Devuelve el valor situado en la dirección del operando. Se dice que da acceso a la variable que señala el apuntador. 13

4. Funciones con paso de parámetros por referencia int balance, value; int *bal_ptr; balance=3200; //step 1 bal_ptr = &balance; //step 2 value=*bal_ptr; //step 3 14

//Cálculo de una tabla de potencias #include <stdio.h> #define N 7 //prototipos long pot(int, int); void impencab(void); void imptabpot(int); //long int es implícito void main(void){ impencab(); imptabpot(n); //paso por valor //implementación continuación de del función ejemplo void impencab(void) { int i; printf("\n ------- Tabla de potencias --------\n"); printf("1"); for(i=2; i<=n; i++) printf("%9d", i); putchar('\n'); printf("------------------------------------------------------\n"); 15

void imptabpot(int n){ int i, j; for(i=1; i<=n; i++) { for(j=1; j<=n; j++) if(j==1) printf("%ld", pot(i,j)); else printf("%9ld", pot(i,j)); putchar('\n'); long pot(int m, int n){ int i; long producto=1; for(i=1; i<=n; i++) producto*=m; return producto; 5. Funciones recursivas Una función recursiva es una función que se llama a sí misma, ya sea directa o indirecta a través de otra función. Componentes Caso base. Es el resultado más simple, lo que conoce la función. Paso de recursión. Llamada a la misma función, pero con el problema poco menos complejo que el original. También puede incluir la palabra reservada return. 16

5. Funciones recursivas Calculo del factorial, ejemplo recursivo 33 5. Funciones recursivas 34 17

5. Funciones recursivas int factorial(int n) //definición de la función { int fact; if(n==0 n==1) //caso base fact=1; else fact=n*factorial(n-1); return fact; 35 5. Funciones recursivas Cálculo de la potencia, ejemplo de problema recursivo 36 18

5. Funciones recursivas La serie Fibonacci 0,1,1,2,3,5,8,13,21,34, Empieza con 0 y 1, y tiene la propiedad que cada número Fibonacci subsecuente es la suma de los dos números Fibonacci previos. La serie Fibonacci se puede defininir recursivamente de la siguiente manera: fibonacci(0)=0 fibonacci(1)=1 fibonacci(n)=fibonacci(n-1)+fibonacci(n-2) 7. Referencias 1. Joyanes Aguilar, Luis (1996) Fundamentos de programación, Algoritmos y Estructura de datos. McGraw-Hill, México. 2. Deitel & Deitel (2001) C++ Como programar en C/C++. Prentice Hall 3. Kerrighan y Ritchie El lenguaje de programación. Prentice Hall 4. Gottfried, Byron (1999) Programación en C McGrawHill, México. 5. Levine Gutierrez, Guillermo (1990) Introducción a la computación y a la programación estructurada. McGraw-Hill, México. 6. Levine Gutierrez, Guillermo (1990) Introducción a la computación y a la programación estructurada. McGraw-Hill, México. 7. H. Schildt, C++ from the Ground Up, McGraw-Hill, Berkeley, CA, 1998 8. Keller,,AL;Pohl,Ira. A Book on C. 3 ª edición. Edit.Benjamin umnings.1995 19