"Capataces y Obreros: Estruc. de Program.: Parte III - Manos a la Obra: Potencia a Nuestros Algoritmos !!!"

Day 2,834, 05:02 Published in Argentina Argentina by Gerardo Antonio Uroz
Demos Potencia a Nuestros Algoritmos

Introducción

Este artículo forma parte de una trilogía dedicada a la Resolución de Problemas utilizando computadoras, desde un punto de Vista Lógico.

Esto no quiere decir solo desde un punto de vista teórico, sino desde un punto de vista en el que la solución se pueda implementar en cualquier lenguaje de programación.


Los dos artículos anteriores nos introdujeron en las herramientas necesarias para construir un algoritmo, las estructuras secuenciales que nos dicen paso a paso como solucionar un problema y las estructuras condicionales que hacen que el programa pueda decidir que camino tomar ante las diferentes alternativas que se pueden plantear al resolver un problema.


Estructuras Repetitivas

Estas estructuras nos permiten ejecutar varias veces un conjunto de instrucciones secuenciales, condicionales u otras repetitivas, basadas en algún criterio de repetición.

El conjunto de instrucciones que se ejecuta repetidamente cierto número de veces, se llama Ciclo, Bucle o Lazo.

Iteración es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle.

Fases de un Programa Cíclico :

1. Entrada de datos e instrucciones previas

2. Lazo o bucle

3. Instrucciones finales o resto del proceso

4. Salida de resultado



En el flujograma anterior, observa que la flecha que se regresa hacia arriba nos está indicando que hay que volver a evaluar la expresión. En ese caso como el bucle es infinito, no se tiene una condición para terminar y se estará haciendo siempre. En el siguiente ejemplo, ya se agregó una condición, la cual nos permitirá finalizar la ejecución del bucle en el caso en que la condición se cumpla.




Bucles Repetitivos:

A continuación, te muestro tres diseños de estructuras cíclicas: las independientes son cuando los bucles se realiza uno primero hasta que se cumple la condición y solo en ese caso se entra al bucle B.

En los ciclos anidados, al entrar a una estructura de repetición, dentro de ella se encuentra otra. La más interna se termina de realizar y se continúa con la externa hasta que la condición se cumple.

En los bucles cruzados, los cuales no son convenientes de utilizar, se tiene que iniciamos un bucle y no se ha terminado cuando empezamos otro, luego utilizamos estructuras goto (saltos) para pasar al bucle externo y se quedan entrelazados.


Esto puede ocasionar que el programa pierda el control de cuál proceso se está ejecutando y podamos obtener resultados erróneos. Veamos gráficamente el diseño de estas tres formas cíclicas:




Un criterios puede ser que mientras se cumpla una determinada condición se ejecute un conjunto de instrucciones. Para eso existe la estructura mientras.


Un link con videos:

Video 1

Video 2


Estructuras:

Estructura Mientras:

Se llama Mientras a la estructura algorítmica que se ejecuta mientras la condición evaluada resulte verdadera. Se evalúa la expresión booleana y, si es verdadera, 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 de evaluación de la expresión booleana y ejecución del cuerpo se repite mientras la expresión sea cierta.

Cuando se hace falsa, finaliza la repetición. En la lección anterior iniciamos con las estructuras repetitivas. La estructura While y la estructura Repeat, se conocen como Iterativas. Se usan cuando no se conoce con anticipación el número de veces que se ejecutará la acción.

EJEMPLO:

Hacer un algoritmo que lea 5 números y determine la suma entre ellos.




Corrida del Algoritmo




Aqui dejo link con videos de la Estructura Mientras:


Video 1 ... !!!

Video 2 ... !!!

Video 3 ... !!!



Estructura Para:

En pseudocódigo, para escribir una instrucción repetitiva para se utiliza la sintaxis:


para ← hasta
[ incremento ] hacer

fin_para

En una instrucción repetitiva para, siempre se utiliza una a la que se debe asignar un . En cada iteración del bucle, al valor de la se le suma el y, cuando la supera el , el bucle finaliza.

En consecuencia, cuando el flujo de un algoritmo llega a un bucle para, en primer lugar, se asigna el a la y, a partir de ese instante, existen dos posibilidades:

Si el valor de la es mayor que el , entonces no se ejecuta el bloque de instrucciones, y el bucle para finaliza sin realizar ninguna iteración.

Si el valor de la es menor o igual que el , entonces, se ejecuta el bloque de instrucciones y, después, se le suma el a la , volviéndose, de nuevo, a comparar el valor de la con el . Y así sucesivamente, hasta que, el valor de la sea mayor que el .

En resumen, una instrucción repetitiva para permite ejecutar, repetidamente, un bloque de instrucciones, en base a un valor inicial y a un valor final.

El bucle para es ideal usarlo cuando, de antemano, ya se sabe el número de veces (iteraciones) que tiene que ejecutarse un determinado bloque de instrucciones.

El bucle para es una variante del bucle mientras y, al igual que éste, puede iterar cero o más veces. Sin embargo, el bucle para sólo se suele usar cuando se conoce el número exacto de veces que tiene que iterar el bucle. Éste es el caso del problema planteado en el ejemplo del apartado "Variable Contador", en el cual, se sabe de antemano que el bucle tiene que iterar, exactamente, diez veces.

Ejemplo 1: Por tanto, dicho problema, se puede resolver con una instrucción repetitiva para de la siguiente forma:
algoritmo Numeros_del_1_al_10

variables
entero contador

inicio
para contador ← 1 hasta 10 incremento 1 hacer
escribir( contador )
fin_para
fin

Algoritmo en PseInt:




Corrida:




Aqui dejo link sobre estructura Para:

Video 1 ... !

Video 2 ... !

Video 3 ... !



Estructura Repetir:


Esta estructura iterativa representa la ejecución repetitiva de una o más acciones.

Esta estructura responde a dos formas diferentes, dependiendo de como se la implemente en el lenguaje de programación.

Está la estructura:

Repetir
.
.
Bloque de Instrucciones
.
Hasta que (Condición)

En este caso el bloque de instucciones se va a repetir hasta que la condición sea verdadera.

Do
.
.
Bloque de instrucciones
.
Until (Condición)


La otra forma es:

Hacer
.
.
Bloque de Instrucciones
.
Mientras (Condición)

Esta forma también ejecuta el bloque de instrucciones, pero la condición es diferente, mientras la Condición se cumpla.

do
.
.
Bloque de Instrucciones
.
While (Condicion)

El número de veces que se ejecuta el conjunto de sentencias depende del valor de verdad de una condición. La condición que permitirá realizar las iteraciones se evalúa al final del ciclo.

Las instrucciones que se encuentran dentro del núcleo se repiten hasta que se se cumpla la condición ó hasta que se deje de cumplir la condición..


La instrucción Hacer ... Repetir Mientras se usa para repetir un proceso que necesariamente se ejecuta al menos una vez.

Con esta estructura hay que tener cuidado y ver bien en que lenguaje se van a generar los programas y construir la estructura lógica correcta.

Yo voy a hacer los ejemplos con Repertir - Hasta

Ejemplo PseInt:



Este es el resultado de la ejecución:




Aqui les dejo un link con Video:

Video 1 ... !

Video 2 ... !


Bueno, hasta aquí las estructuras de programación básicas.

Con esta Trilogía hemos completado el apunte sobre la herramientas para desarrollar algoritmos y con esto poder resolver Problemas.

Los ejemplos son lo suficiente sencillos como para que se puedan entender rápidamente y en este paso no amerita resolver problemas complejos.


En las siguientes entregas veremos:

1. Formas válidas de combinar estas estructuras.

2. Cómo resolver problemas más complejos con estas estructuras.

3. Tipos de Datos complejos: string de caractertes, fechas, lógicos, etc.

4. Tipos de datos abstractos: vectores y matrices, secuencias, colas, listas.

Espero este curso les sea de utilidad.

Muchas Gracias por seguirlo.

Gerardo A. URoz