6.funciones y recursividad en c++

16
Funciones y Recursividad Ramiro Estigarribia Canese

Transcript of 6.funciones y recursividad en c++

Funciones y Recursividad

Ramiro Estigarribia Canese

Programas Reales➔ La mayoría de los programas que resuelven

problemas reales son más grandes que los programas que se presentan en los primeros capítulos.

➔ La experiencia ha demostrado que la mejor forma de desarrollar y mantener un programa extenso es construirlo a partir de piezas (o componentes) simples y pequeñas.

➔ A esta técnica se le conoce como divide y vencerás.

Componentes de los programas en C++➔ Por lo general, los programas en C++ se escriben

mediante la combinación de nuevas funciones y clases que escribimos con funciones disponibles en C++.

➔ La Biblioteca estándar de C++ proporciona una extensa colección de funciones para realizar cálculos matemáticos, manipulación de texto, entrada/salida, comprobación de errores y otras operaciones.

➔ Esto facilita el trabajo del programador, ya que estas funciones proporcionan muchas de las herramientas que necesita.

¿Qué Permiten las Funciones?➔ Las funciones permiten dividir un programa en

módulos.➔ Las instrucciones se escriben sólo una vez, y se

pueden reutilizar muchas veces.➔ Se facilita el proceso de desarrollo de programas al

construir a partir de piezas pequeñas y simples.➔ Permite reutilización de software: utilizar las

funciones existentes como bloques de construcción para crear nuevos programas.

Funciones matemáticas de la biblioteca➔ Utilizamos la función pow del archivo de

encabezado <cmath> para elevar un valor a una potencia.

➔ Introduciremos aquí varias funciones del archivo de encabezado <cmath> para presentar el concepto de las funciones globales que no pertenecen a una clase específica.

➔ El archivo de encabezado <cmath> proporciona una colección de funciones que nos permiten realizar cálculos matemáticos comunes.

➔ Por ejemplo, puede calcular la raíz cuadrada de 900.0 con la siguiente llamada a la función:

La clase Math➔ La clase Math cuenta con una colección de

métodos que nos permiten realizar cálculos matemáticos.

➔ Por ejemplo, podemos calcular la raíz cuadrada de 900 con una llamada al siguiente método:sqrt(900). Resultado = 30.0.

➔ El método sqrt recibe un argumento de tipo double y devuelve el resultado.

➔ Para imprimir el valor de la llamada anterior al método en una ventana de comandos:

➔ cout << sqrt(900);

1.Raiz Cuadrada#include <iostream>#include <math.h>using namespace std;int main(){int numero, raiz; cout << "Ingrese 1 numero" << endl; cin >> numero; raiz=sqrt(numero);cout << "La raiz es:" << raiz;return 0;}

Funciones con varios Parámetros//2.Función que calcula el cuadrado de un número.#include <iostream>using namespace std;int cuadrado(int numero){ return numero*numero; }

int main(){int numero,resultado; cout << "Ingrese 1 numero" << endl; cin >> numero; resultado=cuadrado(numero);cout << "El cuadrado es:" << resultado;return 0;}

¿Qué es una Función?➔ Es un conjunto de líneas de código que realizan

una tarea específica y puede retornar un valor.➔ Las funciones pueden tomar parámetros que

modifiquen su funcionamiento. ➔ Las funciones son utilizadas para descomponer

grandes problemas en tareas simples. ➔ Cuando una función es invocada se le pasa el

control a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada.

Random➔ Se puede crear un generador de números

aleatorios de la siguiente manera:sorteo = rand( );

➔ Después, el generador de números aleatorios puede usarse para generar valores boolean, byte, float, double, int, long y gaussianos.

➔ El método nextInt de la clase Random genera un valor int aleatorio en el rango de –2.147.483.648 a +2.147.483.647.

➔ Cualquier valor en ese rango debería tener una oportunidad de salir sorteado.

3.Programa que lanza un dado 5 veces

#include <iostream>#include <cstdlib> // Función para randusing namespace std;int main(){ for (int contador=1; contador<=5; contador++) { cout << (1 + rand()%6 ) << " "; //muestra el valor generado } // fin de for return 0; }

//4.Sortea un número, y compara con el valor ingresado.#include <iostream>#include <cstdlib> // Función para rand#include <ctime> // Función para tiempousing namespace std;int main(){srand(time(0)); //Para que el sorteo distinto siempre.int numero, resultado;cout << "Elija un número del 1 al 6:" << endl;cin >> numero;resultado=1+rand()%6;if (numero==resultado)cout << "Felicitaciones, ganaste" << endl;elsecout << "Lastimosamente perdiste: " << resultado;return 0;}

Recursividad➔ Los programas que hemos visto están

estructurados generalmente como funciones que se llaman entre sí, de una manera disciplinada y jerárquica.

➔ Para algunos problemas, es conveniente hacer que las funciones se llamen a sí mismas.

➔ Una función recursiva es una función que se llama a sí misma.

5.Factorial de un número.#include <iostream>using namespace std;int main(){ int num=3,fact=1; for(int i=1; i<=num; i++) { fact = fact * i; } cout << "Su factorial es: " << fact; return 0;}

//6.Factorial utilizando un método recursivo.#include <iostream>using namespace std;int factorial(int n){ if(n<2) return 1; else return n*factorial(n-1);}int main(){ int numero; cout << "Introduce un numero:" << endl; cin >> numero; cout << "El resultado es:" << factorial(numero); return 0;}