Hasta ahora hemos visto los operadores:
relacionales (>, <, >=, <= , =, <>) matemáticos (+, -, *, /, div).
pero nos están faltando otros operadores imprescindibles que son los operadores lógicos lógicos:
and, or
Estos dos operadores se emplean fundamentalmente en las estructuras condicionales para agrupar varias condiciones simples.
Traducido se lo lee como "Y". Si la Condición 1 es verdadera Y la condición 2 es verdadera luego ejecutar la rama del verdadero.
Cuando vinculamos dos o más condiciones con el operador "and", las dos condiciones deben ser verdaderas para que el resultado de la condición compuesta de Verdadero y continúe por la rama del verdadero de la estructura condicional.
Cada condición simple en Pascal debe ir entre paréntesis en forma obligatoria.
La utilización de operadores lógicos permiten en muchos casos plantear algoritmos más cortos y comprensibles.
Confeccionar un programa que lea por teclado tres números distintos y nos muestre el mayor.
El planteo del diagrama de flujo es:
Este ejercicio está resuelto sin emplear operadores lógicos en un concepto anterior.
La primera estructura condicional es una ESTRUCTURA CONDICIONAL COMPUESTA con una CONDICION COMPUESTA.
Podemos leerla de la siguiente forma:
Si el contenido de la variable num1 es mayor al contenido de la variable num2 Y si el contenido de la variable num1 es mayor al contenido de la variable num3 entonces la CONDICION COMPUESTA resulta Verdadera.
Si una de las condiciones simples da falso la CONDICION COMPUESTA da Falso y continua por la rama del falso.
Es decir que se mostrará el contenido de num1 si y sólo si num1>num2 y num1>num3.
En caso de ser Falsa la condición, analizamos el contenido de num2 y num3 para ver cual tiene un valor mayor.
En esta segunda estructura condicional no se requieren operadores lógicos al haber una condición simple.
program Proyecto19; {$APPTYPE CONSOLE} var num1, num2, num3: Integer; begin Write('Ingrese primer valor:'); ReadLn(num1); Write('Ingrese segundo valor:'); ReadLn(num2); Write('Ingrese tercer valor:'); ReadLn(num3); if (num1 > num2) and (num1 > num3) then begin Write('El mayor es:', num1); end else begin if num2 > num3 then begin Write('El mayor es:', num2); end else begin Write('El mayor es:', num3); end; end; ReadLn; end.
Traducido se lo lee como "O". Si la condición 1 es Verdadera O la condición 2 es Verdadera, luego ejecutar la rama del Verdadero.
Cuando vinculamos dos o más condiciones con el operador "or", con que una de las dos condiciones sea Verdadera alcanza para que el resultado de la condición compuesta sea Verdadero.
Se carga una fecha (día, mes y año) por teclado. Mostrar un mensaje si corresponde al primer trimestre del año (enero, febrero o marzo). Cargar por teclado el valor numérico del día, mes y año. Ejemplo: 10 5 2017.
El planteo del diagrama de flujo es:
La carga de una fecha se hace por partes, ingresamos las variables dia, mes y Aóo.
program Proyecto20; {$APPTYPE CONSOLE} var dia, mes, año: Integer; begin Write('Ingrese el número de día:'); ReadLn(dia); Write('Ingrese el número de mes:'); ReadLn(mes); Write('Ingrese el número de año:'); ReadLn(año); if (mes = 1) or (mes = 2) or (mes = 3) then begin Write('Corresponde al primer trimestre'); end; ReadLn; end.
program Proyecto21; {$APPTYPE CONSOLE} var dia, mes, año: Integer; begin Write('Ingrese el número de día:'); ReadLn(dia); Write('Ingrese el número de mes:'); ReadLn(mes); Write('Ingrese el número de año:'); ReadLn(año); if (dia = 25) and (mes = 12) then begin Write('La fecha ingresada corresponde a navidad'); end; ReadLn; end. program Proyecto22; {$APPTYPE CONSOLE} var num1, num2, num3: Integer; suma, producto: Integer; begin Write('Ingrese primer valor:'); ReadLn(num1); Write('Ingrese segundo valor:'); ReadLn(num2); Write('Ingrese tercer valor:'); ReadLn(num3); if (num1 = num2) and (num1 = num3) then begin suma := num1 + num2; WriteLn('La suma del primer y segundo valor es:', suma); producto := suma * num3; Write('La suma del primero y segundo multiplicado por el tercero:', producto); end; ReadLn; end. program Proyecto23; {$APPTYPE CONSOLE} var num1, num2, num3: Integer; begin Write('Ingrese primer valor:'); ReadLn(num1); Write('Ingrese segundo valor:'); ReadLn(num2); Write('Ingrese tercer valor:'); ReadLn(num3); if (num1 < 10) and (num2 < 10) and (num3 < 10) then begin Write('Todos los números son menores a diez'); end; ReadLn; end. program Proyecto24; {$APPTYPE CONSOLE} var num1, num2, num3: Integer; suma, producto: Integer; begin Write('Ingrese primer valor:'); ReadLn(num1); Write('Ingrese segundo valor:'); ReadLn(num2); Write('Ingrese tercer valor:'); ReadLn(num3); if (num1 < 10) or (num2 < 10) or (num3 < 10) then begin Write('Alguno de los números es menor a diez'); end; ReadLn; end. program Proyecto25; {$APPTYPE CONSOLE} var x, y: Integer; begin Write('Ingrese coordenada x:'); ReadLn(x); Write('Ingrese coordenada y:'); ReadLn(y); if (x > 0) and (y > 0) then begin Write('Se encuentra en el primer cuadrante'); end else begin if (x < 0) and (y > 0) then begin Write('Se encuentra en el segundo cuadrante'); end else begin if (x < 0) and (y < 0) then begin Write('Se encuentra en el tercer cuadrante'); end else begin Write('Se encuentra en el cuarto cuadrante'); end; end; end; ReadLn; end. program Proyecto26; {$APPTYPE CONSOLE} var sueldo: Double; antiguedad: Integer; aumento: Double; sueldoTotal: Double; begin Write('Ingrese sueldo del empleado:'); ReadLn(sueldo); Write('Ingrese su antiguedad en años:'); ReadLn(antiguedad); if (sueldo < 500) and (antiguedad > 10) then begin aumento := sueldo * 0.20; sueldoTotal := sueldo + aumento; Write('Sueldo a pagar:', sueldoTotal:0:2); end else begin if sueldo < 500 then begin aumento := sueldo * 0.05; sueldoTotal := sueldo + aumento; Write('Sueldo a pagar:', sueldoTotal:0:2); end else begin Write('Sueldo a pagar:', sueldo:0:2); end; end; ReadLn; end. program Proyecto27; {$APPTYPE CONSOLE} var num1, num2, num3: Integer; begin Write('Ingrese primer valor:'); ReadLn(num1); Write('Ingrese segundo valor:'); ReadLn(num2); Write('Ingrese tercer valor:'); ReadLn(num3); if (num1 < num2) and (num1 < num3) then begin Write(num1); end else begin if num2 < num3 then begin Write(num2); end else begin Write(num3); end; end; Write(' - '); if (num1 > num2) and (num1 > num3) then begin Write(num1); end else begin if num2 > num3 then begin Write(num2); end else begin Write(num3); end; end; ReadLn; end.