La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido.

Presentaciones similares


Presentación del tema: "Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido."— Transcripción de la presentación:

1 Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido de veces hasta que se cumpla una condición determinada  ITERACTIVE repite la acción un número indefinido de veces conocido antes que las repeticiones comiencen WHILE Repite un bloque de sentencias hasta que se cumple una determinada condición. DO Sentencia 1 ……… IF(exp_logica) EXIT …….. END DO

2 Sentencia 1 Sentencia i Sentencia j Sentencia l Exp. lógica falso EXIT El bloque de sentencias entre DO y END DO se ejecuta hasta que la expresión lógica resulta verdad y sale del ciclo y ejecuta la sentencia inmediatamente siguiente al END DO. Cada ciclo while debe tener un solo EXIT

3 1 Problema Calcular la media y la desviación estándar de una serie de la cual desconocemos el número de datos, pero sabemos que el fin de archivo viene marcado por un número negativo. 2 Entradas y Salidas Entrada: número desconocido de datos reales. Salida: media, desviación estándar número de datos. Diseño del algoritmo Leer, contar y acumular los datos de entrada de dos formas x y x 2 Imprimir los resultados Calcular la media y la desviación estándar de unas serie de T (K). El fin de archivo está indicado con un valor negativo.

4 comenzar Aplico ec 1 y ec 2 imprimo fin si Leo T T<o N =N+1 sT= sT+T sT2=sT2+ T 2 no

5 4 En lenguaje FORTRAN PROGRAM media_dstand ! Propósito: Calcular la media y la desviación estándar de una serie de datos positivos que finaliza con un valor negativo ! IMPLICIT NONE ! Diccionario INTEGER : : n=0 ! Número de datos REAL : : T ! Datos REAL : : sT = 0 ! Suma los datos REAL : : sT2 = 0 ! Suma los datos elevados al cuadrado REAL : : Tm =0 ! Valor medio REAL : : DS=0 ! desviación estándar ! DO ! Ciclo leo el próximo numero WRITE(*,*) “Entre el dato” READ(*,*) T WRITE(*,*) “ el dato es:”, T ! Pregunto si es negativo para saber si es el ultimo IF(T<0.) EXIT ! Acumulo los valores n=n+1 sT = sT+ T sT2= sT2 + T**2 END DO

6 ! Calculo la media y la desviación estándar Tm=sT/real(n) DS=sqrt( (real(n)* sT2- sT**2)/(real(n)*real(n-1))) ! Write (*,*) “la media de la serie es:”, Tm Write (*,*) “la desviación estándar de la serie es:”, DS Write (*,*) “el número de datos de la serie es:”, n ! END PROGRAM media_dstand 5 Verificación (prueba de escritorio) Si realizamos las cuentas para 3 valores 3,4 y 5 X m = 4S = 1 Introducir estos valores en la computadora y compara con los calculados previamente

7 DO WHILE DO while ( exp_logica) Sentencia 1 Sentencia 2 …… Sentencia n END DO Si la sentencia es lógica es verdad se ejecutan las sentencias 1 a n. Si es falsa se ejecuta la primer sentencia debajo del END DO La principal diferencia con el ciclo WHILE es que la salida puede estar en cualquier lugar del ciclo. LOOP ITERATIVO El DO ITERATIVO ejecute un bloque de sentencias un numero especificado de veces. DO indice= icomienzo, ifin, incremento Sentencia 1 Sentencia 2 CUERPO …… Sentencia n END DO

8 Índice→ es una variable entera usada como contador Icomienzo, ifin e incremento → parámetros enteros usados por el contador. Incremento es opcional y si no se lo pone se supone que es 1  NO SE PUEDE MODIFICAR EL INDICE DENTRO DEL CUERPO DEL DO  Se pueden realizar DO con contadores descendentes Ej DO i=10, 1, -1 …………. END DO  Es posible incluir IF dentro del cuerpo del DO Ej DO i=1, 10, 1 ………… IF(ipo>=5) EXIT …………. END DO WRITE (*,*) i  En muchas computadoras cuando el DO se completa el valor del índice queda indefinido. Sin embargo en otras adquiere el ifin + 1

9 CYCLE y EXIT Si CYCLE se ejecuta en el cuerpo de un DO la ejecución de esa iteración se interrumpe y regresa a la principio de cuerpo del DO con el valor siguiente del índice. Ej PROGRAM ver_CYCLE DO i=1,5 IF(i==3) CYCLE WRITE(*,*) i END DO WRITE(*,*) “Fin del ciclo” END PROGRAM ver_CYCLE La impresión es la siguiente: 1 2 4 5 Fin del ciclo

10 Si EXIT se ejecuta en el cuerpo de un DO, la ejecución de esa iteración se interrumpe y ejecuta la primer sentencia despues del END DO. Ej PROGRAM ver_EXIT DO i=1,5 IF(i==3) EXIT WRITE(*,*) i END DO WRITE(*,*) “Fin del ciclo” END PROGRAM ver_EXIT La impresión es la siguiente: 1 2 Fin del ciclo

11 [ nombre:] DO sentencia1 sentencia2 … IF(logical_exp1) CYCLE [nombre] sentencia3 sentencia4 … IF(logical_exp2) EXIT [nombre] sentencia5 sentencia6 … END DO [nombre] Nombre de los Ciclos

12 Ciclos anidados PROGRAM DO_anidado INTEGER : : i,j, producto DO i= 1,3 DO j=1,3 producto=i*j WRITE(*,*) i, ”*”, j, “=“, producto END DO END PROGRAM DO_anidado La impresión es la siguiente: 1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 2*3=6 3*1=3 3*2=6 3*3=9

13 DO E IF ANIDADOS Es posible anidar un DO dentro de un bloque IF o viceversa. PERO si el DO esta contenido en el IF debe estar totalmente contenido enteramente en una opción del IF Externo: IF(a<b) THEN …… Interno: DO I=1,3 ………. ELSE.............. END DO Interno ……. END IF Externo Externo: IF(a<b) THEN …… Interno: DO I=1,3 ………. END DO Interno.............. ELSE ……. END IF Externo ERROR CORRECTO

14 ASIGNACIONES CHARACTER Una expresión character puede ser asignada a una variable character Con una sentencia de asignación. Si la expresión es mas corta que la longitud de la variable character a la que fue asignada entonces la variable será completada con espacios en blanco (b) CHARACTER (len=3) long long = ‘p’ La variable long almacenará fbb character entonces se descartara el excedente. Cuando la expresión es mas larga que la longitud asignada a la variable character entonces se descartara el excedente. CHARACTER (len=3) long2 long2 = ‘pepe’ La variable long2 almacenara pep

15 “SUBTEXTOS” Para seleccionar una porción de una variable character y tratar la porción como si fuera independiente. Si var tiene una longitud de 6 caracteres ‘abcdef’ podemos utilizar solo un parte var(2:4), hacemos referencia las posiciones 2 a 4 de var es decir ‘bcd’. ¿Cuál será el contenido de las variables a b c cuando se ejecute el siguiente programa?  Línea 3: se le asignan a a=‘ABCDEFGHIJ’ y solamente tiene 8 lugares por lo tanto a=‘ABCDEFGH’  Línea 4: b=‘12345678’  Línea 5: c=a(5:7) ⇨ c= ‘EFGbbbbb’  Línea 6: b(7:8)=a(2:6) ⇨ b=‘123456BC'

16 OPERADOR DE CONCATENACIÓN (//) Es posible combinar dos o mas textos (concatenación) esto se realiza usando / / ( doble barra co un espacio entre ambas) C= ‘ABC45FGH’


Descargar ppt "Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido."

Presentaciones similares


Anuncios Google