C2 u6

Page 1

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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.