estructuras selectivas y de repetición

4.1 Repetir mientras
Estructuras de repetición
En la solución de algunos problemas es necesario ejecutar repetidas veces una instrucción o un conjunto de instrucciones. En algunos casos, el número de repeticiones se conoce con anterioridad, mientras que en otras depende de cálculos o estados de variables que se dan dentro de la solución del problema.
Para solucionar este tipo de problemas se utiliza un tipo de estructuras a las que se conocen como estructuras de repetición, bucles o ciclos.
Un ciclo consiste en un grupo de acciones que se ejecutan repetidas veces dependiendo del cumplimiento de una condición.
Ciclo Mientras

Este ciclo consiste en un conjunto de instrucciones que se repiten mientras se cumpla una condición. De igual manera que en los condicionales, la condición es evaluada y retorna un valor lógico, que puede ser verdadero o falso. En el caso del ciclo mientras las instrucciones contenidas en la estructura de repetición se ejecutarán solamente si al evaluar la condición se genera un valor verdadero; es decir, si la condición se cumple; en caso contrario, se ejecutará la instrucción que aparece después de Fin mientras.
A diferencia de otros ciclos, el ciclo mientras comienza evaluando la expresión condicional, si el resultado es verdadero se ejecutarán las instrucciones que estén entre el mientras y el fin mientras, al encontrarse la línea fin mientras se volverá a evaluar la condición, si se cumple se ejecutarán nuevamente las instrucciones y así sucesivamente hasta que la condición deje de cumplirse, en cuyo caso, el control del programa pasa a la línea que aparece después de fin mientras.
Si en la primera pasada por el ciclo mientras la condición no se cumple las instrucciones que están dentro del ciclo no se ejecutarán ni una sola vez.
En diagrama de Chapin (N-S), esta estructura tiene la presentación:
Ejemplos:
1. Un algoritmo para mostrar los números del 1 al 10.
Definición del problema
Mostrar listado de números de 1 a 10.
Análisis del problema
Datos de entrada: ninguno
Datos de salida: número
Proceso: ninguno
Diseño de la solución
Este es un algoritmo muy trivial pero permite revisar la aplicación de la estructura de repetición Mientras.
Lo primero a tener en cuenta es la declaración e inicialización de la variable: num = 1. En este caso no solo se está declarando una variable de tipo entero, sino también se está asignando un valor inicial, que será el primer número mostrado.
La condición o expresión relacional con la cual se implementa el ciclo es num <= 10, dado que num inicia en 1, la primera vez que se encuentra la instrucción mientras, la expresión es verdadera, por tanto se ejecutan las instrucciones que aparecen al interior del ciclo.
Después de haber mostrado el contenido de la variable num, éste cambia, se incrementa en 1.
2. Leer n números y encontrar el valor promedio, el mayor y el menor
Definición del problema
Encontrar el promedio, el mayor y el menor de varios números
Análisis del problema
Para solucionar este problema, lo primero que hay que plantear es cómo se sabrá cuando terminar la lectura de datos, ya que no se especifica la cantidad de números que serán ingresados y en el planteamiento del problema no se da ninguna condición que permita saber cuando terminar el ciclo. Este tipo de problemas es muy común.
Hay dos formas de abordar este ejercicio, la primera consiste en preguntar al usuario con cuantos números desea trabajar y guardar dicho valor en una variable que se utilizará para establecer el ciclo. La segunda consiste en preguntar después de leer cada dato, si se desea ingresar otro. En este ejercicio se utilizará la primera estrategia.
Datos de entrada: cantidad de números, número
Datos de salida: promedio, mayor y menor
Procesos:
suma = suma + número
promedio = suma / cantidad de números
Diseño de la solución
3. La serie Fibonacci comienza con los números: 0, 1, 1, 2, 3, 5, 8, 13, 21, … Se requiere un algoritmo para generar los primeros 10 números.
Definición del problema
Generar los 10 primeros números de la serie fibonacci
Análisis del problema
La serie fibonacci se genera a partir de dos valores iniciales que son el 0 y el 1, que al sumarse dan como resultado 1. El siguiente número se obtiene sumando el último número obtenido con el anterior, en este caso 1 + 1 = 2, luego será 2 + 1 = 3 y así sucesivamente.
Datos de entrada: ninguno
Datos de salida: serie fibonacci
Procesos:
a = 0
b = 1
f = a + b
Diseño de la solución

Estructura de repetición: la instrucción WHILE
La estructura de repetición o bucle hace posible la ejecución repetida de una o más instrucciones.
Pascal proporciona tres instrucciones que implementan la estructura de repetición: WHILE, FOR y REPEAT-UNTIL.
La instrucción WHILE se usa para implementar una estructura de repetición (bucle while) en la que la repetición se controla mediante una expresión booleana y continúa ejecutándose mientras esta expresión permanece cierta, finalizando cuando se hace falsa.
La ejecución repetida del cuerpo del bucle debe provocar en algún momento que el valor de la expresión booleana se haga falso; de lo contrario, la repetición continuara ejecutándose infinitamente.
Instrucción WHILE
Sintaxis:
WHILE expresión-booleana DO
instrucción
donde:
WHILE y DO son palabras reservadas;
instrucción es una instrucción Pascal.
Objetivo:
Se evalúa la expresión booleana y, si es cierta, se ejecuta la instrucción especificada, llamada el cuerpo del bucle. Entonces se vuelve a evaluar la expresión booleana y, si todavía es cierta, se ejecuta de nuevo el cuerpo. Este proceso se repite mientras la expresión booleana sea cierta. Cuando se hace falsa, finaliza la repetición.
Programa Escribir un programa que, para un valor Limite dado, devuelva el Numero positivo más pequeño para el que la suma
es mayor que Limite. El programa también deberá devolver el valor de dicha suma.
PROGRAM Calcular Sumatorio( input, output );
{*********************************************************************
       END {WHILE};
    writeln( ‘1 + … + ‘, Numero:1, ‘ = ‘, Suma:1, ‘ > ‘, Limite:1 )
END.
Ejemplo de ejecución:
Introduzca un valor al que exceda 1 + 2 + … + ?: 2
1 + … + 2 = 3 > 2
Introduzca un valor al que exceda 1 + 2 + … + ?: 1000
1 + … + 45 = 1035 > 1000
Introduzca un valor al que exceda 1 + 2 + … + ?: 10000
1 + … + 141 = 10011 > 10000

4.2 Repetir hasta

ESTRUCTURA DE REPETICION HASTA
Esta estructura es caracteristica de lenguajes como PASCAL, y su uso es muy sencillo, se especifica un valor de partida(logicamente) y un valor de parada(por eso es “hasta”) que es el valor limite hasta el cual se realizara cierta instruccion utilizando como base el valor de repeticion. Esta estructura es manejada por PASCAL como una estructura aparte, veamos de que forma:
PROGRAM Ciclo_hasta;
VAR
Numero : Integer;
BEGIN
   Numero := 1;
   REPEAT
      writeln (Numero);
      Numero := Numero + 1;
   UNTIL Numero = 50;
Esta estructura se encuentra en cualquier lenguaje de programacion, no necesariamente tal cual se muestra aqui, se utiliza un for o un while, simplemente se modifica la condicion para que no afecte al numero de repeticiones. Por ejemplo con un for:
for(a = 0; a<50; a++)
    printf(“Rafa\n”);
Esta sentencia se ejecutara 50 veces, osea hasta el 50.
Como conclusion decir que todo lo necesario para realizar repeteciones se encuentran con las estructuras while() y for(), solo es cuestion de saber estructurar las condiciones.
  
4.3 Repetir desde
Realiza la acción o conjunto de acciones, luego evalúa una condición, de resultar cierta vuelve a realizar la(s) acción(es). Cuando sea falsa se sale del ciclo. Su sintaxis es:
Do {
      Sentencia,
      .
      .
      .
} While ();
La diferencia fundamental, entre el ciclo while y do… while es que en este último, las sentencias se realizarán por lo menos una vez, en cambio, con while, solo se cumplirán mientras se cumpla la condición, lo cual puede ser nunca.
Ejemplo: Programa que imprima luna lista de números del 1 al 100(PARA JCREATOR)
1 class fibo {
2 public static void main(String args[]){
3 int n1=0;
4 do{ n1++;
5 System.out.println(n1+””);
6 }while(n1<100);











Comentarios

Entradas populares de este blog

UNIDAD 3 INTRODUCCIÓN A LA PROGRAMACIÓN DE UN LENGUAJE ESTRUCTURADO

3.2 Estructura básica de un programa