ciclos (loops, repeticiones) permiten ejecutar una secuencia de sentencias mas de una vez. hay 2...

16
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

Upload: florencio-laguardia

Post on 28-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 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

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

Page 2: 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

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

Page 3: 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

1 Problema1 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 Salidas2 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 x2

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.

i

N

i

xN

x 1

1)1(

1

22

NN

xNN N

ii

x

xs

Page 4: 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

comenzar

Aplico ec 1 y ec 2

imprimo

fin

si

Leo T

T<o

N =N+1sT= sT+T

sT2=sT2+ T2

no

Page 5: 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

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! DiccionarioINTEGER : : n=0 ! Número de datosREAL : : T ! DatosREAL : : sT = 0 ! Suma los datosREAL : : sT2 = 0 ! Suma los datos elevados al cuadradoREAL : : Tm =0 ! Valor medioREAL : : 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**2END DO

Page 6: 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

! Calculo la media y la desviación estándarTm=sT/real(n)DS=sqrt( (real(n)* sT2- sT**2)/(real(n)*real(n-1)))!Write (*,*) “la media de la serie es:”, TmWrite (*,*) “la desviación estándar de la serie es:”, DSWrite (*,*) “el número de datos de la serie es:”, n!END PROGRAM media_dstand

5 Verificación (prueba de escritorio)5 Verificación (prueba de escritorio)

Si realizamos las cuentas para 3 valores 3,4 y 5

Xm = 4 S = 1

Introducir estos valores en la computadora y compara con los calculados previamente

Page 7: 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

DO WHILEDO WHILEDO while ( exp_logica) Sentencia 1 Sentencia 2 …… Sentencia nEND 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 DOLa principal diferencia con el ciclo WHILE es que la salida puede estar en cualquier lugar del ciclo.

LOOP ITERATIVOLOOP ITERATIVOEl DO ITERATIVO ejecute un bloque de sentencias un numero especificado de veces.DO indice= icomienzo, ifin, incremento Sentencia 1 Sentencia 2 CUERPO …… Sentencia nEND DO

Page 8: 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

Índice→ es una variable entera usada como contadorIcomienzo, 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 descendentesEj

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 DOWRITE (*,*) i

En muchas computadoras cuando el DO se completa el valor del índice queda indefinido. Sin embargo en otras adquiere el ifin + 1

Page 9: 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

CYCLE y EXITCYCLE y EXITSi 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(*,*) iEND DOWRITE(*,*) “Fin del ciclo”END PROGRAM ver_CYCLE

La impresión es la siguiente:1245Fin del ciclo

Page 10: 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

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(*,*) iEND DOWRITE(*,*) “Fin del ciclo”END PROGRAM ver_EXIT

La impresión es la siguiente:12Fin del ciclo

Page 11: 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

[nombre:] DO sentencia1 sentencia2 …IF(logical_exp1) CYCLE [nombre] sentencia3 sentencia4 … IF(logical_exp2) EXIT [nombre]

sentencia5 sentencia6 …END DO [nombre]

Nombre de los CiclosNombre de los Ciclos

Page 12: 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

Ciclos anidadosCiclos anidados

PROGRAM DO_anidadoINTEGER : : i,j, productoDO i= 1,3 DO j=1,3 producto=i*j WRITE(*,*) i, ”*”, j, “=“, producto END DOEND DOEND PROGRAM DO_anidado

La impresión es la siguiente:1*1=11*2=21*3=32*1=22*2=42*3=63*1=33*2=63*3=9

Page 13: 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

DO E IF ANIDADOSDO E IF ANIDADOS

Es posible anidar un DO dentro de un bloque IF o viceversa. Es posible anidar un DO dentro de un bloque IF o viceversa. PEROPERO si el DO si el DO esta contenido en el IF debe estar totalmente contenido enteramente en una esta contenido en el IF debe estar totalmente contenido enteramente en una opción del IFopció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

Page 14: 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

CHARACTER (len=3) longCHARACTER (len=3) longlong = ‘p’long = ‘p’

CHARACTER (len=3) long2CHARACTER (len=3) long2long2 = ‘pepe’long2 = ‘pepe’

La variable long2 almacenara pep

Page 15: 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

““SUBTEXTOS”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?

Page 16: 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

OPERADOR DE CONCATENACIÓN (//)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’