Grupo 07T
05 de Septiembre
OBJETIVOS Enumerar los usos mas importantes de estructuras repetitivas en un programa. Definir las características de los diferentes estructuras de repetición disponibles en un programa. Identifique c/u de las partes de la sintaxis de una estructura de repetición.
OBJETIVOS Enumerar los usos mas importantes de estructuras repetitivas en un programa. Definir las características de los diferentes estructuras de repetición disponibles en un programa. Identifique c/u de las partes de la sintaxis de una estructura de repetición.
CONTENIDO Estructuras de control repetitivas (ECR) •
Tipos de ECR: • •
Deterministas No Deterministas
Estructuras de control repetitivas (ECR) en C++ • • •
ECR determinista (FOR) ECR no determinista (WHILE) ECR no determinista (DO-WHILE)
Estructura Repetitiva ( FOR ) •
Conteo/Contador + Condición de parada • Acumulador
CONTENIDO •
Estructura Repetitiva ( while )
•
Estructura Repetitiva ( do - while )
•
Conversión entre estructuras repetitivas (for, while, do-while) • Uso
de palabras (break) y (continue) en estructuras repetitivas
Muchas veces dentro de algún programa, es necesario repetir varias veces un procedimiento representado por un conjunto de instrucciones bien definidas. Para este tipo de situaciones los lenguajes de programación brindan un conjunto de instrucciones que se conocen como sentencias repetitivas, llamadas también ciclos, lazos o bucles.
El lenguaje C# proporciona tres tipos de sentencias repetitivas que son conocidas como ciclos: • Estructura •
de control repetitiva determinista:
FOR
• Estructura
determinista: • •
de
WHILE DO-WHILE.
control
repetitiva
no
Un lazo FOR es una estructura de control que permite repetir un grupo de sentencias un número especificado de veces. Se esta utilizando una variable contadora llamada i, la cual tiene un valor inicial de 1, un valor final de 5 y un incremente de uno
Las sintaxis de un lazo FOR se muestran a continuación: Método 1: Para una sola instrucción a repetir for(expresion1; expresion2; expresion3) instrucciónUnica;
Método 2: Para repetir un bloque de instrucciones for(expresion1; expresion2; expresion3) { instrucción1 ; instrucción2 ; . . instruccionN; }
La expresión1, conocida como inicialización, es una asignación de una ó más variables, en la que se establece el valor inicial de la variable de control (contador) del ciclo. La expresión2, conocida como condición, es una condición de algún tipo que, mientras sea evaluada como VERDADERA, permite la ejecución de las instrucciones del ciclo La expresión3, conocida como incremento, es otra asignación, en donde se realiza el incremento o decremento de la variable de control o contador del lazo
Todas las expresiones contenidas en el paréntesis del FOR deben estar separadas por (;) PUNTO Y COMA y no por comas simples.
Si se va a utilizar más de una variable de control (dos contadores), debe separar las instrucciones de inicialización, de condición y de incremento con comas. Sin embargo, la condición puede ser, en este caso, una sola expresión compuesta por las dos variables de control.
EJEMPLO EN C#
NOTAS: •
La inicialización puede ser diferente de uno.
•
El incremento puede ser mayor que uno.
•
No necesariamente debe haber incremento, puede haber decremento; sólo que en este caso el valor inicial debe ser mayor que el valor final de la variable y el sentido de la condición cambia.
•
Solo para el caso de incremento o decremento de una en una unidad se puede sustituir el código: • •
x = x + 1 por x++ x = x – 1 por x- -
No es imprescindible que existan todas las expresiones dentro del paréntesis del lazo FOR. Pueden aparecer vacías algunas de ellas; o incluso, todas, por ejemplo: •
for ( ; exp2 ; exp3 ) • for ( exp1 ; ; ) • for ( ; ; )
Nota: para las dos ultimas expresiones se debe utilizar la instrucción break para salir del bucle o lazo de lo contrario se vuelve en un ciclo o lazo infinito
Evaluando condición
Incremento del contador
A continuación se describen diferentes tipos de asignaciones utilizadas comúnmente en una estructura repetitiva:
Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a=a+1), antes de usar este tipo de variable debe iniciarla en cero o uno (a=0 o a=1).
Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b), antes de usar este tipo de variable debe iniciarla en cero (a=0).
EJEMPLO Calcular el promedio de un alumno que tiene 5 calificaciones en la materia de Programación I.
•
La sentencia repetitiva WHILE es el segundo de tipo de iteraciones posibles en C#
•
La expresión es evaluada antes de iniciar el primer ciclo, por lo que, en caso de ser falsa esta condición, nunca entrara al ciclo y C# continuará con el resto del programa, ignorando todo el código que esta en el lazo o bucle while.
•
Por lo general, dentro del bloque de instrucciones, se modifican variables de la expresión condicional del while, para controlar así la duración de la iteración.
Sintaxis de una estructura WHILE:
Método 1: Para una sola Método 2: Para repetir un bloque de instrucción a repetir instrucciones while(condicion) instruccionUnica;
while(condicion) { / / b l o q u e d e i n s t r u c c i o n e s a r e p e t i r instruccion1; Instruccion2; . . . instruccionN; }
La sintaxis del lazo while expresada en palabras significa: “mientras condición de un resultado VERDADERO se ejecutará el bloque de instrucciones hasta la última instrucción N del bloque ”.
Haciendo uso del bucle while, vamos a ingresar 10 números y posteriormente se mostrará la suma y el promedio de estas cantidades.
Su sintaxis es la siguiente:
Método 1: Para una instrucción a repetir
sola Método 2: Para repetir un bloque de instrucciones
do instruccion Unica a repetir; while(condicion);
do { instruccion1; Instruccion2; . . instruccionN; } w h i l e ( c o n d i ci o n ) ;
Expresado en palabras, esto significa que: se ejecutará el bloque de instrucciones siempre la primera vez, independientemente del resultado de la condición, y luego, dependiendo del resultado de la expresión condicional colocada al final dentro del while si esta es VERDADERA, se repetirá la ejecución del bloque de instrucciones, de lo contrario se terminará el ciclo o
Realizamos un programa haciendo uso del switch case y también del bucle do while. La idea de la aplicación es que el menú permanezca activo (repitiéndose) hasta que el usuario seleccione la opción de salir del programa.
El lenguaje C# presenta dos instrucciones para controlar la ejecución de un ciclo/lazo/bucle, para así alterar la ejecución “normal” en cada ciclo. Estas dos instrucciones son: break y continue.
La instrucción BREAK Esta instrucción se utiliza para producir una salida inmediata de cualquier estructura de control, ya sea selectiva múltiple (como el switch), o para producir la salida anticipada de un ciclo o lazo de tipo while, do…while o for. La ejecución del programa continúa con la primera instrucción fuera de la estructura de control suspendida
Ejemplo
La instrucción CONTINUE Esta permite escapar el resto de las instrucciones del ciclo o lazo en ejecución, pero a diferencia de la instrucción break, lenguaje C# continúa con la siguiente iteración de ese ciclo. La condición de continuidad del ciclo se evalúa nuevamente después de ejecutar la instrucción CONTINUE, y si el resultado es VERDADERO el ciclo continúa, de lo contrario (si es FALSO) se termina.
Ejemplo
CONCLUSIONES SOBRE LAS ESTRUCTURAS REPETITIVAS •
El lazo for se suele utilizar cuando “se sabe cuantas veces se repetirá un bloque de instrucciones”, en cambio las 2 estructuras restantes (while) y (do-while) se utilizan cuando “no se conoce con exactitud cuantas veces se repetirá un bloque, sino que todo depende de una condición a evaluar al inicio o final de cada ciclo ”
•
Los lazos for y while son similares, porque ambos pueden repetir NINGUNA, UNA o VARIAS VECES un bloque de instrucciones. En otras palabras, podemos decir que: “en lenguaje C#, una estructura FOR es simplemente una manera abreviada de expresar una estructura WHILE”.
CONCLUSIONES SOBRE LAS ESTRUCTURAS REPETITIVAS Comparando ambas estructuras Sintaxis de un lazo FOR
La sintaxis FOR de la izquierda es equivalente a un WHILE así:
for(expresion1;expresion2; expresion3){ proposición1; proposición2; .............. }
expresion1; while(e x p r e s i o n 2){ proposicion1; proposicion2; .............. expresion3; }
CONCLUSIONES SOBRE LAS ESTRUCTURAS REPETITIVAS •
Las diferencias entre un lazo for y un while son las siguientes: •
En un FOR se pueden colocar 3 expresiones de control que le indican: 1. conteo inicial, 2. condición de paro del ciclo y 3. incremento de variable de conteo de ciclos.
•
Un while solo permite una expresión de control, la 2. condición de paro del ciclo. El conteo inicial hay que indicarlo ANTES DE ENTRAR AL CICLO y el incremento de la variable se debe realizar DENTRO DEL CUERPO del lazo. De otra manera, un lazo WHILE puede generar un “lazo infinito”.
CONCLUSIONES SOBRE LAS ESTRUCTURAS REPETITIVAS •
Una estructura WHILE o DO-WHILE se puede implementar con un menú de opciones y este mantenerse activo hasta que el usuario seleccione salir del programa