PROGRAMACIÓN 10 Prof. Dolores Cuiñas H. Recuerde que estos son apuntes muy simplificados que deberá completar con la bibliografía recomendada APUNTES Nº 5 ESTRUCTURAS DE CONTROL SELECTIAS O ESTRUCTURAS DE DECISIÓN: Son las que permiten la selección de acciones alternativas. EXPRESIÓN LÓGICA: es una expresión que al ser evaluada da como resultado un valor lógico (verdadero o falso). Podrían definirse dos tipos de expresiones lógicas, las cuales tienen la siguiente forma: Tipo A (también denominadas expresiones relacionales): Donde: Operando1 operador de relación Operando2 Operando1 y 2 pueden ser ambos expresiones aritméticas o ambos expresiones carácter. Expresiones carácter pueden ser constantes o variables de tipo carácter o cadena. Operador de relación: > (mayor), < (menor), = (igual), >= (mayor o igual), <= (menor o igual), <> (diferente). Los operadores de relación tienen igual prioridad entre ellos, pero la más baja prioridad en relación con los operadores aritméticos. Su orden de evaluación es el siguiente: Prioridad Operador 1. ( ) 2. *,/,div,mod 3. +,- 4. >,<,=,>=,<=,<> Nota: Los valores numéricos sólo pueden compararse con otros valores numéricos y los carácter con otros carácter. Los valores carácter no pueden compararse con las cadenas de caracteres. Las cadenas de caracteres sólo pueden compararse si tienen exactamente la misma longitud. En las comparaciones entre expresiones carácter el orden, según la codificación ASCII, es el siguiente: 0 < 1 < 2 <..< 9 a < b < c <..< z A < B < C <.< Z Ejemplos de expresiones lógicas (también llamadas relacionales) a) 6.7315 > 6.7342 (false) b) 15 < 20 (cierto) c) 8 = 8.0 (cierto) d) A < B (cierto) e) 5 = 5 produce error, f) 2 < 235 produce error f) Dado N1 = 3, N2 = 6 y CAR = m, el resultado de la evaluación de las siguientes expresiones es: CAR = m (verdadero) (2+3*N1) <> 6 + (N2 1) (falso) (1+(2div2) mod N2) <= 4*n1 (verdadero)
(1+1 mod N2) <= 4*N1 (verdadero) Tipo B Las expresiones lógicas pueden combinarse para formar expresiones más complejas: Donde: Operando1 operador lógico Operando2 Operando1 y 2 son expresiones lógicas que pueden estar constituidas por: constantes lógicas, variables lógicas, expresiones de relación, expresiones lógicas entre paréntesis. Operando1 es opcional, dependiendo del operador podría no existir. Operador lógico: not (no lógico), and (Y lógico), or (O lógico), xor Mayor prioridad Menor prioridad El orden de prioridad de los operadores lógicos en relación con el resto de operadores es el siguiente: Operador Orden de Prioridad ( ) prioridad más alta (se evalúa primero) not *, /, div, mod, and +, -, or, xor <,>,<=,>=,=,<> prioridad más baja (se evalúa de último) Tipo de valor lógico resultante de la evaluación de una expresión lógico se ilustra en la siguiente tabla: Operando1 (Op1) Operando2 (Op2) not Op1 Op1 and Op2 Op1 or Op2 Op1 xor Op2 Ejemplos de expresiones lógicas: a) not ( A = Z ) (verdadero), b) not (2<3) (falso), c) not p or q and r d) ((X*2 > Y-3) or (X > Y-1)) and (Y < 5) e) alor := (resp= T ) or (resp= t ) verdadero si resp toma el valor de T o t de lo contrario es falso ESTRUCTURAS DE DECISIÓN EN TURBO PASCAL. condición Son estructuras de control condicional que permiten llevar a cabo una acción, si una condición (expresión lógica) dada tiene un valor específico (verdadero o falso).
ESTRUCTURA DE DECISIÓN SIMPLE: se usan para representar estructuras en las que si la evaluación de la expresión lógica resulta ser verdadera se ejecuta la sentencia1 o la serie de sentencias comprendidas entre begin y end de la instrucción I-THEN, según sea el caso. Mientras que si el resultado de su evaluación es falso se continúa como si la instrucción del I- THEN no hubiese existido. I expresión lógica THEN sentencia1; Para el caso de sentencia simple. Es decir, una sola sentencia I expresión lógica THEN BEGIN sentencia1; sentencia2; : sentencian END; antes de un END no se coloca ; Para el caso de sentencias compuestas. Es decir, varias sentencias. NOTA: recordar que el ; se usa para separar sentencias pero no forma parte de la sentencia. El algoritmo gráfico de una estructura de decisión simple se representa de la siguiente manera: condición Sentencia(s) Nota: condición es igual a expresión lógica El algoritmo escrito: Nº. si condición entonces, Nº.Nº. sentencia(s) ESTRUCTURA DE DECISIÓN DOBLE: se usan para representar estructuras en las que si la evaluación de la expresión lógica resulta ser verdadera se ejecuta la sentencia1. Mientras que
si el resultado de su evaluación es falso se ejecuta la sentencia2. Recuerde que en el caso de sentencias compuestas, en lugar de la sentencia1 o la sentencia2 se ejecutarán las serie de sentencias comprendidas entre sus respectivos begin end. I expresión lógica THEN sentencia1 ELSE Sentencia2; Para el caso de sentencia simple. Es decir, una sola sentencia I expresión lógica THEN BEGIN sentencia1; sentencia2 END ELSE BEGIN sentencia3; sentencia4 END; antes de un END o un ELSE no va ; Para el caso de sentencias compuestas. Es decir, varias sentencias. El algoritmo gráfico de una estructura de decisión doble se representa de la siguiente manera: condición Sentencia(s) 2 Sentencia(s) 1 El algoritmo escrito: Nº. si condición entonces, Nº.Nº sentencia(s) 1 de lo contrario Nº.Nº sentencia(s) 2 Nota: condición es igual a expresión lógica
ESTRUCTURAS DE DECISIÓN MÚLTIPLE: existen dos tipos de sentencias, las I anidadas y las CASE. SENTENCIA I ANIDADA: se usan para representar estructuras en las que si la evaluación de la expresión lógica resulta ser verdadera se ejecuta la sentencia1. Mientras que si el resultado de su evaluación es falso se evalúa otra expresión lógica, si el resultado de esta última es verdadero se ejecuta la sentencia2, si es falso se evalúa otra expresión y así sucesivamente. Recuerde que en el caso de sentencias compuestas, en lugar de la sentencia1, sentencia2 o sentencia N, se ejecutarán la serie de sentencias comprendidas entre sus respectivos begin - end. I expresión lógica1 THEN sentencia1 ELSE I expresión lógica2 THEN sentencia2 : ELSE I expresión lógican THEN sentencian ELSE SentenciaN+1; antes de un ELSE no va ; El algoritmo gráfico de una sentencia I anidada se representa de la siguiente manera: Condición 1 Condición 2 Sentencia(s) 1 Sentencia(s) 2 Condición n Sentencia(s) N+1 Sentencia(s) N
El algoritmo escrito: Nº. si condición 1 entonces, Nº.Nº sentencia(s) 1 de lo contrario, si condición 2 entonces, Nº.Nº sentencia(s) 2 de lo contrario, si condición n entonces, Nº.Nº sentencia(s) N de lo contrario Nº.Nº sentencia(s) N+1 SENTENCIA CASE: se usa para elegir entre diferentes alternativas. Puede utilizarse de cualquiera de las dos maneras descritas a continuación, según sea el caso CASE selector O lista constantes1: sentencia1; lista constantes2: sentencia2; : END; lista de constantesn: sententian antes de un END no va ; Donde: CASE selector O lista constantes1: sentencia1; lista constantes2: sentencia2; : lista de constantesn: sententian ELSE SentenciaN+1 END; antes de un END o un ELSE no va ; Lista de constantes es igual a uno o más posibles valores del selector separados por coma y pueden ser constantes o un valor subrango: constante1..constante2. Cada sentencia puede ser simple o compuesta (recordar que las compuestas deben ir
entre un begin y un end). El selector es una expresión que debe ser de tipo ordinal (integer, char, bolean, subrango o enumerado). No son válidos los tipo real, string, longint, word. Todas las constantes CASE deben ser únicas y de un tipo ordinal compatible con el tipo del selector. Cada sentencia excepto la última, debe ir seguida de ; La cláusula ELSE es opcional. Reglas de funcionamiento: 1. La expresión selector se evalúa y se compara con las listas de constantes. 2. Si el valor resultante de la evaluación del selector se corresponde con alguno de la lista de constantes 1, se ejecutará la sentencia1 o el bloque de sentencias1 encerradas entre begín end, en caso de sentencias compuestas. Luego el control se pasa seguidamente a la primera sentencia a continuación del END del CASE. Si el valor resultante de la evaluación del selector se corresponde con alguno de la lista constantes 2, se ejecutará la sentencia2 (simples o compuestas) y así sucesivamente. 3. Si el valor resultante de la evaluación del selector no está comprendido en ninguna lista de constantes y no existe la cláusula ELSE, no sucede nada y sigue el flujo del programa como si no hubiese existido el CASE. 4. Si el valor resultante de la evaluación del selector no está comprendido en ninguna lista de constantes y si existe la cláusula ELSE, se ejecuta(n) la(s) instrucciones a continuación de la cláusula ELSE. El algoritmo gráfico de una sentencia CASE se representa de la siguiente manera: selector = lista ctes 1 Sentencia(s) 1 selector = lista ctes 2 Sentencia(s) 2 selector = lista ctes N Sentencia(s) N Sentencia(s) N+1 opcional
El algoritmo escrito de una sentencia CASE se representa: Nº según sea selector hacer lista ctes. 1: Nº.Nº sentencia(s) 1 lista ctes. 2: Nº.Nº sentencia(s) 2 lista ctes N: Nº.Nº sentencia(s) N de lo contrario Nº.Nº sentencia(s) N+1 fin_según. NOTA: se pueden usar sentencias I anidadas en lugar de sentencias CASE para realizar una decisión de alternativa múltiple, pero es más legible el CASE. er ejemplos y demás explicaciones en clase Los conceptos anteriores son tomados básicamente de: Programación en Turbo/ Borland. Pascal 7. Luis Joyanes Aguilar Programación con Lenguaje Turbo Pascal..J. Sanchis Llorca.-