SlideShare una empresa de Scribd logo
1 de 12
UNIVERSIDAD DE ORIENTE
NÚCLEO DE MONAGAS
ESCUELA DE INGENIERIA Y CIENCIAS APLICADAS
CURSO ESPECIAL DE GRADO
Programacion Iterativa
Profesora: Ing. Jhonatan Vasquez
Maturín, Abril del 2015
Bachilleres:
Centeno G. Renny J. C.I. 21.350.253
Fernández G. Ana B. C.I. 21.329.313
Contenido
1. Introducción...................................................................................................................3
2. Marco teórico ....................................................................................................................4
2.1 Programación..............................................................................................................4
2.2 Iteración.......................................................................................................................4
2.3Iteración en la programación......................................................................................4
2.4 Iteración declarativa...................................................................................................4
2.4.1 Bucle While ...........................................................................................................5
2.4.2 Bucle For ...............................................................................................................5
2.4.3 Bucle do while .......................................................................................................5
2.4.4 Sentencias Break, Continue y Return.................................................................6
2.5 Iteración con funciones recursivas ............................................................................7
2.6 Diferencias entre métodos recursivos y métodos iterativos ....................................8
3. Discusión............................................................................................................................9
4.Conclusion........................................................................................................................11
5. Bibliografía......................................................................................................................12
1. Introducción
La programación es un mundo amplio con muchas posibilidades, no todo es pulir una
brillante idea y sentarse al frente de un editor de texto o un entorno de desarrollo de
confianza, para programar es necesario conocer en un amplio aspecto las diferentes técnicas
y herramienta que nos permitirán resolver problemáticas que se nos puedan ir presentando
mientras desarrollemos esa idea.
Al igual que en la vida que se nos pueden presentar ciertos escenarios y la manera de
solucionarlos cambia dependiendo de cada uno, de igual forma sucede en la programación,
existe una técnica o practica común que se utiliza para atacar un tipo de problema en
específico, una de esas técnicas que nos sacaran las castañas del fuego en más de una
ocasión es la iteración, la iteración no es una palabra desconocida de seguro más de una vez
la hemos escuchado, y es que no es más que repetir un proceso un número determinado de
veces hasta cumplir con una condición.
Conociendo bien que significa iterar no es difícil trasladar ese conocimiento hacia
nuestros proyectos que desarrollaremos en un lenguaje de programación determinado, es
fácil imaginarse una situación donde se deba repetir una acción tantas veces sea necesario
hasta obtener el resultado que se espera, por ejemplo si se desea que el usuario ingrese un
código especifico y se diseñe el código de tal forma que hasta que no ingrese ese código no
se pueda seguir avanzando en la aplicación, como ese ejemplo existen muchísimos más
donde resulta muy útil y casi que indispensable utilizar las iteraciones.
Existen 2 formas de ejecutar iteraciones en una aplicación, la primera es mediante bucles
donde a través de variables y estructuras comunes de control se especifica el código para
que se cumplan los ciclos necesarios antes de salir de ese código, la manera de realizar esos
bucles varia de lenguaje en lenguaje pero la esencia es la misma, ejemplos de estos bucles
son el while,for, do while entre otros.
Otra forma de aplicar las iteraciones es mediante funciones recursivas, estas tienen la
característica especial que se llaman así mismas para realizar su labor iterativa y también
cuenta con el apoyo de las estructuras de control, ambas técnicas son importantes y cuentan
con sus pro y contras, todo buen programador debe conocerlas bien si quiere estar bien
calificado a la hora de programar.
2. Marco teórico
2.1 Programación
La programación informática, acortada como programación, es el proceso de diseñar,
codificar, depurar y mantener el código fuente de programas computacionales. El código
fuente es escrito en un lenguaje de programación. El propósito de la programación es crear
programas que exhiban un comportamiento deseado. El proceso de escribir código requiere
frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a
utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente
otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código),
aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.
Del proceso de programación surge lo que comúnmente se conoce como software (conjunto
de programas), aunque estrictamente este último abarca mucho más que sólo la
programación.
2.2 Iteración
Iteración significa el acto de repetir un proceso con el objetivo de alcanzar una meta
deseada, objetivo o resultado. Cada repetición del proceso también se le denomina una
"iteración", y los resultados de una iteración se utilizan como punto de partida para la
siguiente iteración.
2.3Iteración en la programación
En programación, Iteración es la repetición de un proceso dentro de un programa de
computadora. Puede usarse tanto como un término genérico (como sinónimo de repetición)
así como para describir una forma específica de repetición con un estado mutable.
Cuando se usa en el primer sentido, la recursividad es un ejemplo de iteración, pero que usa
su propia notación (notación recursiva), que no es el caso de iteración.
Sin embargo, cuando se usa en el segundo sentido (caso más restringido), la iteración
describe el estilo de programación usado en lenguajes de programación imperativa. Esto
está en contraposición de la recursividad, la cual tiene un enfoque más declarativo.
2.4 Iteración declarativa
Los bucles se utilizan para ejecutar un conjunto de instrucciones varias veces basándose
siempre en una condición que decidirá si se sigue repitiendo o no. Veamos los tipos que
hay, a modo de ejemplo nos basaremos en el lenguaje java.
2.4.1 Bucle While
while (expresion) {sentencias}
Las instrucciones dentro de las llaves se ejecutan mientras la expresión sea verdadera.
i=5;
while ( i > 0 ) {i --;}
// las llaves aquí se podían haber omitido, puesto
// que solo hay una sentencia.
System.out.println("Ahora i vale 0");
2.4.2 Bucle For
Es un bucle más "fijo", permite ejecutar el conjunto de sentencias un número determinado
de veces fijado al principio del bucle y funciona por tanto como un contador. Su expresión
general seria como la que sigue:
for (inicialización, expresionBooleana, incremento) {conjuntoDeSentencias;}
for (int i= 0; i <10; i++) { System.out.println("el valor de i es: " + i); }
Este ejemplo nos mostraría por la pantalla diez líneas diciéndonos el valor creciente de 'i' de
cero a nueve.
2.4.3 Bucle do while
Es igual al bucle while anteriormente visto, solo que ahora se evalúa la expresión al final
del bucle, por lo que ese conjunto de sentencias se ejecuta al menos una vez:
i=5;
do
{i --;} // las llaves aquí se pueden omitir puesto
while ( i > 0 ) // que solo hay una sentencia.
Este ejemplo similar al anterior para el bucle while se diferencia en que ejecuta una vez
más las sentencias en su cuerpo puesto que comprueba la condición posteriormente.
2.4.4 Sentencias Break, Continue y Return
Antes hemos hablado de la sentencia Break con las bifurcaciones switch. Pues bien, esta
sentencia tiene un valor más amplio. La sentencia break nos permite salirnos del bloque de
sentencias (encerrado entre llaves) o el bucle que estamos ejecutando, sin ejecutar las
sentencias que resten para el final o las restantes iteraciones del bucle. Por ejemplo:
i=5;
do{
i --;
if (i == 3) break;
} while ( i > 0 )
// En este ejemplo cuando i tenga el valor 3
// se abandonará el bucle.
La sentencia Continue solo es válida para bucles, sirve para no ejecutar las sentencias que
restan para la finalización de una iteración de ese bucle, continuando después con las
siguientes iteraciones del bucle. Por ejemplo:
i=5;
do{
if (i == 3) continue; i --;
}while ( i > 0 ) // En este ejemplo cuando i tenga el valor 3
// se abandonará la iteración y por tanto el
// bucle no tendrá fin puesto que no se
// ejecutaría la sentencia de decremento.
Tanto la sentencia continue como break se pueden utilizar con etiquetas para poder
discriminar los bucles que quieren afectar en caso de que se encuentren en un bucle
anidado. Por ejemplo:
Bucle1:
for (int i=0; i<10; i++){
bucle2:
for (int j=0; i<10; j++){
if (j==5) {break bucle2;}
}
} // cuando j llega a 5 el bucle2 deja de
// ejecutarse hasta la siguiente iteracion
// del bloque1
Por último vemos la sentencia return. Esta sentencia nos permite finalizar también un
conjunto de sentencias, con la peculiaridad esta vez de que también finaliza el método o
función que en el que se encuentre. En el caso de que queramos devolver un valor desde esa
función o método lo debemos poner a continuación de return. Por ejemplo:
void funcionEjemplo(){
int i=0;
while (i < 100){ //esta absurda función nos devuelve
i++; //al llamarla el valor 100 como has
} //podido comprobar
return i;
}
2.5 Iteración con funciones recursivas
Como definición general, podemos decir que una función recursiva es aquella que se llama
a sí misma para resolverse. Dicho de otra manera, una función recursiva se resuelve con
una llamada a sí misma, cambiando el valor de un parámetro en la llamada a la función. A
través de las sucesivas llamadas recursivas a la función se van obteniendo valores que,
computados, sirven para obtener el valor de la función llamada originalmente.
El proceso de llamadas recursivas siempre tiene que acabar en una llamada a la función que
se resuelve de manera directa, sin necesidad de invocar de nuevo la función. Esto será
siempre necesario, para que llegue un momento que se corten las llamadas reiterativas a la
función y no se entre en un bucle infinito de invocaciones.
Quizás en la teoría cueste más ver lo que es una función recursiva que por la práctica. Un
ejemplo típico de recursividad sería la función factorial. El factorial es una función
matemática que se resuelve multiplicando ese número por todos los números naturales que
hay entre él y 1.
Por ejemplo, factorial de 4 es igual a 4 * 3 * 2 * 1. Si nos fijamos, para el ejemplo de
factorial de 4 (factorial se expresa matemáticamente con un signo de admiración hacia
abajo, como 4!), se puede resolver como 4 * 3! (4 * factorial de 3). Es decir, podemos
calcular el factorial de un número multiplicando ese número por factorial de ese número
menos 1.
n! = n * (n-1)!
En el caso de la función factorial, tenemos el caso básico que factorial de 1 es igual a 1. Así
que lo podremos utilizar como punto de ruptura de las llamadas recursivas.
Así pues, vamos a realizar la codificación de la función recursiva factorial. Primero veamos
un pseudocódigo:
funcion factorial(n)
si n=1 entonces
factorial = 1
sino
factorial = n * factorial(n-1)
fin función
Ahora veamos cómo se implementaría esta función con el lenguaje de programación
Javascript:
function factorial(n){
if(n==1)
return 1
else
return n * factorial(n-1)
}
Como se puede ver, la recursividad no representa ninguna dificultad y de hecho es una
herramienta muy útil para programación de algoritmos.
Hay muchos algoritmos que sólo se resuelven con recursividad, o al menos cuya resolución
más directa y elegante está basada en realizar funciones recursivas, que se llamen a sí
mismas para obtener el resultado final. Por ejemplo el recorrido de diversas estructuras de
datos, como las de tipo árbol, siempre se acostumbran a realizar de manera recursiva, para
poder estar seguros de que pasamos por todas las ramas del árbol.
2.6 Diferencias entre métodos recursivos y métodos iterativos
Recursivos Iterativos
Se llaman así mismos Utilizan bucles
Ocupan memoria considerable Requieren poco espacio de memoria
Moderadamente complejos Fáciles de construir
Resuelve los problemas de manera elegante Son poco elegantes pero eficientes
3. Discusión
Como todos sabemos la programación nos va a permitir realizar cosas maravillosas
mediante líneas de código que le transmitimos a una máquina, con diversas técnicas
logramos que estas líneas de códigos contengan ciertas características que satisfagan
cualquier problemática que se deba tratar en el programa en cuestión, una de las técnicas
que se deben conocer son los métodos iterativos, en sus dos facetas, funciones recursivas y
bucles iterativos, ambos nos permitirán realizar tareas donde se requiere iterar un proceso
una cantidad de veces necesaria para satisfacer una condición.
Iterar significa repetir un proceso hasta obtener el resultado esperado, estas repeticiones
se les conoce como iteraciones, mientras más iteraciones se tenga por supuesto más largo o
complejo será el código iterativo, esto en el caso de usar un método iterativo de manera de
bucle, donde partiendo de ciertas condiciones se dispone a realizar las diferentes iteraciones
hasta llegar a la condición de parada, existen diversos bucles para afrontar diferentes
situaciones que requieran del uso de iteraciones, de igual manera dependiendo del lenguaje
varían la manera en que se expresan estos bucles, para efectos de ejemplificarlos
trataremos los que existen en el lenguaje java.
Analicemos la forma en que trabajan los bucles en el lenguaje java, observemos el
siguiente código:
//Clase test del while curso aprenderaprogramar.com
public class testWhile {
public static void main (String [ ] args) {
int i = 0;
while (true) { //Condición trivial: siempre cierta
i++;
System.out.println ("Valor de i: " + i);
if (i==9) { break;}
}
} //Cierre del main
} //Cierre de la clase
Si podemos darnos cuenta lo que se ha hecho es crear una clase llamada testwhile para
mostrar el funcionamiento del bucle while, lo peculiar del ejemplo es que el bucle while
recibe un parámetro true lo que parece en principio que arrojara un ciclo infinito, pero ya
que se insertó un sumador(i++) este va acumular la cantidad de veces que el bucle acepte el
parámetro true para posteriormente mediante una estructura de control como lo es el
comando if salir de la corrida cuando se llegue a la iteración 9, a pesar de ser un ejemplo
sencillo podemos captar la utilidad e importancia del uso de los bucles, en este caso solo se
aceptaba un valor cierto sin dar énfasis en su utilidad, pero para solucionar problemáticas
donde se requiere evaluar un número de veces el valor que entra para saber si es aceptado o
no este sencillo bucle sería de gran utilidad, si necesitáramos evaluar un arreglo de números
de 100 dígitos para saber cuántos de esos dígitos son pares por ejemplo, esto sería
inconcebible de hacer sin el uso adecuado de un bucle.
Por otro lado están las funciones recursivas, esta no es más una función que definimos
detalladamente para que al llamarse a sí misma soluciones problemas que necesariamente
requieren el uso de bucles, pero esta vez se solventarían esos problemas de manera más
elegante y precisa, aunque como contra se puede decir que estas funciones ocupa más
espacio en memoria y son algo complejas de definir.
Para entender mejor este concepto veamos un ejemplo que permite sumar 2 números
enteros en java:
/*
* Método recursivo que calcula la suma de dos números enteros
*/
public static int suma(int a, int b) {
if (b == 0) {
return a;
} else if (a == 0) {
return b;
} else {
return 1 + suma(a, b - 1);
}
}
En este ejemplo se define de manera detallada nuestra función recursiva, primero se
establece que la función recibirá 2 números enteros mediante las variables
correspondientes, con estructuras de control se establece que si alguno de estos números
llega a ser 0 simplemente el valor que se arroja es el otro número, de los 2 números ser
diferentes de 0 se arroja entonces el resultado haciendo un llamado al mismo método, es
decir, una llamada recursiva.
Se pudo observar que a pesar de que las funciones recursivas poseen características
únicas que las hacen más elegantes y más estructuradas si se puede decir, no escapan del
uso de técnicas o patrones propios de los métodos iterativos con bucles, el uso de una
técnica u otra dependerá exclusivamente de la habilidad del programador.
4.Conclusion
5. Bibliografía
Wikipedia, Iteración, 2015 , http://es.wikipedia.org/wiki/Iteraci%C3%B3n [consultado:
martes, 21 de abril del 2015, hora: 15:22]
Wikipedia, Programacion, 2015, http://es.wikipedia.org/wiki/Programaci%C3%B3n
[consultado: martes, 21 de abril del 2015, hora: 15:52]
GONZALEZ, Victorino, Estructuras de control tipo bucle en Java,2004,
http://www.desarrolloweb.com/articulos/1760.php [consultado: martes, 21 de abril del
2015, hora: 16:37]
ALVAREZ, Miguel, Funciones recursivas. Recursividad ,2008,
http://www.desarrolloweb.com/articulos/funciones-recursivas-recursividad.html
[consultado: martes, 21 de abril del 2015, hora: 18:17]
HERNANDEZ, Enrique, Programación Java,2013,
http://puntocomnoesunlenguaje.blogspot.com/2013/01/ejemplo-recursividad-sumar-dos-
numeros.html [consultado: martes, 21 de abril del 2015, hora: 18:27]

Más contenido relacionado

La actualidad más candente

Comparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplusComparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplusAbefo
 
Llamadas a subalgoritmos
Llamadas a subalgoritmosLlamadas a subalgoritmos
Llamadas a subalgoritmosAbrirllave
 
métodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javamétodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javaHenry Upla
 
Lenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de ControlLenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de ControlLuis Fernando Aguas Bucheli
 
Tutorial sencillo manejo de pseint y free dfd
Tutorial sencillo manejo de pseint y free dfdTutorial sencillo manejo de pseint y free dfd
Tutorial sencillo manejo de pseint y free dfdLenin Dario Mendoza Mora
 
Curso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje CCurso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje Cguestbc0748
 
Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióNRegina Flores
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Javaquesada_diego
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivasAbrirllave
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1armando_cardenas
 
Estructura de un algoritmo en pseudocódigo
Estructura de un algoritmo en pseudocódigoEstructura de un algoritmo en pseudocódigo
Estructura de un algoritmo en pseudocódigoAbrirllave
 
Sentencias de repetición en Java
Sentencias de repetición en JavaSentencias de repetición en Java
Sentencias de repetición en JavaJdcaste
 

La actualidad más candente (14)

Comparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplusComparacion lenguajes-de-programacion-c-y-cplusplus
Comparacion lenguajes-de-programacion-c-y-cplusplus
 
Llamadas a subalgoritmos
Llamadas a subalgoritmosLlamadas a subalgoritmos
Llamadas a subalgoritmos
 
métodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javamétodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control java
 
Lenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de ControlLenguajes de Programación: Estructuras de Control
Lenguajes de Programación: Estructuras de Control
 
Tutorial sencillo manejo de pseint y free dfd
Tutorial sencillo manejo de pseint y free dfdTutorial sencillo manejo de pseint y free dfd
Tutorial sencillo manejo de pseint y free dfd
 
Curso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje CCurso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje C
 
Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióN
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivas
 
Guia3
Guia3Guia3
Guia3
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1
 
Estructura de un algoritmo en pseudocódigo
Estructura de un algoritmo en pseudocódigoEstructura de un algoritmo en pseudocódigo
Estructura de un algoritmo en pseudocódigo
 
Sentencias de repetición en Java
Sentencias de repetición en JavaSentencias de repetición en Java
Sentencias de repetición en Java
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 

Destacado

Reuters institute digital news report 2015: Spain
Reuters institute digital news report 2015: SpainReuters institute digital news report 2015: Spain
Reuters institute digital news report 2015: SpainLino Agudelo Luna
 
Sirrush Shahadatayn - (English) - Maulana Shah Abdul Aziz Mohaddis Dehlavi
Sirrush Shahadatayn - (English) - Maulana Shah Abdul Aziz Mohaddis Dehlavi Sirrush Shahadatayn - (English) - Maulana Shah Abdul Aziz Mohaddis Dehlavi
Sirrush Shahadatayn - (English) - Maulana Shah Abdul Aziz Mohaddis Dehlavi Jamal Mirza
 
Guia visual de win unisoft
Guia visual de win unisoftGuia visual de win unisoft
Guia visual de win unisoftJosé Ángel
 
Coaching for innovation, networks and clusters
Coaching for innovation, networks and clustersCoaching for innovation, networks and clusters
Coaching for innovation, networks and clustersKlaus Haasis
 
03 - delvalle - Cronotopos Ganericos
03 - delvalle - Cronotopos Ganericos03 - delvalle - Cronotopos Ganericos
03 - delvalle - Cronotopos GanericosDiplomadoPaz
 
Al Badhr Magazine (Al Badriya Maha Vidyalaya - Kahatowita)
Al Badhr Magazine (Al Badriya Maha Vidyalaya - Kahatowita)Al Badhr Magazine (Al Badriya Maha Vidyalaya - Kahatowita)
Al Badhr Magazine (Al Badriya Maha Vidyalaya - Kahatowita)Mohamed Rimzan
 
Digital physician Spain market research (2014) core research spain
Digital physician Spain market research (2014) core research spainDigital physician Spain market research (2014) core research spain
Digital physician Spain market research (2014) core research spainCore Research Spain
 
Dossier presse Hôtels au naturel 2011
Dossier presse Hôtels au naturel 2011Dossier presse Hôtels au naturel 2011
Dossier presse Hôtels au naturel 2011Voyageons Autrement
 
stilos vonka
stilos vonkastilos vonka
stilos vonkajuelly
 
All about us
All about usAll about us
All about usWestaflex
 
Presentacion caso decofruta
Presentacion caso decofrutaPresentacion caso decofruta
Presentacion caso decofrutaDeDe Duarte
 
V Escuela BA Parque de Innovación La Salle 3. Due Diligence
V Escuela BA Parque de Innovación La Salle   3. Due DiligenceV Escuela BA Parque de Innovación La Salle   3. Due Diligence
V Escuela BA Parque de Innovación La Salle 3. Due Diligencejulianvinue
 
Relationer i en digital värld - En kvalitativ studie om PR via sociala medier
Relationer i en digital värld - En kvalitativ studie om PR via sociala medierRelationer i en digital värld - En kvalitativ studie om PR via sociala medier
Relationer i en digital värld - En kvalitativ studie om PR via sociala medierIsabella Sundberg
 
Cultura y turismo...
Cultura y turismo...Cultura y turismo...
Cultura y turismo...vivitauu
 

Destacado (20)

Reuters institute digital news report 2015: Spain
Reuters institute digital news report 2015: SpainReuters institute digital news report 2015: Spain
Reuters institute digital news report 2015: Spain
 
Sirrush Shahadatayn - (English) - Maulana Shah Abdul Aziz Mohaddis Dehlavi
Sirrush Shahadatayn - (English) - Maulana Shah Abdul Aziz Mohaddis Dehlavi Sirrush Shahadatayn - (English) - Maulana Shah Abdul Aziz Mohaddis Dehlavi
Sirrush Shahadatayn - (English) - Maulana Shah Abdul Aziz Mohaddis Dehlavi
 
Guia visual de win unisoft
Guia visual de win unisoftGuia visual de win unisoft
Guia visual de win unisoft
 
Coaching for innovation, networks and clusters
Coaching for innovation, networks and clustersCoaching for innovation, networks and clusters
Coaching for innovation, networks and clusters
 
Cotizaron de equipos
Cotizaron de equiposCotizaron de equipos
Cotizaron de equipos
 
03 - delvalle - Cronotopos Ganericos
03 - delvalle - Cronotopos Ganericos03 - delvalle - Cronotopos Ganericos
03 - delvalle - Cronotopos Ganericos
 
Al Badhr Magazine (Al Badriya Maha Vidyalaya - Kahatowita)
Al Badhr Magazine (Al Badriya Maha Vidyalaya - Kahatowita)Al Badhr Magazine (Al Badriya Maha Vidyalaya - Kahatowita)
Al Badhr Magazine (Al Badriya Maha Vidyalaya - Kahatowita)
 
Digital physician Spain market research (2014) core research spain
Digital physician Spain market research (2014) core research spainDigital physician Spain market research (2014) core research spain
Digital physician Spain market research (2014) core research spain
 
Programa gerencia ii óscar lópez 2013 1
Programa gerencia ii óscar lópez 2013 1Programa gerencia ii óscar lópez 2013 1
Programa gerencia ii óscar lópez 2013 1
 
CIASL
CIASLCIASL
CIASL
 
Dossier presse Hôtels au naturel 2011
Dossier presse Hôtels au naturel 2011Dossier presse Hôtels au naturel 2011
Dossier presse Hôtels au naturel 2011
 
stilos vonka
stilos vonkastilos vonka
stilos vonka
 
Pinocho
PinochoPinocho
Pinocho
 
All about us
All about usAll about us
All about us
 
Presentacion caso decofruta
Presentacion caso decofrutaPresentacion caso decofruta
Presentacion caso decofruta
 
V Escuela BA Parque de Innovación La Salle 3. Due Diligence
V Escuela BA Parque de Innovación La Salle   3. Due DiligenceV Escuela BA Parque de Innovación La Salle   3. Due Diligence
V Escuela BA Parque de Innovación La Salle 3. Due Diligence
 
Square d catalogo completo
Square d catalogo completoSquare d catalogo completo
Square d catalogo completo
 
Relationer i en digital värld - En kvalitativ studie om PR via sociala medier
Relationer i en digital värld - En kvalitativ studie om PR via sociala medierRelationer i en digital värld - En kvalitativ studie om PR via sociala medier
Relationer i en digital värld - En kvalitativ studie om PR via sociala medier
 
Cultura y turismo...
Cultura y turismo...Cultura y turismo...
Cultura y turismo...
 
Ciencia y felicidad
Ciencia y felicidad Ciencia y felicidad
Ciencia y felicidad
 

Similar a programacion iterativa trabajo

Similar a programacion iterativa trabajo (20)

Tecnologia.pdf
Tecnologia.pdfTecnologia.pdf
Tecnologia.pdf
 
Tecnologia.pdf
Tecnologia.pdfTecnologia.pdf
Tecnologia.pdf
 
Tecnologia.pdf
Tecnologia.pdfTecnologia.pdf
Tecnologia.pdf
 
Tecnologia (2)-1.pdf
Tecnologia (2)-1.pdfTecnologia (2)-1.pdf
Tecnologia (2)-1.pdf
 
Tecnologia (2).pdf
Tecnologia (2).pdfTecnologia (2).pdf
Tecnologia (2).pdf
 
Tecnologia
Tecnologia Tecnologia
Tecnologia
 
Tecnologia (2).pdf
Tecnologia (2).pdfTecnologia (2).pdf
Tecnologia (2).pdf
 
Tecnologia (2).pdf
Tecnologia (2).pdfTecnologia (2).pdf
Tecnologia (2).pdf
 
Sentencias de Programacion
Sentencias de ProgramacionSentencias de Programacion
Sentencias de Programacion
 
tarea 7 T.pdf
tarea 7 T.pdftarea 7 T.pdf
tarea 7 T.pdf
 
TECNOLOGIA .pdf
TECNOLOGIA  .pdfTECNOLOGIA  .pdf
TECNOLOGIA .pdf
 
Certificación java 6 cap 5
Certificación java 6 cap 5Certificación java 6 cap 5
Certificación java 6 cap 5
 
Taller de estructuras básicas
Taller de estructuras básicas Taller de estructuras básicas
Taller de estructuras básicas
 
Manual
ManualManual
Manual
 
Benemérita universidad autónoma de puebla
Benemérita universidad autónoma de pueblaBenemérita universidad autónoma de puebla
Benemérita universidad autónoma de puebla
 
Sophia leonzio tarea4
Sophia leonzio tarea4Sophia leonzio tarea4
Sophia leonzio tarea4
 
While y do while
While y do whileWhile y do while
While y do while
 
Introduccion a la programación Parte II
Introduccion a la programación Parte IIIntroduccion a la programación Parte II
Introduccion a la programación Parte II
 
Trabajo de tecnología.pdf
Trabajo de tecnología.pdfTrabajo de tecnología.pdf
Trabajo de tecnología.pdf
 
Trabajo de tecnología.pdf
Trabajo de tecnología.pdfTrabajo de tecnología.pdf
Trabajo de tecnología.pdf
 

Más de Renny Centeno (14)

Software especializado
Software especializadoSoftware especializado
Software especializado
 
Guias
GuiasGuias
Guias
 
Directorios
DirectoriosDirectorios
Directorios
 
Meta buscadores
Meta buscadoresMeta buscadores
Meta buscadores
 
Buscadores
BuscadoresBuscadores
Buscadores
 
type object
type objecttype object
type object
 
trabajo pharo
trabajo pharotrabajo pharo
trabajo pharo
 
trabajo anotaciones
trabajo anotacionestrabajo anotaciones
trabajo anotaciones
 
Trabajo poo
Trabajo poo Trabajo poo
Trabajo poo
 
programacion iterativa
programacion iterativaprogramacion iterativa
programacion iterativa
 
type object
type objecttype object
type object
 
Anotaciones
AnotacionesAnotaciones
Anotaciones
 
Pharo presentacion
Pharo presentacionPharo presentacion
Pharo presentacion
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 

Último

Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...SuannNeyraChongShing
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamientoRobertoAlejandroCast6
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 

Último (20)

Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 

programacion iterativa trabajo

  • 1. UNIVERSIDAD DE ORIENTE NÚCLEO DE MONAGAS ESCUELA DE INGENIERIA Y CIENCIAS APLICADAS CURSO ESPECIAL DE GRADO Programacion Iterativa Profesora: Ing. Jhonatan Vasquez Maturín, Abril del 2015 Bachilleres: Centeno G. Renny J. C.I. 21.350.253 Fernández G. Ana B. C.I. 21.329.313
  • 2. Contenido 1. Introducción...................................................................................................................3 2. Marco teórico ....................................................................................................................4 2.1 Programación..............................................................................................................4 2.2 Iteración.......................................................................................................................4 2.3Iteración en la programación......................................................................................4 2.4 Iteración declarativa...................................................................................................4 2.4.1 Bucle While ...........................................................................................................5 2.4.2 Bucle For ...............................................................................................................5 2.4.3 Bucle do while .......................................................................................................5 2.4.4 Sentencias Break, Continue y Return.................................................................6 2.5 Iteración con funciones recursivas ............................................................................7 2.6 Diferencias entre métodos recursivos y métodos iterativos ....................................8 3. Discusión............................................................................................................................9 4.Conclusion........................................................................................................................11 5. Bibliografía......................................................................................................................12
  • 3. 1. Introducción La programación es un mundo amplio con muchas posibilidades, no todo es pulir una brillante idea y sentarse al frente de un editor de texto o un entorno de desarrollo de confianza, para programar es necesario conocer en un amplio aspecto las diferentes técnicas y herramienta que nos permitirán resolver problemáticas que se nos puedan ir presentando mientras desarrollemos esa idea. Al igual que en la vida que se nos pueden presentar ciertos escenarios y la manera de solucionarlos cambia dependiendo de cada uno, de igual forma sucede en la programación, existe una técnica o practica común que se utiliza para atacar un tipo de problema en específico, una de esas técnicas que nos sacaran las castañas del fuego en más de una ocasión es la iteración, la iteración no es una palabra desconocida de seguro más de una vez la hemos escuchado, y es que no es más que repetir un proceso un número determinado de veces hasta cumplir con una condición. Conociendo bien que significa iterar no es difícil trasladar ese conocimiento hacia nuestros proyectos que desarrollaremos en un lenguaje de programación determinado, es fácil imaginarse una situación donde se deba repetir una acción tantas veces sea necesario hasta obtener el resultado que se espera, por ejemplo si se desea que el usuario ingrese un código especifico y se diseñe el código de tal forma que hasta que no ingrese ese código no se pueda seguir avanzando en la aplicación, como ese ejemplo existen muchísimos más donde resulta muy útil y casi que indispensable utilizar las iteraciones. Existen 2 formas de ejecutar iteraciones en una aplicación, la primera es mediante bucles donde a través de variables y estructuras comunes de control se especifica el código para que se cumplan los ciclos necesarios antes de salir de ese código, la manera de realizar esos bucles varia de lenguaje en lenguaje pero la esencia es la misma, ejemplos de estos bucles son el while,for, do while entre otros. Otra forma de aplicar las iteraciones es mediante funciones recursivas, estas tienen la característica especial que se llaman así mismas para realizar su labor iterativa y también cuenta con el apoyo de las estructuras de control, ambas técnicas son importantes y cuentan con sus pro y contras, todo buen programador debe conocerlas bien si quiere estar bien calificado a la hora de programar.
  • 4. 2. Marco teórico 2.1 Programación La programación informática, acortada como programación, es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones. Del proceso de programación surge lo que comúnmente se conoce como software (conjunto de programas), aunque estrictamente este último abarca mucho más que sólo la programación. 2.2 Iteración Iteración significa el acto de repetir un proceso con el objetivo de alcanzar una meta deseada, objetivo o resultado. Cada repetición del proceso también se le denomina una "iteración", y los resultados de una iteración se utilizan como punto de partida para la siguiente iteración. 2.3Iteración en la programación En programación, Iteración es la repetición de un proceso dentro de un programa de computadora. Puede usarse tanto como un término genérico (como sinónimo de repetición) así como para describir una forma específica de repetición con un estado mutable. Cuando se usa en el primer sentido, la recursividad es un ejemplo de iteración, pero que usa su propia notación (notación recursiva), que no es el caso de iteración. Sin embargo, cuando se usa en el segundo sentido (caso más restringido), la iteración describe el estilo de programación usado en lenguajes de programación imperativa. Esto está en contraposición de la recursividad, la cual tiene un enfoque más declarativo. 2.4 Iteración declarativa Los bucles se utilizan para ejecutar un conjunto de instrucciones varias veces basándose siempre en una condición que decidirá si se sigue repitiendo o no. Veamos los tipos que hay, a modo de ejemplo nos basaremos en el lenguaje java.
  • 5. 2.4.1 Bucle While while (expresion) {sentencias} Las instrucciones dentro de las llaves se ejecutan mientras la expresión sea verdadera. i=5; while ( i > 0 ) {i --;} // las llaves aquí se podían haber omitido, puesto // que solo hay una sentencia. System.out.println("Ahora i vale 0"); 2.4.2 Bucle For Es un bucle más "fijo", permite ejecutar el conjunto de sentencias un número determinado de veces fijado al principio del bucle y funciona por tanto como un contador. Su expresión general seria como la que sigue: for (inicialización, expresionBooleana, incremento) {conjuntoDeSentencias;} for (int i= 0; i <10; i++) { System.out.println("el valor de i es: " + i); } Este ejemplo nos mostraría por la pantalla diez líneas diciéndonos el valor creciente de 'i' de cero a nueve. 2.4.3 Bucle do while Es igual al bucle while anteriormente visto, solo que ahora se evalúa la expresión al final del bucle, por lo que ese conjunto de sentencias se ejecuta al menos una vez: i=5; do {i --;} // las llaves aquí se pueden omitir puesto while ( i > 0 ) // que solo hay una sentencia. Este ejemplo similar al anterior para el bucle while se diferencia en que ejecuta una vez más las sentencias en su cuerpo puesto que comprueba la condición posteriormente.
  • 6. 2.4.4 Sentencias Break, Continue y Return Antes hemos hablado de la sentencia Break con las bifurcaciones switch. Pues bien, esta sentencia tiene un valor más amplio. La sentencia break nos permite salirnos del bloque de sentencias (encerrado entre llaves) o el bucle que estamos ejecutando, sin ejecutar las sentencias que resten para el final o las restantes iteraciones del bucle. Por ejemplo: i=5; do{ i --; if (i == 3) break; } while ( i > 0 ) // En este ejemplo cuando i tenga el valor 3 // se abandonará el bucle. La sentencia Continue solo es válida para bucles, sirve para no ejecutar las sentencias que restan para la finalización de una iteración de ese bucle, continuando después con las siguientes iteraciones del bucle. Por ejemplo: i=5; do{ if (i == 3) continue; i --; }while ( i > 0 ) // En este ejemplo cuando i tenga el valor 3 // se abandonará la iteración y por tanto el // bucle no tendrá fin puesto que no se // ejecutaría la sentencia de decremento. Tanto la sentencia continue como break se pueden utilizar con etiquetas para poder discriminar los bucles que quieren afectar en caso de que se encuentren en un bucle anidado. Por ejemplo: Bucle1: for (int i=0; i<10; i++){ bucle2: for (int j=0; i<10; j++){ if (j==5) {break bucle2;} }
  • 7. } // cuando j llega a 5 el bucle2 deja de // ejecutarse hasta la siguiente iteracion // del bloque1 Por último vemos la sentencia return. Esta sentencia nos permite finalizar también un conjunto de sentencias, con la peculiaridad esta vez de que también finaliza el método o función que en el que se encuentre. En el caso de que queramos devolver un valor desde esa función o método lo debemos poner a continuación de return. Por ejemplo: void funcionEjemplo(){ int i=0; while (i < 100){ //esta absurda función nos devuelve i++; //al llamarla el valor 100 como has } //podido comprobar return i; } 2.5 Iteración con funciones recursivas Como definición general, podemos decir que una función recursiva es aquella que se llama a sí misma para resolverse. Dicho de otra manera, una función recursiva se resuelve con una llamada a sí misma, cambiando el valor de un parámetro en la llamada a la función. A través de las sucesivas llamadas recursivas a la función se van obteniendo valores que, computados, sirven para obtener el valor de la función llamada originalmente. El proceso de llamadas recursivas siempre tiene que acabar en una llamada a la función que se resuelve de manera directa, sin necesidad de invocar de nuevo la función. Esto será siempre necesario, para que llegue un momento que se corten las llamadas reiterativas a la función y no se entre en un bucle infinito de invocaciones. Quizás en la teoría cueste más ver lo que es una función recursiva que por la práctica. Un ejemplo típico de recursividad sería la función factorial. El factorial es una función matemática que se resuelve multiplicando ese número por todos los números naturales que hay entre él y 1. Por ejemplo, factorial de 4 es igual a 4 * 3 * 2 * 1. Si nos fijamos, para el ejemplo de factorial de 4 (factorial se expresa matemáticamente con un signo de admiración hacia abajo, como 4!), se puede resolver como 4 * 3! (4 * factorial de 3). Es decir, podemos calcular el factorial de un número multiplicando ese número por factorial de ese número menos 1. n! = n * (n-1)! En el caso de la función factorial, tenemos el caso básico que factorial de 1 es igual a 1. Así que lo podremos utilizar como punto de ruptura de las llamadas recursivas.
  • 8. Así pues, vamos a realizar la codificación de la función recursiva factorial. Primero veamos un pseudocódigo: funcion factorial(n) si n=1 entonces factorial = 1 sino factorial = n * factorial(n-1) fin función Ahora veamos cómo se implementaría esta función con el lenguaje de programación Javascript: function factorial(n){ if(n==1) return 1 else return n * factorial(n-1) } Como se puede ver, la recursividad no representa ninguna dificultad y de hecho es una herramienta muy útil para programación de algoritmos. Hay muchos algoritmos que sólo se resuelven con recursividad, o al menos cuya resolución más directa y elegante está basada en realizar funciones recursivas, que se llamen a sí mismas para obtener el resultado final. Por ejemplo el recorrido de diversas estructuras de datos, como las de tipo árbol, siempre se acostumbran a realizar de manera recursiva, para poder estar seguros de que pasamos por todas las ramas del árbol. 2.6 Diferencias entre métodos recursivos y métodos iterativos Recursivos Iterativos Se llaman así mismos Utilizan bucles Ocupan memoria considerable Requieren poco espacio de memoria Moderadamente complejos Fáciles de construir Resuelve los problemas de manera elegante Son poco elegantes pero eficientes
  • 9. 3. Discusión Como todos sabemos la programación nos va a permitir realizar cosas maravillosas mediante líneas de código que le transmitimos a una máquina, con diversas técnicas logramos que estas líneas de códigos contengan ciertas características que satisfagan cualquier problemática que se deba tratar en el programa en cuestión, una de las técnicas que se deben conocer son los métodos iterativos, en sus dos facetas, funciones recursivas y bucles iterativos, ambos nos permitirán realizar tareas donde se requiere iterar un proceso una cantidad de veces necesaria para satisfacer una condición. Iterar significa repetir un proceso hasta obtener el resultado esperado, estas repeticiones se les conoce como iteraciones, mientras más iteraciones se tenga por supuesto más largo o complejo será el código iterativo, esto en el caso de usar un método iterativo de manera de bucle, donde partiendo de ciertas condiciones se dispone a realizar las diferentes iteraciones hasta llegar a la condición de parada, existen diversos bucles para afrontar diferentes situaciones que requieran del uso de iteraciones, de igual manera dependiendo del lenguaje varían la manera en que se expresan estos bucles, para efectos de ejemplificarlos trataremos los que existen en el lenguaje java. Analicemos la forma en que trabajan los bucles en el lenguaje java, observemos el siguiente código: //Clase test del while curso aprenderaprogramar.com public class testWhile { public static void main (String [ ] args) { int i = 0; while (true) { //Condición trivial: siempre cierta i++; System.out.println ("Valor de i: " + i); if (i==9) { break;} } } //Cierre del main } //Cierre de la clase Si podemos darnos cuenta lo que se ha hecho es crear una clase llamada testwhile para mostrar el funcionamiento del bucle while, lo peculiar del ejemplo es que el bucle while recibe un parámetro true lo que parece en principio que arrojara un ciclo infinito, pero ya que se insertó un sumador(i++) este va acumular la cantidad de veces que el bucle acepte el parámetro true para posteriormente mediante una estructura de control como lo es el comando if salir de la corrida cuando se llegue a la iteración 9, a pesar de ser un ejemplo sencillo podemos captar la utilidad e importancia del uso de los bucles, en este caso solo se aceptaba un valor cierto sin dar énfasis en su utilidad, pero para solucionar problemáticas donde se requiere evaluar un número de veces el valor que entra para saber si es aceptado o no este sencillo bucle sería de gran utilidad, si necesitáramos evaluar un arreglo de números
  • 10. de 100 dígitos para saber cuántos de esos dígitos son pares por ejemplo, esto sería inconcebible de hacer sin el uso adecuado de un bucle. Por otro lado están las funciones recursivas, esta no es más una función que definimos detalladamente para que al llamarse a sí misma soluciones problemas que necesariamente requieren el uso de bucles, pero esta vez se solventarían esos problemas de manera más elegante y precisa, aunque como contra se puede decir que estas funciones ocupa más espacio en memoria y son algo complejas de definir. Para entender mejor este concepto veamos un ejemplo que permite sumar 2 números enteros en java: /* * Método recursivo que calcula la suma de dos números enteros */ public static int suma(int a, int b) { if (b == 0) { return a; } else if (a == 0) { return b; } else { return 1 + suma(a, b - 1); } } En este ejemplo se define de manera detallada nuestra función recursiva, primero se establece que la función recibirá 2 números enteros mediante las variables correspondientes, con estructuras de control se establece que si alguno de estos números llega a ser 0 simplemente el valor que se arroja es el otro número, de los 2 números ser diferentes de 0 se arroja entonces el resultado haciendo un llamado al mismo método, es decir, una llamada recursiva. Se pudo observar que a pesar de que las funciones recursivas poseen características únicas que las hacen más elegantes y más estructuradas si se puede decir, no escapan del uso de técnicas o patrones propios de los métodos iterativos con bucles, el uso de una técnica u otra dependerá exclusivamente de la habilidad del programador.
  • 12. 5. Bibliografía Wikipedia, Iteración, 2015 , http://es.wikipedia.org/wiki/Iteraci%C3%B3n [consultado: martes, 21 de abril del 2015, hora: 15:22] Wikipedia, Programacion, 2015, http://es.wikipedia.org/wiki/Programaci%C3%B3n [consultado: martes, 21 de abril del 2015, hora: 15:52] GONZALEZ, Victorino, Estructuras de control tipo bucle en Java,2004, http://www.desarrolloweb.com/articulos/1760.php [consultado: martes, 21 de abril del 2015, hora: 16:37] ALVAREZ, Miguel, Funciones recursivas. Recursividad ,2008, http://www.desarrolloweb.com/articulos/funciones-recursivas-recursividad.html [consultado: martes, 21 de abril del 2015, hora: 18:17] HERNANDEZ, Enrique, Programación Java,2013, http://puntocomnoesunlenguaje.blogspot.com/2013/01/ejemplo-recursividad-sumar-dos- numeros.html [consultado: martes, 21 de abril del 2015, hora: 18:27]