Implementación de funciones libres C++ es un lenguaje híbrido que permite mezclar POO y Programación Estructurada. Por este motivo se pueden tener funciones sin necesidad de agruparlas en clases. Las funciones pueden recibir y devolver apuntadores como argumentos. 1
Implementación de Funciones Libres Cuando se utilizan parámetros del tipo puntero se dicen que los argumentos se pasan por referencia, de este modo se pueden modificar directamente. Cuando se omiten punteros, los argumentos son por valor y sólo se copia en la función el valor de los argumentos. 2
Actividad Realizar un programa que dado diferentes arreglos de distintos tamaños encuentre el mayor de n números. El código de mayor debe de ser una función. Modificar el programa anterior para que el arreglo pueda ser dinámico de acuerdo al tamaño que indique el usuario. 3
Uso del typedef y el struct en C++ Una estructura es un tipo de datos complejos que puede contener diversos tipos de datos simples formando una unidad. En otros lenguajes reciben el nombre de registros. Las estructuras se manejan en programación estructurada. 4
Uso del typedef y struct en C++ Las estructuras en C/C++ se crean con la palabra clave struct seguida del nombre de la estructura: struct paciente { unsigned int ID; unsigned short edad; char nombre[40]; }; 5
Uso del typedef y struct en C++ Una estructura se asemeja mucho a una clase en lo que respecta a los atributos de los objetos. De hecho en C++ (pero no en C) las estructuras pueden anidar funciones. El modificador por default en una estructura es public, mientras que en una clase es private. 6
Uso del typedef y struct en C++ Una vez declarada la estructura (se recomienda realizarla fuera de cualquier función de manera global y en un archivo de encabezado .h) se pueden crear variables de este nuevo ADT: struct paciente p; 7
Uso del typedef y struct en C++ Para evitar el repetir varias veces la palabra struct y el nombre de la estructura se puede crear un alias mas simple utilizando la palabra reservada typedef que significa definición de tipo. typedef struct paciente P; //alias P p; //Declara una variable de tipo paciente. 8
Actividad Realizar un programa que pida los datos de un artículo de cómputo: nombre, precio, descripción, número de identificación. Guardar esos datos en un arreglo de estructuras. Leer y escribir dichos valores en un archivo 9
Recursividad como herramienta para el control de ciclos La recursividad es una manera elegante de resolver problemas. Una función se dice que es recursiva cuando se invoca así misma. Ejemplo el factorial de un número, las torres de hannoi, la serie de fibonacci, etc. 10
Recursividad N! = N * (N-1)! 5! = 5 * 4! Fibo(5) = Fibo(4) + Fibo(3) La recursividad nos permite resolver problemas que parecen ser muy complejos de manera sencilla. 11
Recursividad Todo programa recursivo puede ser resuelto a través de ciclos pero puede que esta solución sea muy compleja. Toda función recursiva debe de tener dos características básicas: un caso base y el caso recursivo. 12
Recursividad Ojo: si no se cuenta con un caso base el programa se puede ciclar de manera indefinida provocando que el programa o el sistema operativo colapsen. La recursividad de manera interna trabaja con memoria dinámica, se utilizan pilas para guardar los valores anteriores de las funciones recursivas. 13
Recursividad La gran desventaja de las funciones recursivas es que son ampliamente consumidoras de memoria. Todo programa recursivo puede implementarse con pilas. La recursividad trata de sacar provecho al principio de divide y vencerás. 14
Actividad Realizar los siguientes programas de forma recursiva: Factorial Serie de Fibonnaci, Multiplicación de dos números 15