Estructura repetitivas

Solo disponible en BuenasTareas
  • Páginas : 5 (1231 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de marzo de 2011
Leer documento completo
Vista previa del texto
3 ESTRUCTURAS DE CONTROL REPETITIVAS. BUCLES 3.1 Estructuras de repetición
• •

Una estructura de repetición, también llamada lazo o bucle, hace posible la ejecución repetida de secciones específicas de código. Hay dos tipos básicos de estructuras de repetición, cuya diferencia principal radica en cómo se controlan las mismas:


Repetición controlada por contador o bucle DO iterativo. Conesta estructura, un bloque de sentencias se ejecuta una vez para cada uno de los valores que va tomando un contador. Se ejecuta un número específico de veces, siendo el número de repeticiones conocido antes de que empiece la ejecución de tal bucle. Repetición controlada por expresión lógica o bucle WHILE. En este caso, un bloque de sentencias se ejecuta un número indefinido de veces, hasta que sesatisface alguna condición establecida por el usuario, lo cual desde el punto de vista de la programación, equivale a que una cierta expresión lógica tome el valor .TRUE..



3.2 Repetición controlada por contador o bucle DO
iterativo


Esta estructura ejecuta un bloque de sentencias un específico de veces. Se construye de la siguiente manera: sentencia_1 [sentencia_2] … Cuerpo

númeroDO indice = inicio, fin [, paso]

END DO
• •

Índice es una variable entera que se usa como contador del bucle. Inicio, fin y paso son cantidades enteras y constituyen los parámetros del índice del bucle. Controlan los valores de la variable índice durante la ejecución. Pueden ser constantes, variables o expresiones enteras.



Las sentencias entre la sentencia DO y la sentencia ENDDO se llaman cuerpo del bucle. Para mejorar la lectura del código es recomendable endentar el cuerpo del bucle con dos o más espacios.
Inicio marca el valor inicial que toma índice cuando comienza la ejecución del bucle DO. Fin marca el valor final que puede tomar índice .

• •

55

Estructuras de control repetitivas. Bucles


Paso indica el incremento con que índice es modificadodespués de cada ejecución del bucle DO. Es un parámetro opcional, cuando no aparece, su valor por defecto es 1. Puede ser positivo o negativo.



Cuando se ejecuta una sentencia DO, tienen lugar la secuencia de operaciones siguiente:


Si los parámetros del índice del bucle son expresiones enteras se calculan sus valores antes del comienzo de la ejecución del bucle. Se asigna el valor inicioa la variable de control índice . Si la condición índice * paso ≤ fin * paso , el programa ejecuta las sentencias del cuerpo del bucle. Después, se recalcula el valor de índice como : índice = índice + paso . Si aún se cumple la condición anterior índice * paso ≤ fin * paso , el programa ejecuta otra vez las sentencias del cuerpo del bucle. Se repite el punto anterior hasta que deja de cumplirsela condición de desigualdad dada , en cuyo caso la ejecución salta a la primera sentencia siguiente a la sentencia END DO. El número de iteraciones que se llevan a cabo en el bucle DO se puede calcular a partir de la siguiente ecuación:
nº iteraciones = fin − inicio + paso Ec uac ió n 3-1 paso











Precauciones:


No está permitido modificar el valor de índice en elcuerpo del bucle. La mayoría de los compiladores Fortran suelen reconocer este problema y generan un error en tiempo de compilación si se intenta modificar su valor. Caso de que el compilador no detectara este problema, se podría dar el caso de un bucle infinito. La única manera de parar la ejecución de un programa cuando éste contiene un bucle infinito es matar el programa pulsando control +C. Enmuchos computadores, el valor de índice después de la finalización normal del bucle DO, está definido por el siguiente valor asignado como resultado del incremento. Esto es lo que ocurre en el compilador de la Salford FTN95. Sin embargo, su valor es indefinido oficialmente en el Fortran estándar, de modo que algunos compiladores pueden producir resultados diferentes. Por lo tanto, no conviene nunca...
tracking img