8 trucuri uimitoare folosind operatori logici în programare

Ultima actualizare: 27 iunie 2025
  • Operatorii logici sunt esențiali în programare pentru luarea deciziilor și controlul fluxului de execuție.
  • Scurtcircuitarea operațiilor ȘI și SAU optimizează eficiența prin evitarea evaluărilor inutile.
  • Acestea facilitează crearea de interogări complexe în bazele de date prin combinații de condiții.
  • Acestea sunt fundamentale în programarea funcțională, permițând compunerea funcțiilor într-o manieră declarativă.
operatori logici în programare

1. Operatori logici în programare

  1. AND (&&): returnează adevărat dacă ambii operanzi sunt adevărati.
  2. SAU (||): Returnează adevărat dacă cel puțin unul dintre operanzi este adevărat.
  3. NOT (!): inversează valoarea de adevăr a operandului.
Fundamentele programării
Articol asociat:
Fundamentele de programare: concepte de bază

2. Puterea scurtcircuitului în operatorii logici


function esAdulto(edad) {
    return edad && edad >= 18;
}

console.log(esAdulto(0));  // false
console.log(esAdulto(20)); // true

function saludar(nombre) {
    nombre = nombre || "invitado";
    console.log("Hola, " + nombre + "!");
}

saludar(); // Hola, invitado!
saludar("María"); // Hola, María!
Operatori de atribuire
Articol asociat:
Operatori esențiali de atribuire

3. Operatori logici în structurile de control

Simplificarea condițiilor complexe


def puede_conducir(edad, tiene_licencia, esta_sobrio):
    return edad >= 18 and tiene_licencia and esta_sobrio

# Uso
if puede_conducir(25, True, True):
    print("Puedes conducir")
else:
    print("No puedes conducir")

Utilizarea operatorilor logici în bucle


def buscar_elemento(lista, elemento):
    i = 0
    while i < len(lista) and lista != elemento:
        i += 1
    return i if i < len(lista) else -1

# Uso
mi_lista = 
print(buscar_elemento(mi_lista, 5))  # 2
print(buscar_elemento(mi_lista, 6))  # -1

4. Operatori logici pe biți

Trucul XOR pentru schimbarea variabilelor


void intercambiar(int *a, int *b) {
    *a = *a ^ *b;
    *b = *a ^ *b;
    *a = *a ^ *b;
}

// Uso
int x = 5, y = 10;
intercambiar(&x, &y);
printf("x = %d, y = %d\n", x, y);  // x = 10, y = 5

Verificarea parității cu operatori logici


bool es_par(int n) {
    return !(n & 1);
}

// Uso
printf("%d es %s\n", 4, es_par(4) ? "par" : "impar");  // 4 es par
printf("%d es %s\n", 7, es_par(7) ? "par" : "impar");  // 7 es impar

5. Operatori logici în programarea funcțională

Compunerea funcțiilor cu operatori logici


const esMayorDeEdad = edad => edad >= 18;
const tienePermiso = usuario => usuario.tienePermiso;

const puedeAcceder = usuario => esMayorDeEdad(usuario.edad) && tienePermiso(usuario);

// Uso
const usuario1 = { edad: 20, tienePermiso: true };
const usuario2 = { edad: 17, tienePermiso: true };

console.log(puedeAcceder(usuario1));  // true
console.log(puedeAcceder(usuario2));  // false

Operatori logici în programarea reactivă


import { fromEvent, merge } from 'rxjs';
import { map, filter } from 'rxjs/operators';

const clicks = fromEvent(document, 'click');
const moves = fromEvent(document, 'mousemove');

const clicksOrMoves = merge(
  clicks.pipe(map(() => 'click')),
  moves.pipe(map(() => 'move'))
);

clicksOrMoves.pipe(
  filter(event => event === 'click' || (event === 'move' && Math.random() < 0.1))
).subscribe(console.log);
ce este pseudocodul
Articol asociat:
Ce este PSeInt și cum vă poate ajuta să învățați programarea?

6. Optimizarea performanței cu operatori logici

Evaluare leneșă cu operatori logici


def operacion_costosa():
    print("Ejecutando operación costosa...")
    return True

def operacion_rapida():
    print("Ejecutando operación rápida...")
    return False

# Sin evaluación perezosa
if operacion_rapida() and operacion_costosa():
    print("Ambas operaciones son verdaderas")

# Con evaluación perezosa
if operacion_costosa() and operacion_rapida():
    print("Ambas operaciones son verdaderas")
părți ale unui algoritm de programare
Articol asociat:
5 părți ale unui algoritm de programare

Simplificarea expresiilor booleene


# Antes de la optimización
if (a and b) or (a and c) or (b and c):
    print("Condición cumplida")

# Después de la optimización
if a or b or c:
    print("Condición cumplida")
Cum se pun formule în Excel
Articol asociat:
Cum se pun formule în Excel

7. Operatori logici în baze de date

Interogări complexe cu operatori logici


SELECT nombre, edad, salario
FROM empleados
WHERE (edad > 30 AND salario > 50000) OR (experiencia > 5 AND departamento = 'IT');

Optimizarea interogărilor cu operatori logici


-- Consulta potencialmente lenta
SELECT *
FROM productos
WHERE categoria = 'electrónica' OR precio > 1000;

-- Consulta optimizada
SELECT *
FROM productos
WHERE categoria = 'electrónica'
UNION
SELECT *
FROM productos
WHERE precio > 1000 AND categoria != 'electrónica&#';
arhitectura von neumann
Articol asociat:
8 Aspecte ale arhitecturii Von Neumann

8. Operatori logici în programare paralelă și simultană

Sincronizare cu operatori logici atomici


#include <stdatomic.h>

atomic_bool recurso_disponible = ATOMIC_VAR_INIT(true);

void usar_recurso() {
    while (!atomic_compare_exchange_weak(&recurso_disponible, &(bool){true}, false)) {
        // Esperar
    }
    // Usar el recurso
    atomic_store(&recurso_disponible, true);
}
Charles Babbage
Articol asociat:
Charles Babbage: 7 contribuții la informatică

Operatori logici în algoritmi de consens


def es_lider(nodo):
    return nodo.termino_actual >= max(otros_nodos.termino_actual) y \
           nodo.log_actualizado and \
           nodo.votos_recibidos > len(otros_nodos) / 2

Concluzie

  1. Simplificați structurile de control
  2. Optimizați performanța folosind tehnici precum evaluarea leneșă
  3. Creați interogări complexe în baze de date
  4. Facilitează programarea funcțională și reactivă
  5. Coordonează execuția în sisteme paralele și concurente
  Ghid complet pentru notația poloneză inversă

Preguntas Frecuentes

  • AND (&&): returnează adevărat dacă ambii operanzi sunt adevărati.
  • SAU (||): Returnează adevărat dacă cel puțin unul dintre operanzi este adevărat.
  • NOT (!): inversează valoarea de adevăr a operandului.
  1. Folosind scurtcircuitarea pentru a evita evaluările inutile.
  2. Simplificarea expresiilor booleene complexe.
  3. Implementarea evaluării leneșe pentru a întârzia calculele costisitoare.

SELECT * FROM productos WHERE (precio > 100 AND categoria = 'electrónica') OR (descuento > 0.5)
  1. Compuneți funcții mai complexe din funcții mai simple.
  2. Implementați structuri de control al fluxului într-o manieră declarativă.
  3. Filtrați și transformați colecțiile de date.

const numeros = ;
const pares = numeros.filter(n => n % 2 === 0);