SlideShare una empresa de Scribd logo
Estructuras de control: Java - 19 - © Fernando Berzal
EstructurasEstructurasEstructurasEstructuras de controlde controlde controlde control
repetitivasrepetitivasrepetitivasrepetitivas/iterativas/iterativas/iterativas/iterativas
A menudo es necesario ejecutar
una instrucción o un bloque de instrucciones más de una vez.
Ejemplo
Implementar un programa que calcule
la suma de N números leídos desde teclado.
Podríamos escribir un programa en el que apareciese repetido el código
que deseamos que se ejecute varias veces, pero…
ß Nuestro programa podría ser demasiado largo.
ß Gran parte del código del programa estaría duplicado, lo que
dificultaría su mantenimiento en caso de que tuviésemos que hacer
cualquier cambio, por trivial que fuese éste.
ß Una vez escrito el programa para un número determinado de
repeticiones (p.ej. sumar matrices 3x3), el mismo programa no
podríamos reutilizarlo si necesitásemos realizar un número
distinto de operaciones (p.ej. sumar matrices 4x4).
Las estructuras de control repetitivas o iterativas, también conocidas
como “bucles”, nos permiten resolver de forma elegante este tipo de
problemas. Algunas podemos usarlas cuando conocemos el número de
veces que deben repetirse las operaciones. Otras nos permiten repetir un
conjunto de operaciones mientras se cumpla una condición.
Iteración: Cada repetición de las instrucciones de un bucle.
Estructuras de control: Java - 20 - © Fernando Berzal
El bucle while
Permite repetir la ejecución de un conjunto de sentencias
mientras se cumpla una condición:
while (condición)
sentencia;
while (condición) {
bloque
}
El bucle while terminará su ejecución
cuando deje de verificarse la condición que controla su ejecución.
Si, inicialmente, no se cumple la condición,
el cuerpo del bucle no llegará a ejecutarse.
MUY IMPORTANTE
En el cuerpo del bucle debe existir algo que haga variar el valor
asociado a la condición que gobierna la ejecución del bucle.
Estructuras de control: Java - 21 - © Fernando Berzal
Ejemplo
Tabla de multiplicar de un número
public class While1
{
public static void main( String args[] )
{
int n; // Número
int i; // Contador
n = Integer.parseInt( args[0] );
i = 0;
while (i<=10) {
System.out.println (n+" x "+i+" = "+(n*i));
i++;
}
}
}
Ejemplo
Divisores de un número
public class While2
{
public static void main( String args[] )
{
int n;
int divisor;
n = Integer.parseInt( args[0] );
System.out.println("Los divisores son:");
divisor = n;
while (divisor>0) {
if ((n%divisor) == 0)
System.out.println(divisor);
divisor--;
}
}
}
Estructuras de control: Java - 22 - © Fernando Berzal
En los ejemplos anteriores,
se conoce de antemano el número de iteraciones
que han de realizarse (cuántas veces se debe ejecutar el bucle):
La expresión del while se convierte en una simple
comprobación del valor de una variable contador.
El contador es una variable que se incrementa o decrementa en
cada iteración y nos permite saber la iteración en la que nos
encontramos en cada momento.
En el cuerpo del bucle, siempre se incluye una sentencia
contador++;
o bien
contador--;
para que, eventualmente,
la condición del while deje de cumplirse.
En otras ocasiones, puede que no conozcamos de antemano cuántas
iteraciones se han de realizar.
La condición del while puede que tenga un aspecto diferente
pero, en el cuerpo del bucle, deberá seguir existiendo algo que
modifique el resultado de evaluar la condición.
Estructuras de control: Java - 23 - © Fernando Berzal
Ejemplo
Sumar una serie de números
hasta que el usuario introduzca un cero
import javax.swing.JOptionPane;
public class While3
{
public static void main( String args[] )
{
float valor;
float suma;
suma = 0;
valor = leerValor();
while (valor!=0) {
suma += valor;
valor = leerValor();
}
mostrarValor("Suma de los datos", suma);
System.exit(0);
}
private static float leerValor ()
{
String entrada;
entrada = JOptionPane.showInputDialog
( "Introduzca un dato:" );
return Float.parseFloat(entrada);
}
private static void mostrarValor
(String mensaje, float valor)
{
JOptionPane.showMessageDialog
( null, valor, mensaje,
JOptionPane.INFORMATION_MESSAGE );
}
}
El valor introducido determina en cada iteración
si se termina o no la ejecución del bucle.
Estructuras de control: Java - 24 - © Fernando Berzal
El bucle for
Se suele emplear en sustitución del bucle while
cuando se conoce el número de iteraciones que hay que realizar.
Sintaxis
for (expr1; expr2; expr3) {
bloque;
}
Estructuras de control: Java - 25 - © Fernando Berzal
Equivalencia entre for y while
Un fragmento de código
como el que aparecía antes con un bucle while:
i = 0;
while (i<=10) {
System.out.println (n+" x "+i+" = "+(n*i));
i++;
}
puede abreviarse si utilizamos un bucle for:
for (i=0; i<=10; i++) {
System.out.println (n+" x "+i+" = "+(n*i));
}
Como este tipo de estructuras de control es muy común,
el lenguaje nos ofrece una forma más compacta
de representar un bucle cuando sabemos
cuántas veces ha de ejecutarse el cuerpo del bucle.
En general,
for (expr1; expr2; expr3) {
bloque;
}
equivale a
expr1;
while (expr2) {
bloque;
expr3;
}
Estructuras de control: Java - 26 - © Fernando Berzal
Ejemplo
Cálculo del factorial de un número
Bucle for
public class FactorialFor
{
public static void main( String args[] )
{
long i,n,factorial;
n = Integer.parseInt( args[0] );
factorial = 1;
for (i=1; i<=n; i++) {
factorial *= i;
}
System.out.println ( "f("+n+") = " + factorial);
}
}
Bucle while
public class FactorialWhile
{
public static void main( String args[] )
{
long i,n,factorial;
n = Integer.parseInt( args[0] );
factorial = 1;
i = 1;
while (i<=n) {
factorial *= i;
i++;
}
System.out.println ( "f("+n+") = " + factorial);
}
}
Estructuras de control: Java - 27 - © Fernando Berzal
for (expr1; expr2; expr3) {
bloque;
}
En un bucle for
La primera expresión, expr1, suele contener inicializaciones de
variables separadas por comas. En particular, siempre aparecerá la
inicialización de la variable que hace de contador.
o Las instrucciones que se encuentran en esta parte del for sólo
se ejecutarán una vez antes de la primera ejecución del cuerpo
del bucle (bloque).
La segunda expresión, expr2, es la que contiene una expresión
booleana (la que aparecería en la condición del bucle while
equivalente para controlar la ejecución del cuerpo del bucle).
La tercera expresión, expr3, contiene las instrucciones, separadas
por comas, que se deben ejecutar al finalizar cada iteración del bucle
(p.ej. el incremento/decremento de la variable contador).
El bloque de instrucciones bloque es el ámbito del bucle (el bloque
de instrucciones que se ejecuta en cada iteración).
Estructuras de control: Java - 28 - © Fernando Berzal
Cabecera del bucle
Número de
iteraciones
for (i=0; i<N; i++) N
for (i=0; i<=N; i++) N+1
for (i=k; i<N; i++) N-k
for (i=N; i>0; i--) N
for (i=N; i>=0; i--) N+1
for (i=N; i>k; i--) N-k
for (i=0; i<N; i+=k) N/k
for (i=j; i<N; i+=k) (N-j)/k
for (i=1; i<N; i*=2) log2 N
for (i=0; i<N; i*=2) ∞
for (i=N; i>0; i/=2) log2 N + 1
suponiendo que N y k sean enteros positivos
Bucles infinitos
Un bucle infinito es un bucle que se repite “infinitas” veces:
for (;;) /*bucle infinito*/
while (true) /*bucle infinito*/
Si nunca deja de cumplirse la condición del bucle,
nuestro programa se quedará indefinidamente
ejecutando el cuerpo del bucle, sin llegar a salir de él.
Estructuras de control: Java - 29 - © Fernando Berzal
El bucle do while
Tipo de bucle, similar al while, que realiza la comprobación de la
condición después de ejecutar el cuerpo del bucle.
Sintaxis
do
sentencia;
while (condición);
do {
bloque
} while (condición);
• El bloque de instrucciones se ejecuta, al menos, una vez.
• El bucle do while resulta especialmente indicado para validar datos de
entrada (comprobar que los valores de entrada obtenidos están dentro
del rango de valores que el programa espera).
En todos nuestros programas debemos asegurarnos
de que se obtienen datos de entrada válidos
antes de realizar cualquier tipo de operación con ellos.
Estructuras de control: Java - 30 - © Fernando Berzal
Ejemplo
Cálculo del factorial
comprobando el valor del dato de entrada
import javax.swing.JOptionPane;
public class FactorialDoWhile
{
public static void main( String args[] )
{
long n;
do {
n = leerEntero(0,20);
} while ((n<0) || (n>20));
mostrarMensaje ( "f("+n+") = "+ factorial(n));
System.exit(0);
}
private static long factorial (long n)
{
long i;
long factorial = 1;
for (i=1; i<=n; i++) {
factorial *= i;
}
return factorial;
}
private static int leerEntero (int min, int max)
{
String entrada = JOptionPane.showInputDialog
( "Introduzca un valor entero”
+ “ (entre "+min+" y "+max+"):” );
return Integer.parseInt(entrada);
}
private static void mostrarMensaje (String mensaje)
{
JOptionPane.showMessageDialog(null,mensaje);
}
}
Estructuras de control: Java - 31 - © Fernando Berzal
Ejemplo
Cálculo de la raíz cuadrada de un número
import javax.swing.JOptionPane;
public class Sqrt
{
public static void main( String args[] )
{
double n;
do {
n = leerReal ("Introduzca un número positivo");
} while (n<0);
mostrarMensaje( "La raíz cuadrada de "+n
+ " es aproximadamente "+raiz(n));
System.exit(0);
}
private static double raiz (double n)
{
double r; // Raíz cuadrada del número
double prev; // Aproximación previa de la raíz
r = n/2;
do {
prev = r;
r = (r+n/r)/2;
} while (Math.abs(r-prev) > 1e-6);
return r;
}
private static double leerReal (String mensaje)
{
String entrada;
entrada = JOptionPane.showInputDialog(mensaje);
return Double.parseDouble(entrada);
}
private static void mostrarMensaje (String mensaje)
{
JOptionPane.showMessageDialog(null,mensaje);
}
}
Estructuras de control: Java - 32 - © Fernando Berzal
Bucles anidados
Los bucles también se pueden anidar:
for (i=0; i<N;i++) {
for (j=0; j<N; j++) {
printf(“(%d,%d) ”,i,j);
}
}
genera como resultado:
(0,0) (0,1) (0,2) … (0,N)
(1,0) (1,1) (1,2) … (1,N)
…
(N,0) (N,1) (N,2) … (N,N)
Ejemplo
int n,i,k;
…
n = 0; // Paso 1
for (i=1; i<=2; i++) { // Paso 2
for (k=5; k>=1; k-=2) { // Paso 3
n = n + i + k; // Paso 4
} // Paso 5
} // Paso 6
… // Paso 7
Paso
N
i
k
1
0
?
?
2
1
3
5
6
4 5
3
3
10
4 5
1
3
12
4 5
−1
3 6
2
2 3 4 5 3 4 5 3 4 5 3 6 2 7
3
−1
2724
13
19
5

Más contenido relacionado

La actualidad más candente

Java básico
Java  básicoJava  básico
Java básico
María Luisa Velasco
 
8 b refactoring
8 b refactoring8 b refactoring
8 b refactoring
Félix Marín
 
Semana 7 Proyecto Misión TIC 2022
Semana 7 Proyecto Misión TIC 2022Semana 7 Proyecto Misión TIC 2022
Semana 7 Proyecto Misión TIC 2022
Richard Eliseo Mendoza Gafaro
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
Karina Arguedas Ruelas
 
Fpr0407 control
Fpr0407 controlFpr0407 control
Fpr0407 control
labebelo
 
Clase 02 gestion de puertos - directivas
Clase 02   gestion de puertos - directivasClase 02   gestion de puertos - directivas
Clase 02 gestion de puertos - directivas
almidon_pcb
 
Estructura de control repetitivo diapositivas
Estructura de control repetitivo diapositivasEstructura de control repetitivo diapositivas
Estructura de control repetitivo diapositivas
Cesar Augusto Rodriguez Urrieta
 
Semana 3 Fundamentos de Python(Funciones y Métodos)
Semana 3   Fundamentos de Python(Funciones y Métodos)Semana 3   Fundamentos de Python(Funciones y Métodos)
Semana 3 Fundamentos de Python(Funciones y Métodos)
Richard Eliseo Mendoza Gafaro
 
P1
P1P1
Tema 3 sentencias de control de java por gio
Tema 3   sentencias de control de java por gioTema 3   sentencias de control de java por gio
Tema 3 sentencias de control de java por gio
Robert Wolf
 
diapositivas de ESTRUCTURAS DE CONTROL REPETITIVO
diapositivas de ESTRUCTURAS DE CONTROL REPETITIVOdiapositivas de ESTRUCTURAS DE CONTROL REPETITIVO
diapositivas de ESTRUCTURAS DE CONTROL REPETITIVO
yalimar diaz
 
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Richard Eliseo Mendoza Gafaro
 
Semana 1 Estructuras de Datos en Java
Semana 1   Estructuras de Datos en JavaSemana 1   Estructuras de Datos en Java
Semana 1 Estructuras de Datos en Java
Richard Eliseo Mendoza Gafaro
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en C
AnesGy SD
 
Programación básica
Programación básicaProgramación básica
Programación básica
Carlos Van de Velde
 
Estructuras de Control C++
Estructuras de Control C++Estructuras de Control C++
Estructuras de Control C++
Jorge Leonardo
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
LenHugo
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantes
Abrirllave
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
die_dex
 
Unidad 4 est. dat. recursividad
Unidad 4  est. dat. recursividadUnidad 4  est. dat. recursividad
Unidad 4 est. dat. recursividad
rehoscript
 

La actualidad más candente (20)

Java básico
Java  básicoJava  básico
Java básico
 
8 b refactoring
8 b refactoring8 b refactoring
8 b refactoring
 
Semana 7 Proyecto Misión TIC 2022
Semana 7 Proyecto Misión TIC 2022Semana 7 Proyecto Misión TIC 2022
Semana 7 Proyecto Misión TIC 2022
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
 
Fpr0407 control
Fpr0407 controlFpr0407 control
Fpr0407 control
 
Clase 02 gestion de puertos - directivas
Clase 02   gestion de puertos - directivasClase 02   gestion de puertos - directivas
Clase 02 gestion de puertos - directivas
 
Estructura de control repetitivo diapositivas
Estructura de control repetitivo diapositivasEstructura de control repetitivo diapositivas
Estructura de control repetitivo diapositivas
 
Semana 3 Fundamentos de Python(Funciones y Métodos)
Semana 3   Fundamentos de Python(Funciones y Métodos)Semana 3   Fundamentos de Python(Funciones y Métodos)
Semana 3 Fundamentos de Python(Funciones y Métodos)
 
P1
P1P1
P1
 
Tema 3 sentencias de control de java por gio
Tema 3   sentencias de control de java por gioTema 3   sentencias de control de java por gio
Tema 3 sentencias de control de java por gio
 
diapositivas de ESTRUCTURAS DE CONTROL REPETITIVO
diapositivas de ESTRUCTURAS DE CONTROL REPETITIVOdiapositivas de ESTRUCTURAS DE CONTROL REPETITIVO
diapositivas de ESTRUCTURAS DE CONTROL REPETITIVO
 
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
 
Semana 1 Estructuras de Datos en Java
Semana 1   Estructuras de Datos en JavaSemana 1   Estructuras de Datos en Java
Semana 1 Estructuras de Datos en Java
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en C
 
Programación básica
Programación básicaProgramación básica
Programación básica
 
Estructuras de Control C++
Estructuras de Control C++Estructuras de Control C++
Estructuras de Control C++
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantes
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Unidad 4 est. dat. recursividad
Unidad 4  est. dat. recursividadUnidad 4  est. dat. recursividad
Unidad 4 est. dat. recursividad
 

Similar a 5 c iterative

Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
Fernando Solis
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
quesada_diego
 
41 Php. Bucles For
41 Php. Bucles For41 Php. Bucles For
41 Php. Bucles For
José M. Padilla
 
Fase 5 ciclo for
Fase 5 ciclo forFase 5 ciclo for
Fase 5 ciclo for
luisoctis
 
Estructuras de Control - Ivan Walkes Mc.
Estructuras de Control - Ivan Walkes Mc.Estructuras de Control - Ivan Walkes Mc.
Estructuras de Control - Ivan Walkes Mc.
Ivan A. Walkes Mc.
 
Estructuras de Control
Estructuras de ControlEstructuras de Control
Estructuras de Control
Ivan A. Walkes Mc.
 
JAVA ciclos (FOR Y WHILE)
JAVA ciclos  (FOR Y WHILE)JAVA ciclos  (FOR Y WHILE)
JAVA ciclos (FOR Y WHILE)
Universidad Santo Tomás
 
Tutorial lenguaje c
Tutorial lenguaje cTutorial lenguaje c
Tutorial lenguaje c
tbjs
 
Tutorial lenguaje c
Tutorial lenguaje cTutorial lenguaje c
Tutorial lenguaje c
tbjs
 
Estructuras de control en la POO
Estructuras de control en la POOEstructuras de control en la POO
Estructuras de control en la POO
Amado Arcaya
 
Estructuras repetitivas
Estructuras repetitivasEstructuras repetitivas
Estructuras repetitivas
yance1
 
Unidad III Estructuras basicas repetitivas.pptx
Unidad III Estructuras basicas repetitivas.pptxUnidad III Estructuras basicas repetitivas.pptx
Unidad III Estructuras basicas repetitivas.pptx
JoseMuoz338168
 
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓNTEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
Anyeni Garay
 
Algoritmo utilizando pseudolenguaje
Algoritmo utilizando pseudolenguajeAlgoritmo utilizando pseudolenguaje
Algoritmo utilizando pseudolenguaje
marcelo montaña rangel
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow Control
Jose Selman
 
Mod2ud2 1
Mod2ud2 1Mod2ud2 1
Mod2ud2 1
Juan Garcia
 
Iv unidad estructuras de control
Iv unidad estructuras de controlIv unidad estructuras de control
Iv unidad estructuras de control
mariaisabelg
 
Iv unidad estructuras de control
Iv unidad estructuras de controlIv unidad estructuras de control
Iv unidad estructuras de control
mariaisabelg
 
Por que java
Por que javaPor que java
Por que java
reivax
 
Estructura repetitiva
Estructura repetitivaEstructura repetitiva
Estructura repetitiva
Alcira Ordóñez Rey
 

Similar a 5 c iterative (20)

Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
41 Php. Bucles For
41 Php. Bucles For41 Php. Bucles For
41 Php. Bucles For
 
Fase 5 ciclo for
Fase 5 ciclo forFase 5 ciclo for
Fase 5 ciclo for
 
Estructuras de Control - Ivan Walkes Mc.
Estructuras de Control - Ivan Walkes Mc.Estructuras de Control - Ivan Walkes Mc.
Estructuras de Control - Ivan Walkes Mc.
 
Estructuras de Control
Estructuras de ControlEstructuras de Control
Estructuras de Control
 
JAVA ciclos (FOR Y WHILE)
JAVA ciclos  (FOR Y WHILE)JAVA ciclos  (FOR Y WHILE)
JAVA ciclos (FOR Y WHILE)
 
Tutorial lenguaje c
Tutorial lenguaje cTutorial lenguaje c
Tutorial lenguaje c
 
Tutorial lenguaje c
Tutorial lenguaje cTutorial lenguaje c
Tutorial lenguaje c
 
Estructuras de control en la POO
Estructuras de control en la POOEstructuras de control en la POO
Estructuras de control en la POO
 
Estructuras repetitivas
Estructuras repetitivasEstructuras repetitivas
Estructuras repetitivas
 
Unidad III Estructuras basicas repetitivas.pptx
Unidad III Estructuras basicas repetitivas.pptxUnidad III Estructuras basicas repetitivas.pptx
Unidad III Estructuras basicas repetitivas.pptx
 
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓNTEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
TEMA Nº 8: CONTROL DE EJECUCIÓN Y MANTENIMIENTO DE SESIÓN
 
Algoritmo utilizando pseudolenguaje
Algoritmo utilizando pseudolenguajeAlgoritmo utilizando pseudolenguaje
Algoritmo utilizando pseudolenguaje
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow Control
 
Mod2ud2 1
Mod2ud2 1Mod2ud2 1
Mod2ud2 1
 
Iv unidad estructuras de control
Iv unidad estructuras de controlIv unidad estructuras de control
Iv unidad estructuras de control
 
Iv unidad estructuras de control
Iv unidad estructuras de controlIv unidad estructuras de control
Iv unidad estructuras de control
 
Por que java
Por que javaPor que java
Por que java
 
Estructura repetitiva
Estructura repetitivaEstructura repetitiva
Estructura repetitiva
 

Último

Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
eleandroth
 
tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)
saradocente
 
Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.
genesiscabezas469
 
Gracias papá voz mujer_letra y acordes de guitarra.pdf
Gracias papá voz mujer_letra y acordes de guitarra.pdfGracias papá voz mujer_letra y acordes de guitarra.pdf
Gracias papá voz mujer_letra y acordes de guitarra.pdf
Ani Ann
 
Ejercicios-de-Calculo-de-Goteo-Enfermeria1-1.ppt
Ejercicios-de-Calculo-de-Goteo-Enfermeria1-1.pptEjercicios-de-Calculo-de-Goteo-Enfermeria1-1.ppt
Ejercicios-de-Calculo-de-Goteo-Enfermeria1-1.ppt
eliseo membreño
 
La filosofía presocrática y los filosofos más relvantes del periodo.
La filosofía presocrática y los filosofos más relvantes del periodo.La filosofía presocrática y los filosofos más relvantes del periodo.
La filosofía presocrática y los filosofos más relvantes del periodo.
DobbieElfo
 
Independencia de Chile, Causas internas y externas
Independencia de Chile, Causas internas y externasIndependencia de Chile, Causas internas y externas
Independencia de Chile, Causas internas y externas
canessamacarena
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
Sandra Mariela Ballón Aguedo
 
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdfCarnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
EleNoguera
 
Mi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste BlancoMi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste Blanco
Ruth Noemí Soto Villegas
 
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍACINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
Fernández Gorka
 
Gracias papá hombre_letra y acordes de guitarra.pdf
Gracias papá hombre_letra y acordes de guitarra.pdfGracias papá hombre_letra y acordes de guitarra.pdf
Gracias papá hombre_letra y acordes de guitarra.pdf
Ani Ann
 
Business Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business TechBusiness Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business Tech
johnyamg20
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
LuanaJaime1
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Alejandrino Halire Ccahuana
 
REGLAMENTO DE FALTAS Y SANCIONES DEL MAGISTERIO 2024.pptx
REGLAMENTO DE FALTAS Y SANCIONES DEL MAGISTERIO 2024.pptxREGLAMENTO DE FALTAS Y SANCIONES DEL MAGISTERIO 2024.pptx
REGLAMENTO DE FALTAS Y SANCIONES DEL MAGISTERIO 2024.pptx
RiosMartin
 
2024 planificacion microcurricular 7mo A matutino..docx
2024 planificacion microcurricular 7mo A matutino..docx2024 planificacion microcurricular 7mo A matutino..docx
2024 planificacion microcurricular 7mo A matutino..docx
WILLIAMPATRICIOSANTA2
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
LudmilaOrtega3
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
Mónica Sánchez
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
Jose Luis Jimenez Rodriguez
 

Último (20)

Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
 
tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)
 
Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.
 
Gracias papá voz mujer_letra y acordes de guitarra.pdf
Gracias papá voz mujer_letra y acordes de guitarra.pdfGracias papá voz mujer_letra y acordes de guitarra.pdf
Gracias papá voz mujer_letra y acordes de guitarra.pdf
 
Ejercicios-de-Calculo-de-Goteo-Enfermeria1-1.ppt
Ejercicios-de-Calculo-de-Goteo-Enfermeria1-1.pptEjercicios-de-Calculo-de-Goteo-Enfermeria1-1.ppt
Ejercicios-de-Calculo-de-Goteo-Enfermeria1-1.ppt
 
La filosofía presocrática y los filosofos más relvantes del periodo.
La filosofía presocrática y los filosofos más relvantes del periodo.La filosofía presocrática y los filosofos más relvantes del periodo.
La filosofía presocrática y los filosofos más relvantes del periodo.
 
Independencia de Chile, Causas internas y externas
Independencia de Chile, Causas internas y externasIndependencia de Chile, Causas internas y externas
Independencia de Chile, Causas internas y externas
 
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZACORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
CORREOS SEGUNDO 2024 HONORIO DELGADO ESPINOZA
 
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdfCarnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
 
Mi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste BlancoMi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste Blanco
 
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍACINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
 
Gracias papá hombre_letra y acordes de guitarra.pdf
Gracias papá hombre_letra y acordes de guitarra.pdfGracias papá hombre_letra y acordes de guitarra.pdf
Gracias papá hombre_letra y acordes de guitarra.pdf
 
Business Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business TechBusiness Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business Tech
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
 
REGLAMENTO DE FALTAS Y SANCIONES DEL MAGISTERIO 2024.pptx
REGLAMENTO DE FALTAS Y SANCIONES DEL MAGISTERIO 2024.pptxREGLAMENTO DE FALTAS Y SANCIONES DEL MAGISTERIO 2024.pptx
REGLAMENTO DE FALTAS Y SANCIONES DEL MAGISTERIO 2024.pptx
 
2024 planificacion microcurricular 7mo A matutino..docx
2024 planificacion microcurricular 7mo A matutino..docx2024 planificacion microcurricular 7mo A matutino..docx
2024 planificacion microcurricular 7mo A matutino..docx
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
 

5 c iterative

  • 1. Estructuras de control: Java - 19 - © Fernando Berzal EstructurasEstructurasEstructurasEstructuras de controlde controlde controlde control repetitivasrepetitivasrepetitivasrepetitivas/iterativas/iterativas/iterativas/iterativas A menudo es necesario ejecutar una instrucción o un bloque de instrucciones más de una vez. Ejemplo Implementar un programa que calcule la suma de N números leídos desde teclado. Podríamos escribir un programa en el que apareciese repetido el código que deseamos que se ejecute varias veces, pero… ß Nuestro programa podría ser demasiado largo. ß Gran parte del código del programa estaría duplicado, lo que dificultaría su mantenimiento en caso de que tuviésemos que hacer cualquier cambio, por trivial que fuese éste. ß Una vez escrito el programa para un número determinado de repeticiones (p.ej. sumar matrices 3x3), el mismo programa no podríamos reutilizarlo si necesitásemos realizar un número distinto de operaciones (p.ej. sumar matrices 4x4). Las estructuras de control repetitivas o iterativas, también conocidas como “bucles”, nos permiten resolver de forma elegante este tipo de problemas. Algunas podemos usarlas cuando conocemos el número de veces que deben repetirse las operaciones. Otras nos permiten repetir un conjunto de operaciones mientras se cumpla una condición. Iteración: Cada repetición de las instrucciones de un bucle.
  • 2. Estructuras de control: Java - 20 - © Fernando Berzal El bucle while Permite repetir la ejecución de un conjunto de sentencias mientras se cumpla una condición: while (condición) sentencia; while (condición) { bloque } El bucle while terminará su ejecución cuando deje de verificarse la condición que controla su ejecución. Si, inicialmente, no se cumple la condición, el cuerpo del bucle no llegará a ejecutarse. MUY IMPORTANTE En el cuerpo del bucle debe existir algo que haga variar el valor asociado a la condición que gobierna la ejecución del bucle.
  • 3. Estructuras de control: Java - 21 - © Fernando Berzal Ejemplo Tabla de multiplicar de un número public class While1 { public static void main( String args[] ) { int n; // Número int i; // Contador n = Integer.parseInt( args[0] ); i = 0; while (i<=10) { System.out.println (n+" x "+i+" = "+(n*i)); i++; } } } Ejemplo Divisores de un número public class While2 { public static void main( String args[] ) { int n; int divisor; n = Integer.parseInt( args[0] ); System.out.println("Los divisores son:"); divisor = n; while (divisor>0) { if ((n%divisor) == 0) System.out.println(divisor); divisor--; } } }
  • 4. Estructuras de control: Java - 22 - © Fernando Berzal En los ejemplos anteriores, se conoce de antemano el número de iteraciones que han de realizarse (cuántas veces se debe ejecutar el bucle): La expresión del while se convierte en una simple comprobación del valor de una variable contador. El contador es una variable que se incrementa o decrementa en cada iteración y nos permite saber la iteración en la que nos encontramos en cada momento. En el cuerpo del bucle, siempre se incluye una sentencia contador++; o bien contador--; para que, eventualmente, la condición del while deje de cumplirse. En otras ocasiones, puede que no conozcamos de antemano cuántas iteraciones se han de realizar. La condición del while puede que tenga un aspecto diferente pero, en el cuerpo del bucle, deberá seguir existiendo algo que modifique el resultado de evaluar la condición.
  • 5. Estructuras de control: Java - 23 - © Fernando Berzal Ejemplo Sumar una serie de números hasta que el usuario introduzca un cero import javax.swing.JOptionPane; public class While3 { public static void main( String args[] ) { float valor; float suma; suma = 0; valor = leerValor(); while (valor!=0) { suma += valor; valor = leerValor(); } mostrarValor("Suma de los datos", suma); System.exit(0); } private static float leerValor () { String entrada; entrada = JOptionPane.showInputDialog ( "Introduzca un dato:" ); return Float.parseFloat(entrada); } private static void mostrarValor (String mensaje, float valor) { JOptionPane.showMessageDialog ( null, valor, mensaje, JOptionPane.INFORMATION_MESSAGE ); } } El valor introducido determina en cada iteración si se termina o no la ejecución del bucle.
  • 6. Estructuras de control: Java - 24 - © Fernando Berzal El bucle for Se suele emplear en sustitución del bucle while cuando se conoce el número de iteraciones que hay que realizar. Sintaxis for (expr1; expr2; expr3) { bloque; }
  • 7. Estructuras de control: Java - 25 - © Fernando Berzal Equivalencia entre for y while Un fragmento de código como el que aparecía antes con un bucle while: i = 0; while (i<=10) { System.out.println (n+" x "+i+" = "+(n*i)); i++; } puede abreviarse si utilizamos un bucle for: for (i=0; i<=10; i++) { System.out.println (n+" x "+i+" = "+(n*i)); } Como este tipo de estructuras de control es muy común, el lenguaje nos ofrece una forma más compacta de representar un bucle cuando sabemos cuántas veces ha de ejecutarse el cuerpo del bucle. En general, for (expr1; expr2; expr3) { bloque; } equivale a expr1; while (expr2) { bloque; expr3; }
  • 8. Estructuras de control: Java - 26 - © Fernando Berzal Ejemplo Cálculo del factorial de un número Bucle for public class FactorialFor { public static void main( String args[] ) { long i,n,factorial; n = Integer.parseInt( args[0] ); factorial = 1; for (i=1; i<=n; i++) { factorial *= i; } System.out.println ( "f("+n+") = " + factorial); } } Bucle while public class FactorialWhile { public static void main( String args[] ) { long i,n,factorial; n = Integer.parseInt( args[0] ); factorial = 1; i = 1; while (i<=n) { factorial *= i; i++; } System.out.println ( "f("+n+") = " + factorial); } }
  • 9. Estructuras de control: Java - 27 - © Fernando Berzal for (expr1; expr2; expr3) { bloque; } En un bucle for La primera expresión, expr1, suele contener inicializaciones de variables separadas por comas. En particular, siempre aparecerá la inicialización de la variable que hace de contador. o Las instrucciones que se encuentran en esta parte del for sólo se ejecutarán una vez antes de la primera ejecución del cuerpo del bucle (bloque). La segunda expresión, expr2, es la que contiene una expresión booleana (la que aparecería en la condición del bucle while equivalente para controlar la ejecución del cuerpo del bucle). La tercera expresión, expr3, contiene las instrucciones, separadas por comas, que se deben ejecutar al finalizar cada iteración del bucle (p.ej. el incremento/decremento de la variable contador). El bloque de instrucciones bloque es el ámbito del bucle (el bloque de instrucciones que se ejecuta en cada iteración).
  • 10. Estructuras de control: Java - 28 - © Fernando Berzal Cabecera del bucle Número de iteraciones for (i=0; i<N; i++) N for (i=0; i<=N; i++) N+1 for (i=k; i<N; i++) N-k for (i=N; i>0; i--) N for (i=N; i>=0; i--) N+1 for (i=N; i>k; i--) N-k for (i=0; i<N; i+=k) N/k for (i=j; i<N; i+=k) (N-j)/k for (i=1; i<N; i*=2) log2 N for (i=0; i<N; i*=2) ∞ for (i=N; i>0; i/=2) log2 N + 1 suponiendo que N y k sean enteros positivos Bucles infinitos Un bucle infinito es un bucle que se repite “infinitas” veces: for (;;) /*bucle infinito*/ while (true) /*bucle infinito*/ Si nunca deja de cumplirse la condición del bucle, nuestro programa se quedará indefinidamente ejecutando el cuerpo del bucle, sin llegar a salir de él.
  • 11. Estructuras de control: Java - 29 - © Fernando Berzal El bucle do while Tipo de bucle, similar al while, que realiza la comprobación de la condición después de ejecutar el cuerpo del bucle. Sintaxis do sentencia; while (condición); do { bloque } while (condición); • El bloque de instrucciones se ejecuta, al menos, una vez. • El bucle do while resulta especialmente indicado para validar datos de entrada (comprobar que los valores de entrada obtenidos están dentro del rango de valores que el programa espera). En todos nuestros programas debemos asegurarnos de que se obtienen datos de entrada válidos antes de realizar cualquier tipo de operación con ellos.
  • 12. Estructuras de control: Java - 30 - © Fernando Berzal Ejemplo Cálculo del factorial comprobando el valor del dato de entrada import javax.swing.JOptionPane; public class FactorialDoWhile { public static void main( String args[] ) { long n; do { n = leerEntero(0,20); } while ((n<0) || (n>20)); mostrarMensaje ( "f("+n+") = "+ factorial(n)); System.exit(0); } private static long factorial (long n) { long i; long factorial = 1; for (i=1; i<=n; i++) { factorial *= i; } return factorial; } private static int leerEntero (int min, int max) { String entrada = JOptionPane.showInputDialog ( "Introduzca un valor entero” + “ (entre "+min+" y "+max+"):” ); return Integer.parseInt(entrada); } private static void mostrarMensaje (String mensaje) { JOptionPane.showMessageDialog(null,mensaje); } }
  • 13. Estructuras de control: Java - 31 - © Fernando Berzal Ejemplo Cálculo de la raíz cuadrada de un número import javax.swing.JOptionPane; public class Sqrt { public static void main( String args[] ) { double n; do { n = leerReal ("Introduzca un número positivo"); } while (n<0); mostrarMensaje( "La raíz cuadrada de "+n + " es aproximadamente "+raiz(n)); System.exit(0); } private static double raiz (double n) { double r; // Raíz cuadrada del número double prev; // Aproximación previa de la raíz r = n/2; do { prev = r; r = (r+n/r)/2; } while (Math.abs(r-prev) > 1e-6); return r; } private static double leerReal (String mensaje) { String entrada; entrada = JOptionPane.showInputDialog(mensaje); return Double.parseDouble(entrada); } private static void mostrarMensaje (String mensaje) { JOptionPane.showMessageDialog(null,mensaje); } }
  • 14. Estructuras de control: Java - 32 - © Fernando Berzal Bucles anidados Los bucles también se pueden anidar: for (i=0; i<N;i++) { for (j=0; j<N; j++) { printf(“(%d,%d) ”,i,j); } } genera como resultado: (0,0) (0,1) (0,2) … (0,N) (1,0) (1,1) (1,2) … (1,N) … (N,0) (N,1) (N,2) … (N,N) Ejemplo int n,i,k; … n = 0; // Paso 1 for (i=1; i<=2; i++) { // Paso 2 for (k=5; k>=1; k-=2) { // Paso 3 n = n + i + k; // Paso 4 } // Paso 5 } // Paso 6 … // Paso 7 Paso N i k 1 0 ? ? 2 1 3 5 6 4 5 3 3 10 4 5 1 3 12 4 5 −1 3 6 2 2 3 4 5 3 4 5 3 4 5 3 6 2 7 3 −1 2724 13 19 5