Click here to load reader
Upload
ajrodriguez
View
802
Download
1
Embed Size (px)
DESCRIPTION
Taller Sentencia IF y ELSE
Citation preview
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
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.
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;
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.