domingo, 24 de marzo de 2019

DIAGRAMAS DE FLUJO - ENTREGA 06

ESTRUCTURAS DE CONTROL REPETITIVAS (PARTE IV)

Continuando con las estructuras de control repetitivas, este post está dedicado a la estructura repeat-until (repetir-hasta).

ESTRUCTURA REPETITIVA repeat-until

Esta estructura es otra de las alternativas cuando hablamos de ciclos o bucles, aunque a mi parecer la menos utilizada, recordemos que el while-do puede hacer lo mismo que un for y cualquier repetición de instrucciones bajo una condición que no sólo sea controlado por un contador, sino también por una comparación con cualquier tipo de datos (númericos, alfanuméricos, booleanos, cadenas, objetos, etc.) como interruptores o banderas, entradas controladas por el usuario, etc., pues todo lo que hace un while-do lo hace el repeat-until, con la diferencia de que este último, primero ejecuta el conjunto de instrucciones y después evalúa la condición.

La condición se comprueba al final del bucle por la cual la nube de instrucciones se pueden ejecutar una o más veces.


Representación gráfica



La estructura repetitiva repeat-until cuenta con una variable inicial de cualquier tipo de datos, luego en la nube de instrucciones dentro del bucle cabe aclarar que esta variable inicial tiene que tomar diferentes valores para que en algún momento cumpla la condición del bucle y sea finito, finalmente esta variable inicial participa en la condición del bucle repeat-until.

No me canso de repetir: "Una estructura repetitiva tiene que ser finita, sino no habría lógica al realizar un programa donde no muestre un resultado específico".

Bucle repeat-until controlado por contador

Cuando usamos el bucle repeat-until controlado por un contador, necesitamos la variable contador o variable índice inicializado con un valor e indicar hasta donde va a contar (condición del bucle), ya sea incrementándose o decrementándose, este incremento o decremento lo llamo intervalo.





Se utiliza un bucle controlado por contador cuando queremos ejecutar un número de veces un conjunto de instrucciones, con la diferencia que esta estructura ejecuta primero las instrucciones y después la condición.


Bucle repeat-until controlado por interruptor o bandera

Cuando usamos el bucle repeat-until controlado por un interruptor, necesitamos la variable bandera la cual es un valor booleano inicializado con un valor true(verdadero o uno) o false(falso o cero), luego ejecuta un conjunto de instrucciones hasta que cumpla la condición de que la variable bandera sea verdadera o falsa, esta variable bandera en algún momento de la ejecución del programa la condición cambiará a otro estado por una estructura condicional if.




Cabe aclarar que la variable bandera podemos inicializar en falso, lo mismo en la comparación (condición) y en el cambio de estado obviamente a verdadero.

Se utiliza un bucle controlado por interruptor o bandera cuando queremos ejecutar un conjunto de instrucciones tantas veces sea posible hasta que cumpla la condición que la variable bandera sea igual al valor que nosotros le asignemos. Cabe mencionar que este bucle controlado por interruptor no se puede implementar con la estructura for.

Bucle repeat-until controlado por el usuario

Cuando usamos el bucle repeat-until controlado por un usuario, necesitamos la variable centinela y un valor a comparar que le llamaremos en este caso valorAComparar, ya sea númeroscadenas de caracterescaracteres y otros, pero no booleanos sino ya sería controlado por interruptor o bandera, la variable centinela es un valor especial usado para señalar el final de la ejecución del bucle, este(estos) valor(es) elegido(s) es necesario que sean distintos a un posible rango de valores para que se pueda utilizar para señalar el final del bucle, en otras palabras, no debe pertenecer al rango de valores válidos.





Se utiliza un bucle controlado por el usuario cuando queremos ejecutar un conjunto de instrucciones tantas veces sea posible hasta que cumpla la condición de que variableAComparar sea igual a la variable centinela, de lo contrario el bucle sigue ejecutándose. Cabe mencionar que este bucle controlado por el usuario no se puede implementar con la estructura for.

EJEMPLOS DE ALGORITMOS CON SUS RESPECTIVOS DIAGRAMAS DE FLUJO

Implementaremos a continuación algoritmos de contadores, acumuladores, interruptores o banderas, controlados por el usuario y otros más utilizando la estructura repetitiva while.

Ejercicio 001.
Realizar un algoritmo que permita imprimir n veces en pantalla cualquier mensaje ingresado por teclado. (bucle controlado por contador)



Ejercicio 002.
Realizar un algoritmo que permita contar desde un número m hasta otro número n sin importar cuál de los dos sea mayor, con un intervalo ingresado por el usuario. (bucle controlado por contador)




Ejercicio 003.
Determinar si un número ingresado por teclado es primo. Elaborar el diagrama de flujo. (bucle controlado por contador y por interruptor).



La función rc([número]) es una función que viene predefinida en el programa del PseInt y devuelve la raíz cuadrada de un número.

Para tomar en cuenta, un número es PRIMO si es natural y es divisible entre dos números: el 1 y el mismo número. El número 1 no es primo porque solamente es divisible por sí mismo.

Ejercicio 004.
Confeccionar un algoritmo que permita ingresar varios números hasta ingresar un número que sea múltiplo de 3 y muestre la suma de tales números.





Ejercicio 005.
Desarrollar un algoritmo que ingrese diversos números cualesquiera, siempre y cuando el programa solicite al usuario si quiere seguir ingresando más números y muestre el total acumulado de los numero ingresados por teclado. (bucle controlado por usuario)


Ejercicio 006.
Escribir un programa para calcular la potencia de dos números (base y exponente), éstos serán ingresados por el usuario y positivos.




Ejercicio 007.
Elaborar un diagrama de flujo que permita mostrar la cantidad de dígitos que tiene un número natural ingresado por teclado.


La función trunc([número_real]) es una función que viene predefinida en el programa del PseInt y devuelve la parte entera del número real, es decir, trunca el número a su parte entera.

Ejercicio 008.
Desarrollar un algoritmo que muestre n términos de la serie Fibonacci.



Ejercicio 009.
Elaborar un DFD para calcular el factorial de un número entero n.



Como siempre lo hago en cada uno de mis post, ofrezco mi ayuda por si quieren que les resuelva algunos algoritmos, sólo solicítenlo que yo responderé.

1 comentario: