4

Click here to load reader

08 Logica Programacion

Embed Size (px)

DESCRIPTION

Taller Sentencia IF y ELSE

Citation preview

Page 1: 08 Logica Programacion

Curso de Lógica y Programación

Tema 4: Ejecución condicional de instrucciones

María Claudia Lara

Universidad de San Buenaventura CaliPrimer Semestre de 2008

Page 2: 08 Logica Programacion

Ejecución condicional de instrucciones 2

Transformaciones para simplificar instrucciones IF (1) Estas dos instrucciones IF/THEN/ELSE, aunque difieren en cuanto a su

forma, ejecutan funciones equivalentes.

Cuando dos instrucciones hacen que Karel ejecute exactamente las mismas acciones, se les llama equivalentes en ejecución.

IF front-is-clear THEN begin move;endELSEbegin salta-la-valla;end;

IF front-is-blocked THENbegin salta-la-valla;endELSEbegin move;end;

En general se puede crear una instrucción IF/THEN/ELSE equivalente en ejecución a partir de otra reemplazando <Prueba> por su opuesto y después

intercambiando las cláusulas THEN por ELSE. A esta transformación se le denomina inversión de prueba.

Page 3: 08 Logica Programacion

Ejecución condicional de instrucciones 3

Transformaciones para simplificar instrucciones IF (2) Suponga que se ha comenzado a escribir una instrucción IF y se enfrenta

al dilema de que no se desea que Karel haga nada especial cuando el frente esté despejado, pero cuando el frente esté bloqueado se desea que ejecute <instrucción>. Quizá se desee omitir la cláusula THEN, pero al hacerlo se provocará un error de sintaxis (Karel no entiende una instrucción IF/ELSE). La solución al problema se ilustra a continuación.

IF front-is-clear THENbegin no-haga-nada;end ELSEbegin <instrucción>;end;

IF front-is-blocked THENbegin <instrucción>;end;

Page 4: 08 Logica Programacion

Ejecución condicional de instrucciones 4

Transformaciones para simplificar instrucciones IF (3) La segunda transformación que se estudia es la factorización desde abajo. La instrucción IF/THEN/ELSE de la izquierda es equivalente en ejecución al

fragmento del programa que se encuentra a la derecha.

IF <prueba> THENbegin <instrucción-1>; <instrucción-3>; end ELSEbegin <instrucción-2>; <instrucción-3>; end;

IF <prueba> THENbegin <instrucción-1>;endELSEbegin <instrucción-2>;end;<instrucción-3>;

La <instrucción3> se ejecuta en el IF de la izquierda sin importar si <prueba> es cierto o falso, por lo que se puede omitir de cada una de las cláusulas y poner inmediatamente después de la instrucción IF/THEN/ELSE completa.Se pueden factorizar todas las instrucciones comunes y aún así preservar la equivalencia en ejecución.