0% encontró este documento útil (0 votos)
127 vistas104 páginas

Tema III. Control de Flujo

El documento describe las estructuras de control de flujo en programación, incluyendo la ejecución secuencial, llamadas a métodos, y estructuras selectivas y repetitivas. Explica los operadores de comparación y condiciones que permiten la selección condicional del código a ejecutar basado en el valor de expresiones booleanas.

Cargado por

StudentTechHM
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
127 vistas104 páginas

Tema III. Control de Flujo

El documento describe las estructuras de control de flujo en programación, incluyendo la ejecución secuencial, llamadas a métodos, y estructuras selectivas y repetitivas. Explica los operadores de comparación y condiciones que permiten la selección condicional del código a ejecutar basado en el valor de expresiones booleanas.

Cargado por

StudentTechHM
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Ingeniería en Sistemas Computacionales

Fundamentos de Programación

Tema III | Control de flujo

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Ingeniería en Sistemas Computacionales
Fundamentos de Programación

Tema III| Control de flujo

Competencia de la unidad

Conoce y aplica las estucturas condicionales y


repetitivas en un lenguaje de programación para la
resolución de problemas.

Instituto Tecnológico de León – Ingeniería en Sistemas Computacionales – 2017


3.1 Estructuras
secuenciales Ya hemos dicho en el curso que el orden de las instrucciones
en un programa es clave para producir resultados correctos.

El orden en el que se ejecutan las instrucciones en un


programa es llamado control de flujo.

Existen cuatro tipos de mecanismos para el control de flujo:

• ejecución secuencial,
• llamada a métodos,
• selección e
• iteración.

La mayoría de los programas hace uso de combinaciones de los


4 mecanismos.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Por ahora, nuestros programas han empleado la ejecución secuencial y
la llamada a métodos.

3.1 Estructuras
secuenciales

La JVM ejecuta la primera instrucción del método main de la clase,


después ejecuta la segunda instrucción del main y continúa
ejecutando las instrucciones de manera secuencial hasta que no haya
más que ejecutar.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Si en el método main, alguna instrucción incluye una llamada a métodos,
las instrucciones de cada método se ejecutan secuencialmente hasta
terminar y retornan el control al punto en el que fueron llamados.

3.1 Estructuras
secuenciales

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.1 Estructuras
secuenciales
En algunos casos no se desea que todas las
instrucciones se ejecuten aunque exista una cierta
secuencia.

A veces algunas instrucciones deberán ejecutarse


sólo para ciertos valores de entrada, pero no para
otros.

Por ejemplo, uno puede contar el número de personas


con tarifa preferente que viajan en el Sistema
Integrado de Transporte de la ciudad de León, Gto. en
un día específico - La cuenta aplica solamente para
quienes si tienen tarifa preferencial

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Toca el turno de utilizar mecanismos de selección,

3.2 Estructuras que nos aportarán formas de probar el cumplimiento


selectivas: simple,
doble y múltiple. de ciertas condiciones

y las instrucciones seleccionadas para ejecutarse


cuando las condiciones son ciertas

y también cuando no lo son.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Para implementar la selección, Java proporciona
un número de alternativas:
3.2 Estructuras
selectivas: simple,
doble y múltiple. • if

• If else

• if else if

• el operador condicional ( ?: )

• y el switch.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Las estructuras selectivas apoyan la toma de
3.2 Estructuras decisiones y están basadas en
selectivas: simple, comparaciones a realizar para determinar el
doble y múltiple.
valor de una expresión evaluable.

Por lo general, a una expresión que se evalúa


para efectos de decisión le llamamos
condición.

Las condiciones son expresiones booleanas


que al ser evaluadas toman los valores true y
false.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.2 Estructuras
Recordemos que Java proporciona operadores
selectivas: simple, lógicos, relacionales y de igualdad para
doble y múltiple. evaluar si una expresión es verdadera o falsa.

Java también permite que las expresiones


booleanas se mezclen con las sentencias de
selección ya mencionadas (if, else if , etc.),
para transferir el control a una parte del
programa dependiendo del resultado de la
prueba.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Una operación común en la toma de decisiones
consiste en comparar si dos variables o valores del
mismo tipo de datos son iguales o no.
3.2 Estructuras
selectivas: simple,
doble y múltiple. if (nombre == null)

En la línea anterior estamos probando si el


identificador nombre es igual al valor constante
null.

Java proporciona los operadores == y != que son


operadores binarios (se llaman así porque
necesitan dos operandos). Los operandos pueden
ser expresiones que al ser evaluadas, producen un
tipo de datos numérico, booleano o un objeto.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El resultado de una expresión compuesta por un
operador relacional junto con sus dos operandos, es un
valor booleano, esto es, aquel que sólo puede ser true
3.2 Estructuras o false.
selectivas: simple,
doble y múltiple.
Por ejemplo, si una variable llamada edad, cuyo valor
es igual a 18, forma parte de alguna expresión lógica,
produce resultados según el caso:

( edad == 18 ) produce resultado true


( edad != 18 ) produce resultado false

Un error muy común consiste en comparar utilizando un solo símbolo de igual


edad = 18
Recuerde que usamos = para asignar y == para comparar.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


La siguiente condición puede emplearse para
eliminar datos de estudiantes que no están
3.2 Estructuras en primer semestre.
selectivas: simple,
doble y múltiple.
semestre != 1

La siguiente condición puede emplearse en


un programa para determinar si el usuario
quiere ejecutar de nuevo alguna
funcionalidad.

continuar == ‘s’

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Aunque los operadores de igualdad pueden utilizarse para
comparar referencias a objetos, no pueden utilizarse
3.2 Estructuras libremente para comparar objetos.
selectivas: simple,
doble y múltiple.
String contraseña = “1234”;

String clave = [Link](“Contraseña”);

if ( [Link](contraseña) ){

}
Así comparamos dos Strings,
Recuerde que un String es un objeto.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Recuerde que también para comparar valores
pertenecientes a tipos de datos primitivos, Java
3.2 Estructuras
selectivas: simple, proporciona operadores relacionales.
doble y múltiple.
Son operadores binarios y sus operandos
deben ser expresiones que al ser evaluadas,
produzcan un tipo de datos numérico.

Los operadores relacionales no pueden ser


utilizados con expresiones booleanas ni con
objetos.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Por ejemplo, si una variable llamada edad de tipo int
que contiene el valor 18 es evaluada, entonces:
3.2 Estructuras
selectivas: simple,
doble y múltiple. la expresión ( edad < 18 ) evaluará a false
la expresión ( edad <= 18 ) evaluará a true
la expresión ( edad > 18 ) evaluará a false
la expresión ( edad >= 18 ) evaluará a true

La expresión siguiente prueba si una variable llamada


calificaciónExamen es por lo menos de 90

calificaciónExamen >= 90

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Una operación común en un programa consiste
en probar si una combinación de condiciones
3.2 Estructuras es verdadera o falsa. Para esas operaciones,
selectivas: simple, Java proporciona operadores lógicos.
doble y múltiple.

Recuerde que los operadores lógicos del


recuadro rojo corresponden a los operadores
lógicos booleanos Not, And y Or. Estos
operadores toman expresiones booleanas
como operandos.
Operadores
Lógicos

! Not
&& AND
| | OR

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Una expresión booleana puede tomar cualquier
combinación válida de variables booleanas; una
3.2 Estructuras
selectivas: simple,
condición que utilice operadores relacionales que
doble y múltiple. produzcan true o false; o una llamada a un método
que devuelva un valor booleano.

El operador ! – Not toma una expresión booleana


como operando e invierte su valor.

• Si el operando es true, el resultado será false;


• y si el operando es false, el resultado será true.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Recordando lo aprendido en Matemáticas Discretas:
3.2 Estructuras
selectivas: simple, El operador && (And) toma dos expresiones
doble y múltiple. booleanas como operandos; si ambos operandos
son true, entonces el resultado será true; en
cualquier otra combinación será false.

El operador || (Or) también toma dos expresiones


booleanas como operandos. Si ambos operandos
son false, entonces el resultado será false; en caso
contrario, será true.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.2 Estructuras
selectivas: simple,
doble y múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Comparación incorrecta de x, y, z (error común)

Suponga que tenemos tres enteros: x, y, z y


3.2 Estructuras queremos probar si x es menor, tanto a y como a z.
selectivas: simple,
doble y múltiple.
Un error común consiste en expresar la condición de
esta forma:

x < y && z

Dado que z no es una variable booleana, la sentencia


anterior generará un error de compilación, lo correcto
sería escribirla como:

x < y && x < z

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Expresiones equivalentes

Suponga que tenemos dos variables booleanas


3.2 Estructuras llamadas flag1 y flag2 y que queremos probar si al
selectivas: simple,
doble y múltiple.
menos una de las dos es false. A continuación,
algunas expresiones equivalentes para hacerlo:

// flag1 es false o flag2 es false


( flag1 == false ) || ( flag2 == false )

// !flag1 es true o !flag2 es true


! flag1 || ! flag2

// ni flag1 ni flag2 son true


! ( flag1 && flag2 )

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Leyes de DeMorgan

3.2 Estructuras
Gracias al trabajo del matemático británico Augustus
selectivas: simple, DeMorgan, tenemos un conjunto de reglas que nos ayudan
doble y múltiple. a desarrollar expresiones que son equivalentes.

DeMorgan, conocido ampliamente por su trabajo en el


álgebra booleana y en la teoría de conjuntos, desarrolló
lo que hoy conocemos como leyes de DeMorgan, que son:

1) NOT( A AND B ) = ( NOT A ) OR ( NOT B )

2) NOT( A OR B ) = ( NOT A ) AND ( NOT B )

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Leyes de DeMorgan
3.2 Estructuras
selectivas: simple,
doble y múltiple. En Java, además, utilizando la primera ley, tenemos:

!( a && b ) es equivalente a !a || !b

Utilizando la segunda ley tenemos:

!( a || b) es equivalente a !a && !b

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Estructura selectiva simple

3.2 Estructuras La estructura selectiva es adecuada cuando en un


selectivas: simple, programa se desea que una operación aplique a un
doble y múltiple.
conjunto de datos, pero para otros no.

Para situaciones como esta, utilizamos una


sentencia condicional simple:

if ( condición )
{
Lo que está entre llaves es el bloque que se
ejecutará cuando la condición sea verdadera
}
siguiente sentencia

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El bloque verdadero
falso
puede contener una o más Condición
3.2 Estructuras sentencias que sólo se
selectivas: simple,
ejecutan si la condición es
doble y múltiple. verdadero
verdadera.

Después de que se ejecute


el bloque verdadero, se Bloque
ejecuta la siguiente verdadero
instrucción posterior a la
sentencia if.

Siguiente
sentencia
Si el bloque es de una sola sentencia no
necesita estar entre llaves.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Si la condición es
falso
Condición false, el bloque
3.2 Estructuras
selectivas: simple, verdadero no se
doble y múltiple. ejecuta y el control en
verdadero el flujo de la ejecución
se transfiere a la
siguiente sentencia.
Bloque
verdadero Nuevamente, si el
bloque verdadero
consiste de una sola
sentencia, las llaves no
Siguiente son necesarias.
sentencia

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Elaboremos un programa para capturar el valor de una calificación y de
los puntos extra en un curso. El programa deberá imprimir la
calificación total.

3.2 Estructuras
selectivas: simple,
doble y múltiple.

Modifique el programa para que las calificaciones estén entre 0 y 100

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Observe que no hay punto y coma al término de la
condición en una sentencia if. Si usted coloca un
3.2 Estructuras
selectivas: simple, punto y coma después de la condición, como en la
doble y múltiple. siguiente sentencia:
cuidado
if ( calificación >= 70 ) ;
[Link]( “Aprobado” );

El compilador no generará error, pero considerará que


la sentencia if es vacía, es decir, no contiene ninguna
instrucción, por lo que el mensaje Aprobado no
depende de la condición que se está probando.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Estructura selectiva doble

La segunda forma de uso de una sentencia if ocurre cuando


el procesamiento de datos cae en dos categorías
mutuamente excluyentes, condicionando la ejecución de
3.2 Estructuras
instrucciones diferentes para cada categoría.
selectivas: simple,
doble y múltiple.
Para esas situaciones, utilizamos la sentencia if / else con el
siguiente patrón:

if ( condición )
{
bloque verdadero
}
else
{
bloque falso
}
siguiente sentencia

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Estructura selectiva doble

verdadero falso
3.2 Estructuras
Condición
selectivas: simple,
doble y múltiple.

Bloque Bloque
verdadero falso

Siguiente
sentencia

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.2 Estructuras
selectivas: simple,
doble y múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Estructura selectiva múltiple

¿Qué pasa cuando necesitamos aplicar operaciones a datos


que caen en más de dos categorías mutuamente excluyentes?
3.2 Estructuras
Java proporciona la sentencia if / else if
selectivas: simple,
doble y múltiple.
if( condición 1 )
{
bloque verdadero para la condición 1
}
else if ( condición 2 )
{
bloque verdadero para la condición 2
}
...
else if ( condición n )
{
bloque verdadero para la condición n
}
else
bloque falso para todas las condiciones false

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Condición verdadero
1

falso Bloque
true
3.2 Estructuras Condición
verdadero
selectivas: simple, 2
doble y múltiple.
falso Bloque
true
Condición verdadero
n

falso Bloque
true
Bloque
falso

Siguiente
sentencia

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.2 Estructuras
selectivas: simple,
doble y múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Para ilustrar el uso de sentencias
condicionales secuenciales,
observemos el problema de
encontrar el más pequeño de
3.2 Estructuras tres números que se ingresan
selectivas: simple, desde el teclado.
doble y múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Toca turno a las condicionales anidadas.
Generar un número aleatorio entre 1 y 10 para luego intentar adivinarlo.

3.2
Estructuras
selectivas:
simple,
doble y
múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Comparando Strings

Dado que los String son objetos, se debe utilizar un


método para compararlos. El método es equals():
3.2 Estructuras
selectivas: simple,
doble y múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Adicionalmente, la clase String proporciona otros dos métodos,
equalsIgnoreCase y compareTo.

El método equalsIgnoreCase es similar al método equals, excepto


que no hace diferencia entre mayúsculas y minúsculas.

3.2 Estructuras
selectivas: simple,
doble y múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El método compareTo devuelve un valor entero en lugar de un
valor booleano después de comparar dos String en orden
lexicográfico. Si el objeto String es mayor que su argumento, se
regresa un valor positivo.
3.2 Estructuras
selectivas: simple,
doble y múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El método compareTo devuelve un valor negativo si el objeto
String es menor que su argumento.

3.2 Estructuras
selectivas: simple,
doble y múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El método compareTo devuelve cero si los dos String son
iguales.

3.2 Estructuras
selectivas: simple,
doble y múltiple.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Se puede utilizar el operador condicional ( ? : ) en expresiones.

Su sintaxis es:
3.2 Estructuras
selectivas: simple, ( condición ? Expresión1 : Expresión2 )
doble y múltiple.
El valor de una expresión que contiene al operador condicional
está determinado por la evaluación de la condición, que
corresponde a cualquier expresión que evalúa a true o a false.

Si la condición se evalúa a true, la Expresión1 será el valor


resultante de la expresión, por ello la expresión1 se asignará a
la variable; si la condición se evalúa a false, la Expresión2
será el valor resultante de la expresión, el cual será
almacenado en la variable.

variable = ( condición ? Expresión1 : Expresión2 );

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.2 Estructuras
selectivas: simple,
doble y múltiple.

variable = ( condición ? Expresión1 : Expresión2 );

Es equivalente a:

if( condición )
variable = Expresión1;
else
variable = Expresión2;

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Estructura selectiva múltiple (switch)

Esta sentencia puede utilizarse en lugar de sentencias del tipo if /


else if para el proceso de selección cuando la condición consiste en
3.2 Estructuras la comparación de constantes enteras (byte, short, int) o caracteres
selectivas: simple, ( char ). En versiones recientes de Java se soporta el tipo String.
doble y múltiple.
switch ( expresión )
{

case constante1 : sentencia1;


...
break;
case constante2 : sentencia1;
...
break;
...
default :
sentencia1;
...
}

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017
Cambiar el menú implica cambiar el switch

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


La necesidad de repetir instrucciones

El trabajo principal de un cajero en una tienda consiste en


determinar el total a pagar por una compra.

El cajero inicia con un total a pagar en $0.00,


3.3 Estructuras
iterativas: repetir, • toma un producto y lo ingresa al sistema para que se registre
mientras, hasta y el precio y un posible descuento o impuesto adicional;
desde.
• luego, si existe otro producto en la selección del cliente, el
cajero toma el segundo producto (y el tercero y los demás
hasta que no haya más) y se realiza un proceso similar al del
paso anterior.

En cada pasada de un producto se va ajustando el total a pagar.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El cajero continuará con un proceso similar
para cada cliente, es decir, atenderá hasta
que no haya más productos por ingresar a la
cuenta.
3.3 Estructuras
iterativas: repetir, Al final, con la confirmación del cliente,
mientras, hasta y afirmando que no desea llevar algo más, el
desde.
cajero indica el total a pagar, recibe el dinero,
entrega el comprobante correspondiente por la
compra y en su caso, el cambio o el
documento utilizado para cerrar la compra
(tarjeta de crédito, identificaciones, etc.).

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El trabajo del cajero consiste en la preparación del
cobro, del procesamiento de cada producto a
ingresar a la cuenta, de informar el balance al final, y
posteriormente de atender a un nuevo cliente.

En computación, frecuentemente realizamos


3.3 Estructuras
tareas que siguen el mismo patrón:
iterativas: repetir,
mientras, hasta y 1. Inicializar valores
desde.
2. Procesar elementos uno a uno
3. Reportar los resultados.
4. Repetir todo nuevamente.

El tipo de flujo que los programadores emplean para


completar tareas de este patrón es llamado
repetición, iteración o looping.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Si intentáramos describir algorítmicamente una parte
del trabajo del cajero, tendríamos algo como:

1.- Inicio
2.- Iniciar el cobro poniendo total a cero
3.- Si hay un producto a procesar
3a.- registrar el precio, acumular la cuenta
3.3 Estructuras 4.- Si hay un producto a procesar
iterativas: repetir,
mientras, hasta y
4a.- registrar el precio, acumular la cuenta
desde. 5.- Si hay un producto a procesar
5a.- registrar el precio, acumular la cuenta
6.- Cuando no haya más productos Aquí hay un patrón
solicitar el cálculo del total
7.- Decirle al cliente el total a pagar

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Donde existe un patrón que se repite, está
latente la posibilidad para incluir una instrucción
que desde el diseño, permita la repetición de un
conjunto de instrucciones.
3.3 Estructuras
iterativas: repetir,
mientras, hasta y
Ahora bien, cuando no se conoce de
desde. antemano la cantidad de repeticiones del
patrón, la instrucción diseñada para los
lenguajes es conocida como ciclo while.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


En un ciclo while se procesan instrucciones
mientras una condición se esté cumpliendo, por
ejemplo, repetiremos el cobro mientras haya
productos del cliente.

3.3 Estructuras
iterativas: repetir,
Simplemente procesamos cada entrada, una a la
mientras, hasta y vez, hasta que una señal – un evento – nos dice
desde. que no hay más entradas a procesar.

Esto es llamado ciclos controlados por eventos.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


En el caso del trabajo del cajero, la señal para
terminar de acumular en la cuenta del cliente,
es que no haya más productos que el cliente
desee comprar.
3.3 Estructuras
iterativas: repetir, Normalmente, la señal para terminar la
mientras, hasta y
desde. entrada de datos, es un valor especial que el
usuario introduce al sistema, llamado valor
centinela, o bien, puede ocurrir cuando se
alcance el final de los datos de entrada.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El ciclo while tiene la siguiente sintaxis:
Nuevamente, si el
ciclo solo tiene
while ( condición ) una instrucción a
{ repetir, las llaves
no son necesarias.
// procesamiento de datos
3.3 Estructuras // cuerpo del ciclo
iterativas: repetir, }
mientras, hasta y
desde.
// siguientes instrucciones post ciclo
La condición es una expresión booleana, esto es, cualquier
expresión que al ser evaluada resulta en true o en false.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Cuando toca turno de
ejecución a la sentencia que
contiene al ciclo while, lo
primero que ocurre es la
evaluación de la condición.

3.3 Estructuras
Si la condición es evaluada como true, entonces se
iterativas: repetir, ejecutan las sentencias del cuerpo del ciclo, para que a
mientras, hasta y su término, se reevalúe la condición, que, si produce true
desde. como resultado, el cuerpo del ciclo se vuelve a ejecutar.

La repetición continúa hasta que la condición del ciclo


se evalúa como false , en ese evento, el cuerpo del ciclo
ya no se ejecuta y se continúa con la siguiente
instrucción posterior al loop.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.
Nuevamente, las llaves solo son necesarias
cuando el cuerpo del ciclo tiene más de
una instrucción por ejecutar.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras
iterativas: repetir,
mientras, hasta y Cualquier variable definida dentro del cuerpo
desde.
del ciclo while ocasiona que la variable sea
reconocida dentro de todo el cuerpo del ciclo y
sólo en ese lugar, por lo que no podrá ser
utilizada fuera de ahí.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Inicialización de
Estructura general variables
del ciclo while

falso
Condición

3.3 Estructuras
iterativas: repetir, verdadero
mientras, hasta y
desde.

Cuerpo del
ciclo
Procesar
resultados

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Utilizando una contrucción while, el pseudocódigo para la tarea
del cajero podría parecer como:

Asignar $0.00 a total


Preguntarle al cliente si desea pagar
Si responde que sí
Asignar true a clienteConProductos
En caso contrario
Asignar false a clienteConProductos
3.3 Estructuras
iterativas: repetir, while ( clienteConProductos == true )
mientras, hasta y {
desde. Tomar producto no registrado como cobrado
Registrar el precio de ese producto
Acumular el precio en la cuenta
Preguntarle al cliente si desea pagar algo más
Si responde que no
Asignarle false a clienteConProductos
}

// al llegar aquí, no hay más productos


imprimir el total de la cuenta

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


También es posible construir un ciclo while en
el que la condición nunca sea false.

El resultado es un ciclo que nunca termina,


también conocido como ciclo infinito.
3.3 Estructuras
iterativas: repetir, Una forma de asegurar que la condición pueda
mientras, hasta y
desde. llegar a ser false, consiste en incluir en el
código una sentencia de actualización que
cambie apropiadamente a la variable que se
prueba dentro de la condición del while (o una
sentencia break que detenga el ciclo).

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Un error común de lógica que puede ocasionar
que el ciclo funcione de manera extraña,
consiste en colocar un punto y coma después
de la condición:

3.3 Estructuras while ( condición ) ;


iterativas: repetir,
mientras, hasta y
desde. Un punto y coma inmediatamente después de
la condición, indica un cuerpo vacío para el
ciclo – un cuerpo vacío es aquel que no
tiene ninguna sentencia.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El ciclo while se utiliza cuando no se conoce
de antemano la cantidad de veces que iterará
el ciclo.

Por eso es que confiamos en una señal, o


3.3 Estructuras evento, que nos indique cuando se han
iterativas: repetir, procesado todos los datos.
mientras, hasta y
desde.
Si al ingresar los datos desde consola, no
conocemos la cantidad de datos que se
ingresarán, podemos definir un valor especial,
llamado valor centinela.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Introducción de datos por el usuario

Revisemos la forma general de uso del while para


procesar datos de entrada del usuario.

inicializar variables
3.3 Estructuras leer el primer dato
iterativas: repetir,
mientras, hasta y while ( el dato no sea igual al centinela )
desde.
{
procesar el dato
leer el siguiente dato // ¿actualizar centinela?
}

reportar resultados

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Lectura de datos desde un archivo de texto

La clase Scanner nos permite leer con relativa


facilidad datos que se encuentren dentro de un
archivo de texto.

3.3 Estructuras La forma general para leer datos desde archivo


iterativas: repetir,
mientras, hasta y
es un poco diferente a la lectura de datos desde
desde. el teclado.

En vez de leer un valor y verificar si es o no igual a


un centinela, lo que haremos es verificar si hay
datos dentro del archivo, si es así, entonces
podremos leer un valor más.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Lectura de datos desde un archivo de texto

Además, no necesitamos imprimir un mensaje para


pedir el ingreso de los datos, lo único que se requiere
es la lectura del siguiente valor existente en el archivo.
El pseudocódigo es:
3.3 Estructuras
iterativas: repetir, inicializar variables
mientras, hasta y
desde. while ( no se haya alcanzado el fin de archivo )
{
leer el siguiente dato
procesar el dato
}

reportar los resultados

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Lectura de datos desde un archivo de texto

Utilizaremos un archivo que contendrá los datos a


procesar, por ello, necesitaremos la clase File, que nos
permitirá construir un objeto para manejar el archivo. El
constructor de la clase File es:
3.3 Estructuras
iterativas: repetir, File ( String pathname )
mientras, hasta y
desde.
El cual construye un objeto de tipo File cuyo nombre está
especificado por el String pathname.

La clase File pertenece al paquete [Link] de manera que


es necesario importarla.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Lectura de datos desde un archivo de texto

La clase Scanner proporciona un método constructor


para la lectura de un archivo de texto.

3.3 Estructuras
iterativas: repetir, La clase Scanner tokeniza el contenido del archivo
mientras, hasta y
desde.
devolviendo los tokens con uno de los métodos next. El
método hasNext( ) devuelve true si la entrada tiene otro
token y false cuando se ha alcanzado el fin del archivo.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


En el ejemplo se leen enteros
desde un archivo llamado
y se imprimen en
pantalla. En la línea 8 se usa el
constructor para convertir el
nombre de archivo
a un formato que pueda ser
procesado como archivo de
almacenamiento.

En la línea 9, asociamos al objeto


construido para el con
el archivo de entrada. Si el
archivo no se encuentra, el
constructor genera la excepción Es posible que se generen excepciones si se encuentran
llamada problemas de lectura en los archivos.
. Java necesita que se reconozca que se pueden generar
excepciones de este tipo, para eso se incluye la frase throws
IOException en la cabecera del main.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Más adelante se aprenderán otras formas de
manejar excepciones. En el ejemplo, la
excepción se produce por no encontrar el
archivo [Link] en la ruta especificada.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El conteo es una operación necesaria cuando se
desea saber el número de elementos que cumplen
con un criterio específico.

Contar es similar a acumular en el sentido de que


3.3 Estructuras necesitamos una variable inicializada a cero; la
iterativas: repetir, diferencia es que en el conteo, a la variable de
mientras, hasta y cuenta sólo se le suma 1 en cada ocasión.
desde.

Suponga por ejemplo, que deseamos contar el


número de estudiantes que reprobaron en un
examen.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Utilizaremos un centinela para poder determinar
el término del ciclo.

iniciar reprobados con cero


leer calificación

3.3 Estructuras while ( calificación diferente a -1 )


iterativas: repetir,
mientras, hasta y {
desde. if ( calificación < 70 )
sumar uno a reprobados
leer calificación
}

imprimir “número de ” + reprobados

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017
Calcular un promedio es una técnica que combina la acumulación y
el conteo. Utilizamos la acumulación para obtener totales, y
empleamos el conteo para saber cuántos elementos servirán para
calcular promedios.

iniciar total con cero


iniciar contador a cero
leer número
3.3 Estructuras
iterativas: repetir, while( número sea diferente al centinela )
mientras, hasta y {
desde. sumar el número con total y actualizarlo
sumar uno al contador y actualizarlo
leer número
}

calcular promedio según la fórmula total / contador


imprimir el promedio

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Encontrando valores máximos o mínimos

Encontrar el valor máximo dentro de un conjunto de


valores numéricos que se encuentran dentro de un archivo
de texto. Ahora un pseudocódigo simple para encontrar el
máximo:

3.3 Estructuras
...
iterativas: repetir, leer el primer número y suponer que es el máximo
mientras, hasta y mientras haya otro número por leer
desde. {
leer el siguiente número
si el número es mayor que el máximo
hacer que el máximo sea ese número
}
imprimir el número máximo

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Un problema que se presenta en la lectura
de datos de entrada con el uso de la clase
Scanner, ocurre cuando el siguiente
3.3 Estructuras token no concuerda con el tipo de datos
iterativas: repetir,
mientras, hasta y
que se espera.
desde.
Lo anterior genera una excepción del tipo
InputMismatchException que detiene la
ejecución del programa.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

La llamada al método hasNextInt() causa que se active una


interrupción para leer desde el teclado, y en caso de que lo tecleado
no sea un entero, se ejecutará el cuerpo del while.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Lo que estamos haciendo en nuestro
programa es una verificación robusta; ya
que antes aceptar la entrada como válida, se
asegura que el siguiente token concuerde con
3.3 Estructuras
la entrada esperada.
iterativas: repetir,
mientras, hasta y La clase Scanner proporciona los métodos
desde.
hasNext para hacer lo afirmado. El método
hasNext devuelve true si el siguiente token
puede leerse de acuerdo al tipo de datos que
se le especifique.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Por ejemplo, si necesitamos recibir de teclado un
entero, podemos probar si el usuario ha tecleado
caracteres que pueden ser interpretados como un
entero mediante la llamada al método hasNextInt.

Si el método devuelve un valor true, indica que se


3.3 Estructuras
iterativas: repetir, puede realizar una lectura segura utilizando el método
mientras, hasta y nextInt.
desde.

Si el siguiente token no es lo que necesitamos, esto


es, si el método hasNextInt devuelve false, entonces
la lectura de ese valor como int generará la excepción
InputMismatchException.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Si al utilizar hasNextInt se produjera un valor false,
necesitaríamos notificarle al usuario que su entrada no es
adecuada y procederíamos a solicitar el reingreso de la
entrada. Pero antes, tendríamos que quitar los caracteres
que ingresó el usuario.

3.3 Estructuras El método nextLine de la clase Scanner devuelve como


iterativas: repetir, String cualquier token restante en la línea de entrada, ese
mientras, hasta y String debe ser ignorado, lo que actúa como un vaciado –
desde.
flush.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Métodos de la clase Scanner para probar tokens

Métodos de la clase Scanner para probar en el Stream de entrada elegido

Valor de Nombre del método y acción principal


retorno
3.3 Estructuras boolean hasNext( ) Devuelve true si hay un token en la entrada.
iterativas: repetir, boolean hasNextByte( ) Devuelve true si el token puede ser leído como byte.
mientras, hasta y boolean hasNextShort( ) Devuelve true su el token puede ser leído como short.
desde. boolean hasNextInt( ) Devuelve true si el token puede ser leído como int.
boolean hasNextLong ( ) Devuelve true si el token puede ser leído como long.
boolean hasNextFloat( ) Devuelve true si el token puede ser leído como float.
boolean hasNextDouble ( ) Devuelve true si el token puede leerse como double.
boolean hasNextBoolean( ) Devuelve true si el token puede leerse como boolean.
String nextLine( ) Devuelve el resto de la línea de entrada como String.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


La construcción correcta de condiciones para
controlar la iteración puede ser un tanto
intuitiva. El ciclo se ejecutará tantas veces
como la condición sea verdadera.
3.3 Estructuras
iterativas: repetir,
mientras, hasta y
Si deseamos que el ciclo termine,
desde. entonces tenemos que leer un valor que
coincida con el centinela. De modo que la
condición del ciclo debe verificar que el valor
en la entrada del usuario no sea el valor del
centinela.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


En otras palabras, la condición de continuación
del ciclo es el inverso de la condición de
terminación que se escribió en la sentencia del
ciclo.
3.3 Estructuras
iterativas: repetir, Para un ciclo simple controlado por
mientras, hasta y
desde.
centinela, la condición normalmente tiene el
siguiente patrón:

while ( valorEntrada != centinela )

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Elabore un programa para elegir un servicio de
comunicación por celular. Las opciones disponibles
están en el menú.

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Ciclos do while

Otra forma de iteración que es especialmente útil


para validar las entradas del usuario y para
controlar el programa es el ciclo do / while.

3.3 Estructuras La diferencia con el ciclo while, es que en el ciclo


iterativas: repetir,
mientras, hasta y do / while la condición se prueba al final del
desde. ciclo ( en vez de al inicio como en el ciclo while ).

Entonces, mientras que en los ciclos while el


cuerpo del ciclo se puede ejecutar cero o más
veces, en el ciclo do / while el cuerpo del ciclo se
ejecutará una o más veces.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Inicialización de
variables

Cuerpo del
ciclo

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.
Condición
verdadero

falso

Procesar
resultados

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


A continuación un ejemplo para validar que la entrada del
usuario sea un valor entre 1 y 10. El programa continuará
iterando cuando el valor no se encuentre en ese rango, y
se detendrá cuando sí se encuentre dentro.

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Ciclos for

Cuando se conoce de antemano la cantidad de veces


que se repetirá un paquete de instrucciones, es mejor
utilizar un ciclo controlado por contador, el cual es
mejor conocido como ciclo for.
3.3 Estructuras
El ciclo for está diseñado para ciclos controlados por
iterativas: repetir,
mientras, hasta y contador, esto es, cuando el número de iteraciones
desde. está conocido antes de que inicie el ciclo.

Por ejemplo, es mejor usar ciclos for si desea calcular


el monto a pagar por concepto de nómina de 120
empleados, o bien, imprimir los cuadrados de todos los
números que hay entre el 1 y el 50.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


A continuación, un ejemplo breve de impresión de los números que
hay entre el 0 y el 9.

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

El papel del programa en la realidad consiste en ejecutar una


sentencia [Link]( ) 10 veces. La sentencia imprime
la frase “count = “ seguido del valor de la variable count.
Veamos ahora cómo funciona el ciclo for.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Los paréntesis que van después de la palabra reservada for contienen
lo que llamamos la “expresión del loop ”. Esta expresión del loop está
dividida por puntos y comas en tres expresiones separadas:

• La expresión de inicialización
3.3 Estructuras • La expresión de prueba, y
iterativas: repetir, • La expresión de incremento
mientras, hasta y
desde. for ( count = 0; count < 10; count++ )

En el ejemplo anterior, la estructura del loop muestra:

_________________________________________________________________________________________

Expresión Nombre Propósito


_________________________________________________________________________________________

1) count = 0 Inicializa la expresión Inicializa la variable del ciclo


2) count < 10 Expresión de prueba Prueba la variable del ciclo
3) count++ Expresión de incremento Variable que se incrementa en el ciclo

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


3.3 Estructuras iterativas: repetir,
mientras, hasta y desde.

Expresión del ciclo for

No lleva punto y
Punto y coma Punto y coma coma aquí

Expresión de Expresión de Expresión de


inicialización prueba incremento

for ( count = 0; count < 10 ; count++)


[Link] ( “count=” + count);

Palabra Cuerpo del ciclo


reservada
Este punto y coma termina
la sentencia completa

La variable cout ocupa un rol clave en este ciclo for. En conjunto con las tres partes de la
expresión del loop, count es usado para controlar la operación del loop. Específicamente,
sirve para llevar la cuenta de las veces que se recorre el ciclo.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Inicialización de
variables

falso
Condición

verdadero
3.3 Estructuras
Actualización de
iterativas: repetir,
variables
mientras, hasta y
desde.
Cuerpo del
ciclo

Procesar
resultados

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Encontrando la suma de 5
números enteros

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


También podemos incrementar a la variable de control en valores
diferentes a 1. El siguiente ejemplo muestra un ciclo for que
incrementa la variable de control de 2 en 2 para imprimir los
números pares que hay entre el 0 y el 20.

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


Por supuesto que también podemos implementar ciclos en los
que se decremente la variable de control, por ejemplo, podemos
capturar un String e imprimirlo al revés.

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


También se pueden utilizar más variables en un ciclo. Por
ejemplo, para producir 10, 21, 32, 43, 54, 65, podemos hacer lo
siguiente:

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El ciclo for se usa también para iterar sobre colecciones, lo
cual es mejor conocido como foreach.

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Observe el cambio en la estructura del ciclo for,


ahora solo se usa una variable de tipo String que
itera sobre la colección días, que resulta ser un
arreglo de Strings. Por cierto, el tema de arreglos
es el que sigue en nuestro paquete de diapositivas.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017


El tema que hemos cubierto es el correspondiente a ciclos y a
decisiones, esperamos te haya apoyado en tu formación como
ingeniero.

3.3 Estructuras
iterativas: repetir,
mientras, hasta y
desde.

Instituto Tecnológico de León – Departamento de Sistemas y Computación, 2017

También podría gustarte