cuadernillo introducciÓn a la programaciÓn estructuradablopez/programacionestructurada/... ·...

22
UNIVERSIDAD DEL PAPALOAPAN Campus Tuxtepec Loma Bonita Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA M. C. Bertha López Azamar Profesor-Investigador Tuxtepec, Oaxaca

Upload: others

Post on 10-May-2020

27 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

UNIVERSIDAD DEL PAPALOAPAN

Campus Tuxtepec – Loma Bonita

Cuadernillo

INTRODUCCIÓN A LA

PROGRAMACIÓN ESTRUCTURADA

M. C. Bertha López Azamar Profesor-Investigador

Tuxtepec, Oaxaca

Page 2: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 53

6 Expresiones condicionales

Las expresiones condicionales, son llamadas también lógicas o booleanas1, se componen de

números, constantes, variables, y operadores relacionales y lógicos. (Cairo, 2003). El valor que

pueden tomar estas expresiones es el de verdadero o falso. Las condiciones se usan en las sentencias

de control, siendo en si el corazón de éstas, ya que permiten determinar la decisión final de que

camino tomar para ejecutar el código dentro de la sentencia de control.

Las expresiones condicionales sirven para plantear condiciones o comparaciones y dan como

resultado un valor booleano (valor de verdad: verdadero o falso), es decir, se cumple o no se cumple

la condición (López R., 2003).

Las expresiones condicionales se pueden clasificar en simples y complejas.

Figura 1 Expresiones condicionales

6.1 Expresiones lógicas simples

Se forman con operandos (variables y/o constantes) y operadores relaciónales. Permiten

hacer comparaciones entre dos valores de tipo numérico o entre dos de tipo carácter.

Para escribirlas se emplea la forma:

operando1 OperadorRelacional Operando2

Donde: operando1 y Operando2 son variables o constantes del mismo tipo de dato

1 llamadas así en honor del matemático George Boole

Expres ión condic ional Se pueden

considerar

Simple Compleja

Proposic iones

lógicas

Usan

Variables Constantes

Unidas por

Operadores

relacionales

Resultados de

la evaluación

Valores

de verdad

(V ó F)

Unen

Expres iones

condic ionales s imples

Con

Operadores lógicos

Usan Valores de

Page 3: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 54

Ejemplo 1 Operaciones condicionales simples empleando valores constantes

6 < 8 al evaluarla el resultado es verdadero

6 > 8 al evaluarla el resultado es falso

“c” == “d” al evaluarla el resultado es falso

“c” <> “d” al evaluarla el resultado es verdadero

Algo que debe aclararse es que todos los operadores relacionales pueden ser aplicados para

comparar valores numéricos, sin embargo los valores de tipo caracter solo pueden emplearse los

operadores de igualdad (==) o de diferencia (< >).

Ejemplo 2 Escritura de expresiones condicionales simples usando variables y constantes

Condición Ejemplo de evaluación asignando valores

a < b

10 > c

a = b

c > 10

Evaluando podemos ver que, si a vale 5, b vale 6 y c vale 9, las expresiones

dan como resultado valores de verdad:

Condición Resultado

a < b Verdadero

10 > c Verdadero

a == b Falso

c > 10 Falso

r <= d

s >= w

x == 10

x <> y

Evaluando podemos ver que, si “d” vale 5, “r” vale 6, “s” vale 9, “w” vale 5,

“x” vale 3, “y” vale 8, las expresiones al ser evaluadas dan los siguientes

valores de verdad como resultado:

Condición Resultado

r <= d falso

s >= w verdadero

x == 10 falso

x <> y verdadero

6.2 Expresiones lógicas complejas

Se formulan relacionando operandos booleanos (condiciones simples) mediante operadores

lógicos. Esto es necesario cuando se quieren hacer varias comparaciones para que se pueda tomar

una decisión final basada en esas determinaciones particulares.

Para escribirlas se emplea la forma:

OperandoBooleano1 OperadorLogico OperandoBooleano2

Donde: OperandoBooleano1 y OperandoBooleano2 son expresiones lógicas simples que

proporcionan un valor verdadero (V) o falso (V)

Para evaluar las expresiones que emplean operadores lógicos, es necesario seguir las

reglas de verdad de los operadores lógicos correspondientes. En la siguiente tabla pueden verse,

en resumen global, las expresiones simples representadas por las letras “p” y “q” para simplificar

el entendimiento de los operadores lógicos.

Page 4: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 55

10 > 1 + 2

3

V

Tabla 1 La tabla de verdad para los operadores lógicos

p q p Y q p O q NO p

V V V V F

V F F V F

F V F V V

F F F F V

Donde: p, q, son expresiones condicionales simples.

V es verdadero, F es falso.

Ejemplo 3 Sentencia condicional compleja: 6 < 8 Y „c‟ == „d‟; usando valores constantes

la primera contiene constantes enteras, 6 < 8 al evaluarla su resultado es verdadero

(este será p)

la segunda contiene constantes de carácter, „c‟ == „d‟ al evaluarla su resultado es

falso(este será q)

p Y q, por lo tanto, “verdadero” Y “falso” da como resultado “falso”.

Ejemplo 4 Escritura de expresiones condicionales complejas usando variables

a < b Y 10 > c Si a vale 5, b vale 6 y c vale 9, la expresión: Al ser evaluada

da como resultado un valor lógico: verdadero (V).

10 > 5 Y NO(10 < 9) O 3 <= 4 Este ejemplo es un poco más complicado. Se evalúan los

niveles de precedencia, y se encuentra que el resultado es

verdadero (V).

Los operadores relacionales y lógicos tienen un nivel de precedencia menor que los

operadores aritméticos, por lo tanto, en una condición cuando se encuentra una expresión aritmética

debe evaluarse primero, para después, usar ese resultado para evaluar la condición. Como se muestra

en el siguiente ejemplo.

10 > 1 + 2 se evalúa como si se hubiera escrito 10 > (1+2).

Primero se resuelve 1 + 2 y da como resultado 3, y luego se evalúa la

condición 10>3 el resultado, es verdadero, ya que en efecto 10 es

mayor que 3.

10 > 5 Y NO(10 < 9) O 3 <= 4

V F

V V

V V

Page 5: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 56

6.3 Obtener rangos de valores de condiciones que implican variables numéricas.

Algo que debemos tener presente al evaluar las expresiones condicionales en las que

intervienen variables de tipo numérico, es que darán como resultado un valor de verdad “verdadero”

solo son algunos valores, por lo que es posible determinar anticipadamente rangos de valores para

las variables que intervienen en la condición, así será verdadera mientras las variables tome un valor

que se encuentre en el rango que delimita la condición.

Sin embargo, al tener condiciones donde comparan valores de dos variables entre si, como

por ejemplo la condición: a < b; los rangos de valores que hacen valida la condición son imposibles

de establecer, ya que la condición depende de dos variables, razón por la cual debe verificarse la

condición hasta el momento en el cual cada una de las variable tome algún valor.

Es importante aprender a obtener los rangos de valores debido a que es posible:

1. Saber por anticipado cuales valores harán verdadera la condición y cuales falsa.

NOTA: Las sentencias de control de la programación estructurada usan las

condiciones y son las que requieren que la condición se cumpla para

poder ejecutar las sentencias que contiene.

2. Poder obtener posteriormente condiciones a partir de rangos de valores

NOTA: En los enunciados de problema, la condición no esta escrita como tal,

y es el programador quien va a observar, probablemente, un rango de

valores y a partir de eso debe escribir la condición o condiciones

pertinentes.

A continuación se analizaran los casos principales implicados en condiciones simples y en

condiciones complejas.

Al evaluar las expresiones condicionales simples en las que interviene una variable y un

valor constante, estas se hacen verdaderas solo con un rango de valores que van desde la constante

indicada hasta el infinito negativo (-) o hacia el infinito positivo (), todo determinado por el

operador relacional de que se trate (<, <=, >, >=)

Una herramienta de la cual podemos hacer uso para determinar el rango de valores

particulares que intervienen en la condición, es la recta numérica.

< >

- 0 +

En esta recta los valores se encuentran acordes con lo siguiente:

< manda el rango de valores a infinito negativo, sin incluir el valor de la condición

> manda el rango de valores a infinito positivo, sin incluir el valor de la condición

<= manda el rango de valores a infinito negativo, incluyendo el valor de la condición

>= manda el rango de valores a infinito positivo, incluyendo el valor de la condición

== es el valor exacto indicado por la comparación.

<> todos los valores menos el indicado en la comparación

Page 6: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 57

NOTA: No olvide el tipo de dato de la variable, si es un entero o si es un real

(flotante). Ya que por ejemplo si el tipo de dato es entero, el número

menor que 10 es el 9, pero si el tipo de dato es flotante, el número

menor que 10 es el 9.9. En la mayoría de los ejemplos presentados se

utilizan únicamente valores numéricos enteros.

6.3.1 Obtención de rangos de condiciones simples

Ejemplo 5 Condición empleando igualdad x == 10

- 0 9 10 11 +

Rango para x: 10

Ejemplo 6 Condición empleando diferencia y <> 10

- 0 9 10 11 +

- a 9 11 a

Rango para y:

todos menos el 10

(de - a 9, y de 11 a )

Ejemplo 7 Rango para la condición z >= -3

- -4 -3 -2 0 +

Rango para z: -3 a

Ejemplo 8 Rango para la condición z <= -3

- -4 -3 -2 0 +

Rango para z: de - a -3

x <> 10

F

10 x <> 10

-3

V

x <> 10

V

9

z >= -3

456

V

z >= -3

-452

F

z >= -3

-4

F

z >= -3

9

V

z >= -3

0

V

z >= -3

-3

V

x == 10

F

11

x == 10

V

10

x == 10

9

F

Page 7: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 58

Ejemplo 9 Rango para la condición z < -3

- -4 -3 -2 0 +

Rango para z: de - a -4

Comparando los dos ejemplos anteriores vemos que la diferencia en la condición solo radica

en el signo igual (=), y con esto la segunda condición excluye al número -3 del rango de valores

indicados como validos para la condición.

El cambio de signo de < a > ó de <= a >=, implica un cambio radical en el rango de valores

aceptados por una condición. Así mismo, el intercambiar de posición los operadores implicados

dentro de la condición, trae como consecuencia un cambio en el rango de valores aceptados como

verdaderos para la condición que se ha alterado.

La forma común de escribir una condición simple es colocar:

la variable del lado izquierdo del operador relacional, y

del lado derecho el valor constante.

Sin embargo no es una norma, por lo que se debe poner especial atención a la comparación

que se esta realizando ya que el cambio de posición de los participantes en la condición altera

considerablemente el resultado a obtener. Cuando se trata de == o < >, el intercambio de la

posición no afecta el resultado final, pero con <, <=, >, >=, el intercambio de la posición si es

significativo ya que altera el valor resultante.

Figura 2 Condiciones contrarias y equivalentes (debido al orden de variables y sentido del signo relacional)

Observemos las condiciones: c > 10, c < 10, mostradas en la figura en donde con el

simple hecho de cambiar de posición los operandos, o con el hecho de invertir los signos, las

condiciones se vuelven contrarias a la original. Por lo tanto, si cambio de posición los operandos de

una condición, también debo invertir el signo, para que la condición alternativa siga indicando el

mismo rango de valores que acepta la condición original.

z >= -3

456

F

z >= -3

-452

V

z >= -3

-4

V

z >= -3

9

F

z >= -3

0

F

z >= -3

-3

F

z >= -3

456

F

z >= -3

-452

V

z >= -3

-4

V

z >= -3

9

F

z >= -3

0

F

z >= -3

-3

V

C < 10

10 > C

10 < C

equiva lente

contrar ia

contrar ia

C > 10

equiva lente

contrar ia

contrar ia

Page 8: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 59

Ejemplo 10 Rango para la condición 10 > c

Para 10 > c, los valores que puede tomar c son aquellos que sean menores a 10, para que de

un resultado verdadero, es decir, el rango de valores es de - a 9. Esto gráficamente lo

representamos con:

- a 9

- 0 9 10 +

La variable C debe tomar valores menores que 10 para que sea verdadera. Si comprobamos

la condición podemos ver que cuando c tome valores como: -3, 0, 9 dará verdadero y cuando tome

valores como: 10, 15, 456 dará falso.

Casi siempre, la mejor forma de escribir una condición que implica comparación contra una

constante, es colocar primero la variable y luego la constante, para esto la condición 10 > c tendría

su equivalente con la condición c < 10, la cual no cambia el rango de la original, tomando c

valores menores que 10 para poder hacer verdadera la condición.

Ejemplo 11 Rango para la condición c > 10

Sin embargo para el caso de c > 10, el rango de valores que puede tomar c y que darán un

resultado verdadero es de 11 a (valores mayores que 10). Esto gráficamente lo representamos

con:

11 a

- 0 9 10 11 +

Actividad 1 Escriba las condiciones contrarias y las equivalentes para las siguientes condiciones y compruebe indicando con la recta numérica los rangos que abarcan cada una de ellas.

a < 30 b >= -2 c <= -50 d > 18

10 > c

10

F

10 > c

9

V

10 > c

0

V

10 > c

-3

V

10 > c

15

F

10 > c

456

F

Page 9: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 60

6.3.2 Obtención de rangos de condiciones complejas

Al evaluar condiciones complejas (con dos condiciones simples o mas unidas por operadores

lógicos) podemos observar ciertos casos particulares.

Cuando se trata de dos o más variables distintas en una misma condición compleja

Cuando se tienen condiciones complejas con la misma variable en cada condición

simple

Cuando se trata de dos o más variables distintas en una misma condición compleja, los

valores que pueden tomar las variables de cada condición simple son independientes, y ahí solo

importa el valor de verdad que resulte en cada una, para con este poder obtener el resultado de

verdad de la condición general, para esto se emplea la tabla de verdad de operadores lógicos.

Ejemplo 12 Rango para la condición compleja: a < 10 Y c < 10

a

- 0 9 10 11 +

c

Rango para a: de - a 9

Rango para c: de - a 9

Ahora bien, si se tienen condiciones complejas con la misma variable en cada condición

simple, entonces, lo que se tiene es delimitación de rangos. Y los operadores lógicos “Y” y “O”,

pueden actuar como las operaciones sobre conjuntos: “intersección” y “unión”.

Con “Y” uniendo dos condiciones simples (para la misma variable),

se actuará como la operación de intersección de conjuntos, esto es debido a

que cada condición simple establece un rango de valores particular (dos

conjuntos) y con la intersección de los conjuntos se obtendrá el rango final

para poder hacer verdadera a la condición total, con esos valores.

Ejemplo 13 Expresión compleja a < 10 Y a > 5

- a 9

- 0 5 6 9 10 +

6 a

a < 10 Y c < 10

18

F

8

V

F

a < 10 Y c < 10

10

F

10

F

F

a < 10 Y c < 10

8

V

8

V

V

a < 10 Y c < 10

-3

V

9

V

V

a < 10 Y c < 10

-3

V

11

F

F

Page 10: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 61

La primera condición determina el rango de - a 9, la segunda condición el rango de 6 a ,

por lo tanto la intersección de esos dos conjuntos y el rango final para la condición es: de 6 a 9.

Ejemplo 14 Condición: r >2 Y r <= 7

3 a

- 0 1 2 3 7 8 20 21

- a 7

Rango de general de la condición: de 3 a 7

Ejemplo 15 Expresión compleja a < 10 Y a > 15, todos los valores son rechazados

- a 9

- 0 9 10 15 16 +

16 a

Vemos claramente que la primera condición determina el rango de - a 9, y la segunda

condición el rango de 16 a , claramente vemos que no hay intersección de esos dos conjuntos y el

rango final para la condición es: NINGUNO.

NOTA: Este tipo de condiciones deben evitarse, ya que ningún valor hará

verdadera la condición y nunca ejecutará el código de la sentencia de

control donde se use por lo que no tiene caso incluirla. Ejemplo si es

una sentencia cíclica, nunca se podrá ejecutar el ciclo.

Ejemplo 16 Condición: r < 8 Y r > 20, sin intersección y por lo tanto sin rango de valores válidos

21 a

- 0 1 2 3 7 8 20 21

- a 7

a < 10 Y a > 15

-6

V

-6

F

F

a < 10 Y a > 15

8

V

8

F

F

a < 10 Y a > 15

16

F

16

V

F

a < 10 Y a > 15

10

F

10

F

F

a < 10 Y a > 5

6

V

6

V

V

a < 10 Y a > 5

8

V

8

V

V

a < 10 Y a > 5

5

V

5

F

F

a < 10 Y a > 5

10

F

10

V

F

Page 11: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 62

Ejemplo 17 Condición: r <= 2 Y r > 7, sin intersección, todos los valores son rechazados

8 a

- 0 1 2 3 7 8 20 21

- a 2

Vemos claramente, en los ejemplos, que en los casos con condiciones simples unidas por Y,

se tienen dos constantes númericas (una mayor que la otra) que delimitan cada condición; si la

condición donde actúa la constante menor tiene un operador menor (<) o menor igual ( <=), el

conjunto se va hacia el infinito negativo; y, si la constante donde actúa la constante mayor tiene un

operador mayor (>) o mayor igual ( >=), el conjunto se va hacia el infinito positivo; por lo tanto los

dos conjuntos nunca se cruzan, haciendo imposible encontrar una intersección (dando siempre un

conjunto vacío). Es decir, ningún valor hará valida la condición.

Figura 3 Forma correcta de escribir las condiciones complejas con el operador lógico Y para lograr una

intersección en un conjunto númerico e impedir que de conjunto vacio.

Con “O” uniendo dos condiciones simples (para la misma

variable), se actuará como la operación de unión de conjuntos, esto es

debido a que cada condición simple establece un rango de valores

particular (dos conjuntos) y la unión de los conjuntos permite obtener el

rango final para poder hacer verdadera a la condición total.

Ejemplo 18 Expresión compleja a < 10 O a > 15

- a 9

- 0 9 10 15 16 +

16 a

var iab le var iab le Constante

menor

Constante

mayor >

Sino >=

<

Sino

<=

Y

Page 12: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 63

Vemos claramente que la primera condición determina el rango de - a 9, y la segunda

condición el rango de 16 a +, por lo tanto la unión de esos dos conjuntos y el rango final para la

condición es: de - a 9 y de 16 a (es decir todos menos del 10 al 15).

Ejemplo 19 Expresión compleja a < 10 O a > 5

- a 9

- 0 5 6 9 10 +

6 a

Vemos claramente que la primera condición determina el rango de - a 9, y la segunda

condición el rango de 6 a +, por lo tanto la unión de esos dos conjuntos y el rango final para la

condición es: de - a (es decir todos los valores).

NOTA: Este tipo de condiciones deben evitarse, debido a que siempre

ejecutará la sentencia de control donde se use, porque la condición

acepta todos los valores que pueda tomar la variable, y ninguno la

hará falsa. Ejemplo si es una sentencia cíclica, nunca se podrá salir

del ciclo, y el programa trabajará infinitamente.

Ejemplo 20 Condición: r > 7 O r <= 20, todos los valores son aceptados

8 a

- 0 1 2 3 7 8 20 21

- a 20

Ejemplo 21 Condición: r >= 2 O r < 8, todos los valores son aceptados

r >= 2

- 0 1 2 3 7 8 20 21

r < 8

a < 10 O a > 5

8

V

8

V

V

a < 10 O a > 5

6

V

6

V

V

a < 10 O a > 5

5

V

5

F

V

a < 10 O a > 5

10

F

10

V

V

a < 10 O a > 15

10

F

10

F

F

a < 10 O a > 15

16

F

16

V

V

a < 10 O a > 15

8

V

8

F

V

a < 10 O a > 15

6

V

6

F

V

Page 13: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 64

Vemos claramente, en los ejemplos, que en los casos con dos condiciones simples unidas por

O, se tienen dos constantes númericas (una mayor que la otra) que delimitan cada condición; si la

condición donde actúa la constante menor tiene un operador mayor (>) o mayor igual ( >=), el

conjunto se va hacia el infinito positivo; y, si la constante donde actúa la constante mayor tiene un

operador menor (<) o menor igual ( <=), el conjunto se va hacia el infinito negativo; por lo tanto los

dos conjuntos siempre se cruzarán (siempre habrá intersección) lo que hace que la unión de esos

conjuntos abarque, invariablemente, un rango desde infinito negativo hasta infinito positivo. Es

decir, cualquier valor hará valida la condición.

Figura 4 Forma correcta de escribir las condiciones complejas con el operador lógico O para impedir que haya

una intersección en un conjunto númerico y logre dar los rangos de valores.

Es importante poder saber cuales son los valores que acepta una condición, sin embargo si se

tiene una condición compleja que implique el uso de dos o más variables, con más de dos

condiciones simples unidas por sus respectivos operadores lógicos, debe analizarse el conjunto de

valores que realmente permitirán hacer verdadera cada condición. No importa cuantas condiciones

simples se tengan, cada una define un rango, y cuando se trata de la misma variable, esos rangos se

delimitan con los operadores lógicos hasta encontrar el rango de valores final para esa variable, Ya

cuando se tienen los rangos de las condiciones con una variable, se puede obtener el valor de verdad

de cada condición y se compararán en el orden de prioridad adecuado, esos valores de verdad con la

tabla de verdad de los operadores lógicos.

Ejemplo 22 Condición (x < 1 O x > 20) Y (r >2 Y r <8)

Observamos en primer lugar dos variables participantes: x, r; cada una se define su propio

rango de valores.

x < 1 O x > 20

- a 0 21 a

x < 1 x > 20

- 0 1 2 3 7 8 20 21

Rango para x: de - a 0, de 21 a

var iab le var iab le Constante

menor

Constante

mayor <

Sino <=

>

Sino

>=

O

Page 14: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 65

r <8

- 0 1 2 3 7 8 20 21

r > 2

r >2 Y r <8

Rango para r: de 3 a 7

Como se trata de condiciones con variables distintas y su propio rango de valores definidos,

unidas por el operador Y, debe obtenerse el valor de verdad correspondiente usando la tabla de

verdad, la cual indica que ambas condiciones deben cumplirse (dar Verdadero) para que todo el

resultado sea verdadero, si uno no se cumple (da falso) toda la condición se hace falsa

Evaluando la condición con valores tenemos por ejemplo:

Es importante tener cuidado con los paréntesis de la condición, porque si en el ejemplo

anterior quitamos los paréntesis en la segunda condición, cambian los resultado en la evaluacion de

los operadores lógicos, ya que los Y se evalúan de izquierda a derecha.

Ejemplo 23 Condición (x < 1 O x > 20) Y r >2 Y r <8

En este caso Y tiene mayor prioridad, por lo que se verificará la condición (x < 1 O x > 20),

con ese resultado de verdad, verificará despues la condición r>2, y de ahí la condicion r<8.

Observemos los resultados, y ahora dependen de la verificación de los valores intermedios para r y

al final otra vez compara contra r.

Primero se tiene: x < 1 O x > 20

- a 0 21 a

x < 1 x > 20

- 0 1 2 3 7 8 20 21

Rangos para x: de - a 0, de 21 a

21 21 6 6

F V V V

V V

V

(x < 1 O x > 20) Y (r > 2 Y r < 8)

21 21 2 2

F V F V

V F

F

(x < 1 O x > 20) Y (r > 2 Y r < 8)

10 10 6 6

F F V V

F V

F

(x < 1 O x > 20) Y (r > 2 Y r < 8)

Page 15: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 66

Para la segunda condición se tiene: r > 2

- 0 1 2 3 7 8 20 21

Primer rango para r (en r > 2): de 3 a

Después se verifica la última condición:

r < 8

- 0 1 2 3 7 8 20 21

Segundo rango para r (en r < 8): de 7 a -

Evaluando la condición con valores tenemos por ejemplo:

En el caso de que se trate de una sola variable, y se tienen delimitaciones de valores

marcados por varias condiciones simples unidas con los operadores lógicos, debe encontrarse el

rango global de valores para esa variable.

Ejemplo 24 Condición r <=10 Y r >4 O r > 20

Observando la condición y respetando la prioridad de operadores, primero de encuentra el

rango que une Y (r <=10 Y r >4). Marcamos los rangos en la recta numérica:

- a 10

r <= 10

- 0 4 5 10 11

r > 4

5 a

Se tiene por tanto una intersección que da un rango con los valores de 5 a 10.

Para la última condición simple (r > 20) se observa un rango de 21 a

21 21 6 6

F V V V

V V

V

(x < 1 O x > 20) Y r > 2 Y r < 8

21 21 2 2

F V F V

V

F F

(x < 1 O x > 20) Y r > 2 Y r < 8 10 10 6 6

F F V V

F

F F

(x < 1 O x > 20) Y r > 2 Y r < 8

Page 16: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 67

21 a

r > 20

- 0 19 20 21

Por lo tanto, al aplicar el operador O, se obtiene el rango final de valores que puede tomar la

variable r, el cual es: de 5 a 10 y de 21 a

21 a

r > 20

- 0 5 10 19 20 21

Actividad 2 Realice la determinación de los rango para las siguientes condiciones. Emplee la recta númerica para marcar los rangos y verificar que efectivamente se cumpla lo que indica la condición. Además indique al menos tres ejemplos de comprobación de la condición con valores para la variable indicada.

Hijos >= 10

Hijos > 10

Hijos < 10

Hijos <= 3

Hijos ==3

Hijos <> 3

Hijos > 10 y Hijos <= 3

Hijos <= 3 o Hijos > 10

Hijos > 10 y Hijos >= 3

Hijos > 10 o Hijos >= 3

Casas <> 10 O casas <= 5

Casas <> 10 Y casas <= 5

Casas <> 10 Y casas >= 5

Casas <> 10 O casas >= 5

Casas == 10 O casas <= 5

Casas == 10 Y casas <= 5

Casas == 10 Y casas >= 5

Casas == 10 O casas >= 5

Casas > 20 Y casas < 50 O Casas > 100 y Casas < 150

Casas < 20 0 casas > 50 O Casas < 100 O Casas > 150

(Casas < 20 0 casas > 50) Y (Casas < 100 O Casas > 150)

Page 17: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 68

6.4 Obtener condiciones a partir de rangos de valores numéricos.

Los enunciados de problema incluyen proposiciones que en algunos casos indican rangos de

valores, se deben analizar estas, para poder determinar la condición adecuada que lo delimite. Debe

prestarse especial atención a las comparaciones para poder determinar la o las condiciones simples

que formaran la condición final.

Al tratarse de un caso que implica igualdad (==) con un valor, no existe tanto problema al

crear la condición, ya que esta es simple, ejemplo: un número igual a 10, implica escribir r == 10.

La forma común de escribir rangos es colocar la variable a la derecha en aquellos que

incluyan - (infinito negativo), y en los que incluyan (infinito positivo), la variable se colocará a

la izquierda, esto, acordándonos de que en la recta numérica - esta a la izquierda, esta a la

derecha. No obstante puede escribirse de forma contraria, sin embargo se dificulta entender a simple

vista los valores incluidos, por ejemplo escribir z a - o a z

Al tener casos de rangos como - a z o como z a , se trata de una condición simple que

puede emplear los operadores; <, <=, >, >=; para elegir cual se debe usar debe observarse lo

siguiente:

Cuando se trata de (infinito positivo) sabemos que el signo de la condición será > (

mayor) ó >= (mayor igual). Para usar uno u otro sin que el rango se altere, debemos

observar lo siguiente:

o Si se decide usar > entonces se debe buscar el valor inmediato a la izquierda (en

la recta numérica) del valor que se indica en el rango.

>

- 0 ? C

o Si se decide usar >= entonces debemos incluir el valor que se menciona en el

rango.

Cuando se trata de - (infinito negativo) sabemos que el signo de la condición será < ó

<=. Para usar uno u otro sin que el rango se altere, debemos observar lo siguiente:

o Si se decide usar < entonces se debe buscar el valor inmediato a la derecha (en

la recta numérica) del valor que se indica en el rango.

<

- 0 C ?

o Si se decide usar <= entonces debemos incluir el valor que se menciona en el

rango.

Page 18: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 69

En general al usar <= ó >=, debido a la igualdad (=) implica incluir en el rango el valor

constante indicado en la condición.

Ejemplo 25 Condición para el rango de valores de - a 10

Puede observarse en primer lugar que se trata de una condición simple, y como es - se trata

del signo < ó <=, por lo tanto podemos usar cualquier variable e indicar la condición.

- 0 10 11

Quedando: r < 11 o su equivalente: r <=10

Ejemplo 26 Condición para el rango de valores de 10 a

Se trata de una condición simple ya que vemos se trata del signo > ó >=, por lo tanto

podemos usar una variable e indicar la condición,

- 0 9 10

Quedando: r > 9 o su equivalente: r >= 10

Es importante tener en cuenta que hay ocasiones en las que o se quiere descartar un valor de

un conjunto de valores validos en un rango, o se quieren descartar dos o más valores; para lo cual se

deben observar las siguientes diferencias en los rangos, y asi saber el tipo de condición a emplear:

Tabla 2 Casos de uso de diferente (<>) y O

Rango Observación Usar:

- a 20 y de 22 a solo descarta un valor Por lo que se usa <> (diferente)

- a 20 y de 25 a descarta más de un valor Por lo que se debe usar una condición

compleja unida con O

En los casos que impliquen la exclusión de un valor, tener enunciados con frases como:

aceptar todos los números menos el 500, o descartando el número 500, o a excepción del 500; se

debe usar el operador diferente de (< >), lo que involucra la definición de dos rangos individuales

de valores no contiguos. Debe tenerse cuidado al escribir las condiciones simples que participan en

la condición compleja ya que no debe haber intersección entre los rangos resultantes (puede emplear

la recta numérica para hacerlo visible).

NOTA: Recordemos que las condiciones simples incluyen rangos que

tienden a extenderá desde un valor hacia - o desde un valor hacia

para que se pueda delimitar el rango.

Page 19: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 70

Ejemplo 27 Condición para números diferentes de 10

- a 9 11 a

- 0 9 10 11

Así vemos que la condición resultante será: r <> 10

Ya no sería bueno manejar una condicón compleja: r<10 O r >10. o sus equivalentes, ya que

solo descarta un valor y eso lo podemos resolver con el operador relacional <>.

En los casos que impliquen la exclusión de dos o más valores, se llegan a tener enunciados

con frases como: aceptar todos los números menos el 10 y el 11, o descartando los números 10 y 11,

o, a excepción del 10 y 11; se deben tener dos condiciones simples unidas por el operador lógico O;

lo que involucra la definición de dos rangos individuales de valores no contiguos. Debe tenerse

cuidado al escribir las condiciones simples que participan en la condición compleja ya que no debe

haber intersección entre los rangos resultantes; ya que se implica la unión de esos conjuntos

excluyentes entre si, y por tanto el uso del operador lógico O para la condición compleja.

Ejemplo 28 Condición para números diferentes de 10 y 11

- a 9 12 a

- 0 9 10 11 12

Para el rango - a 9 la condición es: r < 10 o su equivalente r <= 9

Para el rango 12 a la condición es: r > 11 o su equivalente r >= 12

Así vemos que la condición compleja definitiva será: r < 10 O r >11 o sus equivalentes:

r <= 9 O r >= 12, r < 10 O r >= 12, r <= 9 O r > 11

Ahora bien, para los casos que implican un rango que incluye dos valores como límites,

ejemplo muestra los números del 0 al 500, acepta billetes desde 50 hasta 1000, se tiene que escribir

forzosamente una condición compleja empleando una sola variable. Generalmente se trata de

conjuntos de valores contiguos (en la recta numérica) lo que implica una intersección y por lo tanto

el enlace de las condiciones simples mediante el uso del operador Y.

Ejemplo 29 Rango de valores de 1 a 10

Empleando la recta numérica se indica el rango marcado por el círculo punteado.

- 0 1 10 11

Así delimitamos los rangos individuales para lograr la intersección de esos conjuntos de

valores y obtener el rango indicado con el círculo. Vemos los conjuntos particulares indicados por

las llaves en la recta numérica y sus respectivos rangos.

Page 20: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 71

- a 10

- 0 1 10 11

1 a

Para el rango - a 10 la condición es: r <= 10 o su equivalente r < 11

Para el rango 1 a la condición es: r >= 1 o su equivalente r > 0

Así vemos que la condición compleja definitiva será: r <= 10 Y r >= 1 o sus equivalentes:

r > 0 Y r < 11, r >= 1 Y r < 11, r > 0 Y r <= 10

Para casos donde se indiquen dos rangos de valores, se realizan las combinaciones

pertinentes siempre analizando la conveniencia de que operador lógico, que generalmente es O,

emplear para la unión de las condiciones complejas que indican ambos rangos.

Ejemplo 30 Rango de valores para a que va de 5 a 10 y de 20 a 28

Empleando la recta numérica se indican los rangos de valores validos para a con círculos

punteados.

- 0 4 5 10 11 19 20 28 29

Trabajando cada rango por separado, delimitamos los rangos individuales que lo componen y

las respectivas intersecciones individuales de cada rango indicado con círculo:

- a 10

- 0 4 5 10 11

5 a

Así tenemos la condición compleja: r < 11 Y r > 4 (la cual incluye los valores del 5 al 10

exclusivamente)

- a 28

- 0 19 20 28 29

20 a

Así tenemos la condición compleja: r <= 28 Y r > 19 (la cual incluye los valores del 20 al

28 exclusivamente).

Page 21: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 72

Por lo tanto la condición final resultante implica la unión de ambos rangos con el operador

O, así tenemos:

r <=10 Y r >5 O r <28 Y r >20

Recordemos que el operador Y tiene mayor prioridad que el operador O por lo que no es

obligatorio incluir paréntesis para separar las condiciones, sin embargo para una mejor lectura de la

condición pueden indicarse los paréntesis para asegurar la evaluación de la condición y no alterar el

orden que deseamos con los rangos que estamos analizando. Así la condición anterior puede ser

escrita como sigue:

(r <=10 Y r >5) O (r <28 Y r >20)

En el caso de “O”, los conjuntos de valores nunca deben cruzarse, por lo tanto la forma

adecuada de escribir la condición compleja sería:

En el caso de “Y”, los conjuntos de valores deben cruzarse para que de un rango, por lo tanto

la forma adecuada de escribir la condición compleja sería:

Figura 5 Esquema general del uso adecuado de los operadores lógicos “Y” y “O”.

Observese que los elementos de la condición compleja se encuentran siempre igual, esto es,

preferentemente la constante menor a la izquierda y la constante mayor a la derecha; la única

diferencia es el sentido de los signos relacionales.

Ejemplo 31 Rango de 5 a 10 y de 20 a

Empleando la recta numérica se indican los rangos:

- 0 4 5 10 11 19 20

Observamos que el segundo rango ya esta determinado con una expresión condicional

simple: r >= 20

Trabajando el primer rango por separado, delimitamos los rangos individuales que lo

componen y la intersección indicada con círculo:

- a 10

- 0 4 5 10 11

5 a

Variable Constante

menor > Y Variable Constante

mayor <

Variable Constante

menor < O Variable Constante

mayor >

Page 22: Cuadernillo INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADAblopez/ProgramacionEstructurada/... · 2012-06-30 · 6 Expresiones condicionales M.C. Bertha López Azamar 53 6 Expresiones

6 Expresiones condicionales

M.C. Bertha López Azamar 73

Así tenemos la condición compleja: r >5 Y r <10 (la cual incluye los valores del 5 al 10

exclusivamente)

Por lo tanto la condición final resultante implica la unión de ambos rangos con el

operador O, así tenemos:

r >5 Y r <10 O r > 20

Ejemplo 32 Se requiere saber la tanto cantidad de alumnos que tienen calificaciones reprobatorias como la

cantidad de alumnos que tienen calificaciones mayores a 9.

En primer lugar, el rango contemplado para calificaciones válidas va de 0 a 10, lo que de

primera instancia limita nuestros valores para los rangos indicados en el enunciado de problema, ya

que no va a irse hasta - sino que se limitara hasta 0, ni tampoco va a llegar hasta , sino que se

limitará hasta 10. El tipo de dato de este valor es flotante, entonces tenemos los dos rangos:

Para calificaciones reprobatorias es: de 0 a 5.9

Para calificaciones mayores a 9 es: de 9.1 a 10

Por lo tanto, tenemos una unión de dos rangos (O) en la misma condición.

Análisis de rangos empleando la recta numérica:

calif <= 5.9

- -1 0 1 4 5 6 9 10

5.9

calif >= 0

La primera condición es: calif >= 0 Y calif <= 5.9

calif <= 10

- -1 0 1 4 5 6 9 10

9.1

calif >= 9.1

La segunda condición es: calif >= 9.1 Y calif <= 10

Así se tiene entonces una condición final que une a ambos rangos:

(calif >= 0 Y calif <= 5.9) O (calif >= 9.1 Y calif <= 10)

Ejemplo 33 Una maquina expendedora solo acepta billetes de denominaciones de $20 a $200

Este no es un rango abierto como en el caso anterior, sino que se tienen, en el caso de

México, denominaciones de billetes de: $20, $50, $100 y $200s, por lo tanto la condición quedará:

billete == 20 O billete == 50 O billete == 100 O billete == 200