1 programación procedural y recursiva en c++ m.c. juan carlos olivares rojas

18
1 Programación Procedural y Programación Procedural y Recursiva en C++ Recursiva en C++ M.C. Juan Carlos Olivares Rojas

Upload: beatriz-paez-gimenez

Post on 24-Jan-2016

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

11

Programación Programación Procedural y Recursiva Procedural y Recursiva

en C++en C++

M.C. Juan Carlos Olivares Rojas

Page 2: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

AgendaAgenda

Implementación de funciones libres.

Uso del typedef y el struct en C++.

Recursividad como herramienta para el control de ciclos.

22

Page 3: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

Implementación de funciones Implementación de funciones libreslibres

• 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.

33

Page 4: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

Implementación de Funciones Implementación de Funciones LibresLibres

• 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. 44

Page 5: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

ActividadActividad

• 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.

55

Page 6: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

Uso del typedef y el struct en C+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.

66

Page 7: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

Uso del typedef y struct en C++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];};

77

Page 8: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

Uso del typedef y struct en C++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.

88

Page 9: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

Uso del typedef y struct en C++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;99

Page 10: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

Uso del typedef y struct en C++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.1010

Page 11: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

ActividadActividad

• 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

1111

Page 12: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

Recursividad como herramienta Recursividad como herramienta para el control de ciclospara 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.

1212

Page 13: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

RecursividadRecursividad

• 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. 1313

Page 14: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

RecursividadRecursividad

• 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.

1414

Page 15: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

RecursividadRecursividad

• 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.

1515

Page 16: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

RecursividadRecursividad

• 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.

1616

Page 17: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

ActividadActividad

• Realizar los siguientes programas de forma recursiva:

• Factorial• Serie de Fibonnaci,• Multiplicación de dos números

1717

Page 18: 1 Programación Procedural y Recursiva en C++ M.C. Juan Carlos Olivares Rojas

1818

¿Preguntas, dudas y ¿Preguntas, dudas y comentarios?comentarios?