La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Control de Flujo.

Presentaciones similares


Presentación del tema: "Control de Flujo."— Transcripción de la presentación:

1 Control de Flujo

2 Evaluación por Corto Circuito de expresiones booleanas
(and a b): si a es falso, no necesita ver b. (or a b): si a es cierto, no necesita ver b. Un compilador que genera código que salta la evaluación de b en esos casos usa evaluación por corto circuito (implementada como optimización de código). Algunos lenguajes ofrecen tanto evaluación regular como por corto circuito.

3 Instrucciones Case-Switch.
IF i = 1 THEN clause_A ELSIF i IN 2, 7 THEN clause_B ELSIF i IN THEN clause_C ELSIF (i = 10) THEN clause_D ELSE clause_E END CASE ... 1: clause_A 2,7: clause_B 3..5: clause_C 10: clause_D ELSE clause_E END

4 Instrucciones Case-Switch.
Equivalente a las instrucciones if/then/else. Motivación principal: generar código más eficiente. Calcula la dirección a la cuál va a saltar, basándose en el valor de una expresión: Tabla de salto. Prueba secuencial. Tabla de Hash. Búsqueda Binaria. El compilador elige el método luego de ver todos los casos.

5 Instrucciones Case-Switch.
Detalles Sintácticos. Están permitidos los rangos en las etiquetas? Hay una cláusula por defecto incluida? Hay casos vacíos? Fall through comparado con break.

6 Iteración Lazo controlado por enumeración.
Se ejecuta una vez por cada valor en un rango finito dado. Se conoce el número de iteraciones por adelantado. Lazo controlado lógicamente. Se ejecuta hasta que una condición booleana cambia de valor. La condición booleana depende de valores que cambian en el cuerpo del lazo.

7 Lazo controlado por enumeración.
La mayoría de los lenguajes prohiben cambios al índice del lazo en el cuerpo del mismo. No se ejecutan si los bordes son vacíos. El índice es una variable local del lazo (no está definido fuera).

8 Lazos Controlados Lógicamente
Prueba antes del lazo: while condición do instrucción Prueba después del lazo: repeat instrucción until condición do instrucción while condición (la instrucción es ejecutada al menos una vez) Prueba durante el lazo:

9 Prueba a la mitad o “lazo y medio”
loop instrucción when condición exit instrucción when condición exit end (Modula 1) loop instrucción if condición then exit end instrucción end (Modula 2)

10 Interrupción y Continuación Etiquetada.
Puede ser seguida por una etiqueta que especifica: Un lazo (continuación) Una instrucción (interrupción) Break sin etiqueta se sale del for, while, do o switch más cercano. Break con etiqueta se sale de la instrucción etiquetada. Continue sin etiqueta: se salta el resto de la iteración actual. Continue con etiqueta: salta al final del cuerpo del lazo etiquetado. Las cláusulas Finally son ejecutadas en ambos casos.

11 Lazos de Combinación. Las siguientes son idénticas en Algol 60:
for i := 1, 3, 5, 7, 9 do ... for i:= 1 step 2 until 10 do ... for i := 1, i+2 while i<10 do ... Las siguientes son idénticas (Modula-2 y C): FOR i := first TO last BY step DO ... END for (i = first; i <= last; i += step) { ... } i = first; while (i <= last) { i += step; }


Descargar ppt "Control de Flujo."

Presentaciones similares


Anuncios Google