Programaci贸n Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas
1
Agenda Implementaci贸n de funciones libres. Uso del typedef y el struct en C++. Recursividad como control de ciclos.
herramienta
para
el
2
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.
3
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. 4
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. 5
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. 6
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]; };
7
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.
8
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; 9
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.
10
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
11
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.
12
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.
13
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. 14
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.
15
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. 16
Actividad • Realizar los siguientes programas de forma recursiva: • Factorial • Serie de Fibonnaci, • Multiplicación de dos números 17
多Preguntas, dudas y comentarios?
18