Vous êtes sur la page 1sur 8

21

Punto 6 Control: decisiones


Expresiones relacionales
Las expresiones relacionales nos informan la condicin de verdad de dicha expresin. Una
expresin relacional compara dos valores y evala si el resultado es verdadero (true) o falso (false):
Expresin relacional

Evaluacin

3>5

false

3<5

true

5<3

false

5>3

true

Operadores relacionales
Los operadores relacionales que encontramos disponibles para trabajar en Processing son:
Operador

Significado

>

Mayor que

<

Menor que

>=

Mayor o equivalente a

<=

Menor o equivalente a

==

Equivalente a

!=

No equivalente a

Estructura condicional: if
Hasta ahora hemos visto que las instrucciones se ejecutan de forma lineal, es decir desde la primera
hasta la ltima lnea de cdigo, una tras otra. Este tipo de construccin genera un resultado que no
contempla variaciones en lo estructural, sino que presenta una sola forma de resolucin.
Pero, qu ocurrira si deseamos generar una construccin que contemple dos, tres o ms
variaciones estructurales? Algunos ejemplos: qu hubiese ocurrido si Claudio no verta el veneno
en el odo de su hermano? Cul hubiera sido la temtica de los escritos de Barthes, si las heridas
causadas por el accidente vial no lo hubiera llevado un mes ms tarde a la muerte?
A continuacin veremos la primer estructura condicional, if:
if(condicin){
acciones
}

Esto significa que cuando el programa se encuentre con esta estructura (o bloque) se ejecutarn las
acciones comprendidas entre los signos { y }, siempre y cuando la evaluacin de la condicin
IntroduccinaProcessingv1.5+

Docente:RalLacabanne

22
resulte verdadera. La condicin puede estar comprendida por una expresin relacional (o varias
vinculadas mediante conectores lgicos, que veremos ms adelante.

Veamos un ejemplo:
booleandibujoCirculo=true;//asignoverdaderoalabooleanadibujoCirculo
if(dibujoCirculo==true){//sidibujoCirculoequivaleaverdadero,
ellipse(50,50,50,50);//entoncesdibujounaelipse.
}
rect(30,45,40,10);//dibujorectngulo

Estructura condicional: if/else


Ahora veamos otro tipo de estructura, if/else:
if(condicin){
acciones1
}else{
acciones2
}

Esto significa que cuando el programa se encuentre con esta estructura se ejecutarn las acciones
1 siempre y cuando la evaluacin de la condicin resulte verdadera; por otra parte, si dicha
evaluacin resultase falsa, se ejecutarn las acciones2.

IntroduccinaProcessingv1.5+

Docente:RalLacabanne

23

Veamos un ejemplo:
booleandibujoCirculo=true;//asignoverdaderoalabooleanadibujoCirculo
if(dibujoCirculo==true){//sidibujoCirculoequivaleaverdadero,
ellipse(50,50,50,50);//entoncesdibujounaelipse;
}else{//encasocontrario,
line(25,25,75,75);//dibujodoslneas.
line(75,25,25,75);
}
rect(30,45,40,10);//dibujorectngulo

Estructura condicional: if/else if


A continuacin veremos un tercer tipo de estructura condicional, if/elseif:
if(condicin1){
acciones1
}elseif(condicin2){
acciones2
}

Cuando el programa se encuentre con esta estructura se ejecutarn las acciones 1 siempre y
cuando la evaluacin de la condicin 1 resulte verdadera; por otra parte, si dicha evaluacin
resultase falsa, se evaluar una segunda condicin, condicin2, y en caso de resultar verdadera,
se ejecutarn las acciones2.

IntroduccinaProcessingv1.5+

Docente:RalLacabanne

24

Clarifiquemos con un ejemplo:


booleandibujoCirculo=false;//asignofalsoalabooleanadibujoCirculo
booleandibujoElipse=false;//asignofalsoalabooleanadibujoElipse
if(dibujoCirculo==true){//sidibujoCirculoequivaleaverdadero,
ellipse(50,50,50,50);//entoncesdibujounaelipse;
}elseif(dibujoElipse==true){//perosidibujoElipseequivaleaverdadero,
ellipse(50,50,50,25);//entoncesdibujootraelipse.
}
rect(30,45,40,10);//dibujorectngulo

Estructura condicional: switch


En la prctica funciona como una estructura if, sin embargo es conveniente utilizar switch cuando
usted necesita seleccionar una opcin entre muchas.
switch(expresin){
caseetiqueta1:
instrucciones1
caseetiqueta2://opcional
instrucciones2//opcional
...
default:
//opcional
instrucciones3//opcional
}

Cuando el programa se encuentre con una estructura switch, se ejecutarn las instrucciones
correspondientes al case cuya etiqueta equivalga al valor de la expresin. Por otro lado, todas
las dems instrucciones que le sigan sern ejecutadas a menos que se les interrponga un break.
Y por ltimo, los tipos de datos bsicos que pueden ser usados tanto en la expresin como en las
etiquetas son byte, char o int.
IntroduccinaProcessingv1.5+

Docente:RalLacabanne

25
Veamos tres ejemplos:
intnum=1;//asigno1alenteronum.
switch(num){//conmutoalcasocuyovalorequivalgaaldenum
case0://estecasocontieneunaetiquetaquenoequivaleanum
println("Cero");//estainstruccinnoseejecutaryaquelaetiq.es0
break;
case1://estecasocontieneunaetiquetaquesequivaleanum
println("Uno");//imprime"Uno"enlaconsola
break;//saledelaestructuraswitch
}
println("Listo!");//imprime"Listo!"enlaconsola
charletra='N';//asignoNalcaracterletra
switch(letra){//conmutoalcasocuyovalorequivalgaaldeletra
case'A'://estecasonoequivalealetra
println("Alfa");//estainstruccinnoseejecutar
break;
case'B'://estecasotampocoequivalealetra
println("Bravo");
break;
default://yaquenoseencontrningncaso,seejecutaeste
println("Ninguna");//imprime"Ninguna"enlaconsola
break;//saledelaestructuraswitch
}
println("Listo!");//imprime"Listo!"enlaconsola
//Laremocindeun"break"permitelaevaluacindemsdeunvaloralavez
charletra='B';//asignoBalcaracterletra
switch(letra){//conmutoalcasocuyovalorequivalgaaldeletra
case'a'://estecasonoequivalealetra
case'A'://tampocoeste
println("Alfa");
break;
case'b'://tampocoeste
case'B'://peroestecasoscontieneunaetiquetaequivalente
println("Bravo");//imprime"Bravo"enlaconsola
break;
}
println("Listo!");//imprime"Listo!"enlaconsola

Operadores lgicos
En lgica proposicional se utilizan conectivas lgicas, tambin llamadas operadores lgicos. En
programacin se los utilizan para combinar valores de verdad y obtener nuevos valores que
determinen el flujo de control de un algoritmo o programa.
Los operadores lgicos presentes en Processing se usan para considerar ms de una condicin de
forma simultnea al combinar dos o ms expresiones relacionales. Tambin se los utiliza para
invertir los valores lgicos.
IntroduccinaProcessingv1.5+

Docente:RalLacabanne

26
Operador

Significado

&&

AND (Y conjuncin lgica)

||

OR (O disyuncin "inclusiva" lgica)

NOT (NO negacin)

El carcter utilizado para representar el operador OR se llama pleca. Para tipearlo debemos pulsar la
tecla que contiene alguno de los siguientes caracteres (que en general se encuentra a la izquierda de
la tecla 1):

Tablas de verdad
Repasemos entonces las tablas de verdad de dichos operadores:
Expresin

a&&b

Evaluaciones parciales

Evaluacin general

true&&true

true

true&&false

false

false&&true

false

false&&false

false

En relacin al operador lgico AND, note que para que la evaluacin general sea verdadera,
necesita que todas las evaluaciones parciales de las expresiones relacionales componentes sean
verdaderas.

Expresin

a||b

Evaluaciones parciales

Evaluacin general

true||true

true

true||false

true

false||true

true

false||false

false

Ahora, hablando del operador lgico OR, la evaluacin general ser verdadera tan slo si alguna de
las evaluaciones parciales resultase verdadera.

Expresin
!a

Evaluaciones parciales

Evaluacin general

!true

false

!false

true

Por ltimo, la utilizacin del operador NOT, invierte el valor de verdad, si es verdadero cambia a
falso y viceversa.

IntroduccinaProcessingv1.5+

Docente:RalLacabanne

27
Veamos tres ejemplos:
inta=10;
intb=20;
//Laexpresin"a>5"debeserverdaderay"b<30"tambindebeserlo.
//Debidoaqueambassonverdaderas,seejecutarelcdigodelbloque.
if((a>5)&&(b<30)){
line(20,50,80,50);
}
//Laexpresin"a>15"esfalsa,pero"b<30"esverdadera.
//DebidoaqueeloperadorANDrequierequeambassean
//verdaderas,noseejecutarelcdigodelbloque.
if((a>15)&&(b<30)){
ellipse(50,50,36,36);
}
inta=10;
intb=20;
//Cualquieradelasdosexpresionespuedenserverdaderas.
//Debidoaqueambassonverdaderas,seejecutarelcdigodelbloque.
if((a>5)||(b<30)){
line(20,50,80,50);
}
//Laexpresin"a>15"esfalsa,pero"b<30"esverdadera.
//DebidoaqueeloperadorORrequieresloqueunaparteseaverdadera
//entodalaexpresin,seejecutarelcdigodelbloque.
if((a>15)||(b<30)){
ellipse(50,50,36,36);
}
booleanb=true; //Asignatrueab
println(b);
//Imprime"true"
println(!b);
//Imprime"false"
b=!b;
//Asignafalseab
println(b);
//Imprime"false"
println(!b);
//Imprime"true"
println(5>3); //Imprime"true"
println(!(5>3));//Imprime"false"
intx=5;
//Declarayasigna5ax
println(!x);
//ERROR!Sloesposibletrabajarconvariablesbooleanas

IntroduccinaProcessingv1.5+

Docente:RalLacabanne

28

Lectura recomendada

Buioli, I. & Prez Marn, J. "Processing: un lenguaje al alcance de todos", Autoedicin,


2013, Unidad 5 "Control: Decisiones" (pag. 25).
Reas, C. & Fry, B. "Processing: A Programming Handbook for Visual Designers and
Artists, MIT Press, 2007, Captulo "Control 1: Decisions" (pag. 51).

Ejercicio 05

Realizar un boceto donde se declare una variable booleana que en funcin del valor dibuje:
si la evaluacin resulta true: un crculo con relleno negro.
en cambio, si la evaluacin resulta false: un crculo con relleno blanco.
Comentar todas las instrucciones.

Ejercicio 06

Realizar un boceto donde se dibuje una lnea horizontal a mitad de pantalla, y que adems
se declare una variable booleana que en funcin del valor dibuje:
si la evaluacin resulta true: un crculo con relleno negro.
en cambio, si la evaluacin resulta false: un crculo con relleno blanco.
Comentar todas las instrucciones.

Ejercicio 07

Realizar un boceto donde se declare una variable que en funcin del valor dibuje alguna de
las siguientes opciones:
un crculo sin relleno.
un crculo con relleno blanco.
un crculo con relleno negro.
Para la evaluacin se deber utilizar una estructura switch.
Comentar todas las instrucciones.

IntroduccinaProcessingv1.5+

Docente:RalLacabanne

Vous aimerez peut-être aussi