Upload
raul-lacabanne
View
213
Download
0
Embed Size (px)
Citation preview
7/23/2019 Intro Processing v1.5 - 06 - Ral Lacabanne
1/8
21
Punto 6 Control: decisiones
Expresiones relacionales
Las expresiones relacionales nos informan la condicin de verdad de dicha expresin. Unaexpresin relacional compara dos valores y evala si el resultado es verdadero (true) o falso (false):
Expresin relacional Evaluacin
3 ! false
3 " ! true
! " 3 false
! 3 true
Operadores relacionales
Los operadores relacionales #ue encontramos disponi$les para tra$a%ar en &rocessin' son:
Operador Significado
> ayor #ue
< enor #ue
>= ayor o e#uivalente a
7/23/2019 Intro Processing v1.5 - 06 - Ral Lacabanne
2/8
22
resulte verdadera. La condicinpuede estar comprendida por una expresin relacional (o varias
vinculadas mediante conectores l'icos, #ue veremos m0s adelante.
5eamos un e%emplo:
boolean dibujoCirculo = true; // asigno verdadero a la booleana dibujoCirculo
if (dibujoCirculo == true) { // si dibujoCirculo equivale a verdadero,
ellipse(50, 50, 50, 50); // entonces dibujo una elipse.}rect(30, 45, 40, 10); // dibujo rectngulo
Estructura condicional: if/else
hora veamos otro tipo de estructura, if/else:
if (condicin) {acciones 1} else {
acciones 2}
sto si'nifica #ue cuando el pro'rama se encuentre con esta estructura se e%ecutar0n las acciones
1 siempre y cuando la evaluacin de la condicinresulte verdadera6 por otra parte, si dicha
evaluacin resultase falsa, se e%ecutar0n las acciones 2.
Introduccin a Processing v1.5+ Docente: Ral Lacabanne
7/23/2019 Intro Processing v1.5 - 06 - Ral Lacabanne
3/8
23
5eamos un e%emplo:
boolean dibujoCirculo = true; // asigno verdadero a la booleana dibujoCirculo
if (dibujoCirculo == true) { // si dibujoCirculo equivale a verdadero, ellipse(50, 50, 50, 50); // entonces dibujo una elipse;} else { // en caso contrario, line(25, 25, 75, 75); // dibujo dos lneas. line(75, 25, 25, 75);}rect(30, 45, 40, 10); // dibujo rectngulo
Estructura condicional: if/else if
continuacin veremos un tercer tipo de estructura condicional, if/else if:
if (condicin 1) {acciones 1} else if (condicin 2){acciones 2}
uando el pro'rama se encuentre con esta estructura se e%ecutar0n las acciones 1 siempre y
cuando la evaluacin de la condicin 1 resulte verdadera6 por otra parte, si dicha evaluacin
resultase falsa, se evaluar0 una se'unda condicin, condicin 2, y en caso de resultar verdadera,
se e%ecutar0n las acciones 2.
Introduccin a Processing v1.5+ Docente: Ral Lacabanne
7/23/2019 Intro Processing v1.5 - 06 - Ral Lacabanne
4/8
27
larifi#uemos con un e%emplo:
boolean dibujoCirculo = false; // asigno falso a la booleana dibujoCirculoboolean dibujoElipse = false; // asigno falso a la booleana dibujoElipse
if (dibujoCirculo == true) { // si dibujoCirculo equivale a verdadero, ellipse(50, 50, 50, 50); // entonces dibujo una elipse;} else if (dibujoElipse == true){// pero si dibujoElipse equivale a verdadero, ellipse(50, 50, 50, 25); // entonces dibujo otra elipse.}rect(30, 45, 40, 10); // dibujo rectngulo
Estructura condicional: switch
n la pr0ctica funciona como una estructura if, sin em$ar'o es conveniente utili8ar switchcuando
usted necesita seleccionar una opcin entre muchas.
switch (expresin) { case etiqueta 1:
instrucciones 1 case etiqueta 2: // opcional instrucciones 2 // opcional... default: // opcional instrucciones 3 // opcional}
uando el pro'rama se encuentre con una estructura switch, se e%ecutar0n las instrucciones
correspondientes al casecuya etiquetae#uival'a al valor de la expresin. &or otro lado, todas
las dem0s instrucciones#ue le si'an ser0n e%ecutadas a menos #ue se les interrpon'a un break.
9 por ltimo, los tipos de datos $0sicos #ue pueden ser usados tanto en la expresincomo en las
etiquetasson byte, charo int.
Introduccin a Processing v1.5+ Docente: Ral Lacabanne
7/23/2019 Intro Processing v1.5 - 06 - Ral Lacabanne
5/8
2!
5eamos tres e%emplos:
int num = 1; // asigno 1 al entero num.
switch(num) { // conmuto al caso cuyo valor equivalga al de num case 0: // este caso contiene una etiqueta que no equivale a num println("Cero"); // esta instruccin no se ejecutarya que la etiq. es 0 break; case 1: // este caso contiene una etiqueta que sequivale a num println("Uno"); // imprime "Uno" en la consola break; // sale de la estructura switch}println("Listo!"); // imprime "Listo!" en la consola
char letra = 'N'; // asigno N al caracter letra
switch(letra) { // conmuto al caso cuyo valor equivalga al de letra case 'A': // este caso no equivale a letra println("Alfa"); // esta instruccin no se ejecutar break; case 'B': // este caso tampoco equivale a letra println("Bravo"); break; default: // ya que no se encontrningn caso, se ejecuta este println("Ninguna"); // imprime "Ninguna" en la consola break; // sale de la estructura switch}println("Listo!"); // imprime "Listo!" en la consola
// La remocin de un "break" permite la evaluacin de ms de un valor a la vez
char letra = 'B'; // asigno B al caracter letra
switch(letra) { // conmuto al caso cuyo valor equivalga al de letra case 'a': // este caso no equivale a letra case 'A': // tampoco este println("Alfa"); break; case 'b': // tampoco este case 'B': // pero este caso scontiene una etiqueta equivalente println("Bravo"); // imprime "Bravo" en la consola break;}println("Listo!"); // imprime "Listo!" en la consola
Operadores lgicos
n l'ica proposicional se utili8an conectivas l'icas, tam$i/n llamadas operadores l'icos. n
pro'ramacin se los utili8an para com$inar valores de verdad y o$tener nuevos valores #ue
determinen el flu%o de control de un al'oritmo o pro'rama.
Los operadores l'icos presentes en &rocessin' se usan para considerar m0s de una condicin de
forma simult0nea al com$inar dos o m0s expresiones relacionales. am$i/n se los utili8a para
invertir los valores l'icos.
Introduccin a Processing v1.5+ Docente: Ral Lacabanne
7/23/2019 Intro Processing v1.5 - 06 - Ral Lacabanne
6/8
2;
Operador Significado
&& *< (9 = con%uncin l'ica)
|| >? (> = disyuncin @inclusiva@ l'ica)
! *> (*> = ne'acin)
l car0cter utili8ado para representar el operador >? se llama pleca. &ara tipearlo de$emos pulsar la
tecla #ue contiene al'uno de los si'uientes caracteres (#ue en 'eneral se encuentra a la i8#uierda de
la tecla 1):
Tablas de verdad
?epasemos entonces las ta$las de verdad de dichos operadores:
Expresin Evaluaciones parciales Evaluacin general
a && b
true&& true true
true && false false
false && true false
false && false false
n relacin al operador l'ico *?, la evaluacin 'eneral ser0 verdadera tan slo si al'una de
las evaluaciones parciales resultase verdadera.
Expresin Evaluaciones parciales Evaluacin general
!a!true false
!false true
&or ltimo, la utili8acin del operador *>, invierte el valor de verdad, si es verdadero cam$ia a
falso y viceversa.
Introduccin a Processing v1.5+ Docente: Ral Lacabanne
7/23/2019 Intro Processing v1.5 - 06 - Ral Lacabanne
7/8
2A
5eamos tres e%emplos:
int a = 10;int b = 20;
// La expresin "a > 5" debe ser verdadera y "b < 30" tambin debe serlo.// Debido a que ambas son verdaderas, se ejecutarel cdigo del bloque.
if ((a > 5) && (b < 30)) { line(20, 50, 80, 50);}
// La expresin "a > 15" es falsa, pero "b < 30" es verdadera.// Debido a que el operador AND requiere que ambas sean// verdaderas, no se ejecutarel cdigo del bloque.
if ((a > 15) && (b < 30)) {
ellipse(50, 50, 36, 36);}
int a = 10;int b = 20;
// Cualquiera de las dos expresiones pueden ser verdaderas.// Debido a que ambas son verdaderas, se ejecutarel cdigo del bloque.
if ((a > 5) || (b < 30)) { line(20, 50, 80, 50);}
// La expresin "a > 15" es falsa, pero "b < 30" es verdadera.// Debido a que el operador OR requiere slo que una parte sea verdadera// en toda la expresin, se ejecutarel cdigo del bloque.
if ((a > 15) || (b < 30)) { ellipse(50, 50, 36, 36);}
boolean b = true; // Asigna true a bprintln(b); // Imprime "true"println(!b); // Imprime "false"b = !b; // Asigna false a bprintln(b); // Imprime "false"println(!b); // Imprime "true"println(5 > 3); // Imprime "true"println(!(5 > 3));// Imprime "false"int x = 5; // Declara y asigna 5 a xprintln(!x); // ERROR! Slo es posible trabajar con variables booleanas
Introduccin a Processing v1.5+ Docente: Ral Lacabanne
7/23/2019 Intro Processing v1.5 - 06 - Ral Lacabanne
8/8
2B
Lectura recomendada
4uioli, C. D &/re8 ar-n, E. @&rocessin': un len'ua%e al alcance de todos@, utoedicin,
2F13, Unidad ! @ontrol: