Intro Processing v1.5 - 06 - Raúl Lacabanne

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: