Lección 8 · 8 de 20
Booleanos y comparaciones · Pascal
Compare valores en Pascal con =, <>, < y > y combine condiciones con and, or, not y xor para decidir quién sube a la montaña rusa.

Una comparación da un `Boolean`: True o False, que WriteLn escribe como TRUE y FALSE. Los operadores son =, <> (distinto), <, >, <= y >=. Recuerde: = compara y := asigna.
Las condiciones se combinan con `and` (tienen que cumplirse las dos), `or` (basta con una) y `not` (le da la vuelta). El resultado se puede guardar en una variable, como canRide o discount, y usarse después.
Lo más importante: en Pascal, and y or tienen más prioridad que las comparaciones, así que cada comparación va entre paréntesis: (height >= 140) and hasTicket. Sin ellos, age < 14 or age >= 65 se leería como age < (14 or age) >= 65 y no compilaría.
`xor` es verdadero cuando solo uno de los dos lados lo es. Además, Free Pascal evalúa and y or en cortocircuito: si con el primer lado ya sabe el resultado, no mira el segundo.
(age >= 10) and (age <= 12) comprueba que la edad está dentro de un intervalo; es el uso más típico dentro de un if.
Código · main.pas
program main;var age, height: Integer; hasTicket, isMember, canRide, discount: Boolean;begin age := 12; height := 145; hasTicket := True; isMember := False; // = compares (:= assigns) and <> means "not equal". WriteLn('Is the age 12? ', age = 12); WriteLn('Is the age not 18? ', age <> 18); WriteLn('Taller than 1.50 m? ', height > 150); // With and/or, each comparison goes in its own brackets. canRide := (height >= 140) and hasTicket; WriteLn('Can ride the roller coaster? ', canRide); discount := (age < 14) or (age >= 65) or isMember; WriteLn('Gets a discount? ', discount); WriteLn('Pays full price? ', not discount); // xor is true when exactly one side is true. WriteLn('Ticket or card, but not both? ', hasTicket xor isMember); if (age >= 10) and (age <= 12) then WriteLn('Category: junior');end.Salida · fpc main.pas && ./main
Is the age 12? TRUE Is the age not 18? TRUE Taller than 1.50 m? FALSE Can ride the roller coaster? TRUE Gets a discount? TRUE Pays full price? FALSE Ticket or card, but not both? TRUE Category: junior
Para recordar
- Las comparaciones dan
TrueoFalse. <>significa «distinto de».and,or,notyxorcombinan booleanos.- Cada comparación va entre paréntesis al usar
anduor.
Ejercicio
Añada una variable withAdult: Boolean y cambie canRide para que los menores de 8 años solo puedan subir acompañados: (height >= 140) and hasTicket and ((age >= 8) or withAdult).