1. Curso de Lógica y Programación Tema 4: Ejecución condicional de instrucciones María Claudia Lara Universidad de San Buenaventura Cali Primer Semestre de 2008
2.
3.
4.
5. Instrucción IF/THEN/ELSE (4) Ahora se verá una nueva tarea que, convenientemente, implica la instrucción IF/THEN/ELSE. Supóngase que se desea programar a Karel para que corra una carrera de obstáculos de una milla, en donde secciones verticales de pared representan las vallas. Se sabe que las vallas tienen una altura de tan sólo una cuadra, pero pueden estar colocadas al azar entre cualesquiera dos esquinas en el curso de la carrera. Uno de los diversos cursos para esta carrera se ilustra en la figura. Situación inicial Situación final y trayectoria seguida por Karel
6. Instrucción IF/THEN/ELSE (5) beginning-of-execution corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; turnoff; end-of-execution define-new-instruction corre-a-zancadas as begin IF front-is-clear THEN begin move; end ELSE begin brinca-la-valla; end; end; define-new-instruction brinca-la-valla as begin brinca; move; baja; end; define-new-instruction brinca as begin turnleft; move; turnright; end; define-new-instruction baja as begin turnright; move; turnleft; end; define-new-instruction turnright as begin turnleft; turnleft; turnleft; end; Se debe programar a Karel para moverse en línea recta mientras pueda, y brincando las vallas sólo cuando deba hacerlo. Utilizando el refinamiento paso por paso.
7. Instrucción IF/THEN/ELSE (6) define-new-instruction corre-a-zancadas as begin IF front-is-clear THEN begin move; end ELSE begin brinca-la-valla; end; end; beginning-of-execution corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; corre-a-zancadas; turnoff; end-of-execution end-of-program beginning-of-program define-new-instruction turnright as begin turnleft; turnleft; turnleft; end; define-new-instruction baja as begin turnright; move; turnleft; end; define-new-instruction brinca as begin turnleft; move; turnright; end; define-new-instruction brinca-la-valla as begin brinca; move; baja; end; El orden de las instrucciones se debe invertir al incorporarlas al programa completo