2. Estructura de control en la que la
PC nos muestrael como programar
si es que nosotros queremos
programar un robot b-bot , en este
se puede indicar el modo en la que
se puede indicar el número mínimo
de iteraciones.
Está disponible en casi todos los
lenguajes de programación
imperativos.
3. Elementos del bucle
• Variable de control':prácticamente
un mandato impuestopor el uso
habitual es utilizar la letra i Iterador
como variable de control,o bien sus
sucesoras en caso de bucles
anidados.
• Inicialización de la variable de
control: en pseudolenguaje se pide
explicitarlo (es la sección :=
ValorInicial), sin embargo, otros
lenguajes más permisivos como C no
lo requieren de forma obligatoria.
4. • Condiciónde control:en pseudolenguaje se ve
representadopor el valor final que puede tomar
la variable de control(la sección A ValorFinal).
En C es el segundoparámetroy puede ser
cualquiercondición(ni siquiera es obligación
que esté la variable de control, aunque una vez
más, estono se considera una buena práctica).
Incremento: en pseudolenguaje se
toma por defecto el valor 1, aunque
puede explicitarsepor medio de la
sentencia PASO = ValorPaso
cualquier número entero (léase
bien entero, o sea que
técnicamente podemos
decrementar).En C es el último
parámetro.
5. Su uso principal se orienta a los vectores, pudiendo modificar, agregar,
eliminar o consultar datos que se encuentren según el índice. Por esto
último, una condición mínima del vector es que debe ser ordenado, por
que si se intenta leer un dato inexistente, esto genera un error de
programación.
6. La principal diferencia de un bucle
PARA con respectoa los bucles
MIENTRAS Y REPETIR, es que puede
determinarse al comienzodel bucle
cuántas veces se iterará el mismo, lo
cual muchas veces puede redundar en
una optimizacióndel código por parte
de los compiladores.
PARA i=0 a CantidadRegistros(tabla) -
1, PASO = 1
PróximoRegistro(tabla)
HacerAlgo(ElementoActual(tabla))
FIN PARA
7. Ejemplo de PARA en pseudocódigo
Donde variablecontrol, valorinicial,
valorfinal y paso son enteros. La(s)
instrucción(es)del cuerpose
ejecutará(n)(valorfinal - valorinicial +
1) veces,o sea que va desde
valorinicial a valorfinal inclusive.
Ejemplo en C++
#include
<iostream>
#include <conio.h>
using namespace
std;
int vector[10], i;
for(i=0; i<10; i++)
{
vector[i] = i;
cout<< i<<endl;
}
getch();
return 0;
}
8. En la definición del for, tenemos que la
variable de control i se inicializa en un
valor 0, luego se entrega la condición
de control que debe ser falsa durante
su ejecución, para completar el ciclo; y
por último, tenemos el incrementador
en una unidad.
Si por ejemplo en la condición
colocamos i < 11, entonces el ciclo for
se ejecutará desde [0...10], lo cual, al
intentar acceder al elemento
vector[10], esto generará error, ya que
el vector (por definición) va desde
[0..(n-1)].
Cualquiera de los
componentes en el
paréntesis se puede
omitir, pero los
separadores punto y
coma deben aparecer
siempre. El resultado es
un bucle infinito.
9. Bucle Por Cada (For Each)
Este bucle es una evolucióndel
concepto del bucle para en algunos
lenguajes.Se utiliza para recorrer
estructuras repetitivas de datos de
forma más simple y ágil.El bucle for
each puede describirse genéricamente
(en pseudolenguaje) de la siguiente
manera
POR CADAelemento DE tipo
EN conjuntoHACER
Cuerpo
FIN FOR EACH
10. • Elemento:es el nombre de la
variable u objetoque toma el
elementoiteradoen el cuerpo del
bucle.
• Tipo de Dato:es el tipo de variable o
la clase a la que pertenece el objeto
que se quiere iterar.
• Conjunto: es la estructura de datos
que se quiere iterar.El uso más
típico es con vectores o -en
programaciónorientada a objetos-
clases del tipoColección.
• Cuerpo: es lo que se hará en cada
iteración, pueden ser una o más
instrucciones. Si bien no se impone
una obligaciónal respecto,lo más
común es que en este Cuerpo exista
alguna operaciónsobre el elemento
iterado.
Esta estructura surge
como una innovaciónen
los lenguajes para
permitir un código más
ágil y legible en una
situación que es una de
las principales causas del
uso del bucle PARA:
Con el bucle POR CADA
esto se reduce a:
POR CADA x DE tipo
EN Vector HACER
x =
AlgunaOperación(x)
FIN PARA
11. Las ventajas de utilizar la estructura
POR CADA son las siguientes:
1. No es necesariollamar a una
función que obtenga el tamañodel
vector
2. No es necesarioutilizar la incómoda
notación de sub-índices para
referirnos al valoren cuestión,
sobre todoteniendoen cuenta que
si utilizamos esta estructura es
porque no necesitamos el valor del
índice.
3. Nos permite hacer un chequeo en
tiempo de compilaciónsobre el tipo
de dato que representa el elemento.
12. El bucle POR cadao no es un sustituto
del PARA, es una mejora para el muy
frecuente caso anteriormente
mencionado. La diferencia esencial
entre el bucle PARA y el POR CADA es
que en el primeroguía su iteraciónpor
una variable que se incrementa hasta
cierto punto de corte; en cambio en el
segundo lo que guía la iteración es el
recorrido de todos los elementos de un
vector.
Ciertamente podemos transformar cualquier POR CADA en un PARA,
pero transformar un bucle PARA en un bucle POR CADA requeriría
inicializar y controlar manualmente las variables de control, con lo
cual se perdería nuevamente legibilidad en el código. Por tanto,
cuando en un lenguaje se nos da la posibilidad de utilizar ambas
estructuras
13. La eleccióndel POR CADA debe
hacerse en aquellos casos para los que
fue pensado: aplicar la misma
operación a todos los elementos de un
vector sin importar el orden en que se
hagan;si bien no es necesario que la
variable elemento sea utilizada en el
cuerpo del bucle, su ausencia denota
con seguridad una mala elecciónde
estructura de control.