8 trucchi sorprendenti usando gli operatori logici nella programmazione

Ultimo aggiornamento: 27 giugno 2025
  • Gli operatori logici sono essenziali nella programmazione per prendere decisioni e controllare il flusso di esecuzione.
  • Il cortocircuito AND e OR ottimizza l'efficienza evitando valutazioni non necessarie.
  • Facilitano la creazione di query complesse nei database attraverso combinazioni di condizioni.
  • Sono fondamentali nella programmazione funzionale, consentendo la composizione di funzioni in modo dichiarativo.
operatori logici nella programmazione

1. Operatori logici nella programmazione

  1. AND (&&): restituisce true se entrambi gli operandi sono true.
  2. OR (||): Restituisce true se almeno uno degli operandi è true.
  3. NOT (!): inverte il valore di verità dell'operando.
Fondamenti di programmazione
Articolo correlato:
Fondamenti di programmazione: concetti di base

2. Il potere del cortocircuito negli operatori 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 di assegnazione
Articolo correlato:
Operatori di assegnazione essenziali

3. Operatori logici nelle strutture di controllo

Semplificare le condizioni complesse


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")

Utilizzo degli operatori logici nei cicli


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 bit a bit

Il trucco XOR per lo scambio di variabili


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

Controllo di parità con 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 nella programmazione funzionale

Composizione di funzioni con 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 nella programmazione reattiva


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);
cos'è lo pseudocodice
Articolo correlato:
Che cos'è PSeInt e come può aiutarti a imparare la programmazione?

6. Ottimizzazione delle prestazioni con operatori logici

Valutazione pigra con 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")
parti di un algoritmo di programmazione
Articolo correlato:
5 parti di un algoritmo di programmazione

Semplificazione delle espressioni booleane


# 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")
Come inserire le formule in Excel
Articolo correlato:
Come inserire le formule in Excel

7. Operatori logici nei database

Query complesse con operatori logici


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

Ottimizzazione delle query con 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&#';
architettura di von neumann
Articolo correlato:
8 aspetti dell'architettura di Von Neumann

8. Operatori logici nella programmazione parallela e concorrente

Sincronizzazione con 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);
}
Carlo Babbage
Articolo correlato:
Charles Babbage: 7 contributi all'informatica

Operatori logici negli algoritmi di consenso


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

Conclusione

  1. Semplificare le strutture di controllo
  2. Ottimizzare le prestazioni utilizzando tecniche come la valutazione pigra
  3. Creare query complesse nei database
  4. Facilitare la programmazione funzionale e reattiva
  5. Coordinare l'esecuzione in sistemi paralleli e concorrenti
  Come usare Switch in Python: una guida definitiva con esempi e alternative

Domande Frequenti

  • AND (&&): restituisce true se entrambi gli operandi sono true.
  • OR (||): Restituisce true se almeno uno degli operandi è true.
  • NOT (!): inverte il valore di verità dell'operando.
  1. Utilizzare il cortocircuito per evitare valutazioni non necessarie.
  2. Semplificazione di espressioni booleane complesse.
  3. Implementazione della valutazione lazy per ritardare calcoli costosi.

SELECT * FROM productos WHERE (precio > 100 AND categoria = 'electrónica') OR (descuento > 0.5)
  1. Comporre funzioni più complesse a partire da funzioni più semplici.
  2. Implementare le strutture di controllo del flusso in modo dichiarativo.
  3. Filtrare e trasformare le raccolte di dati.

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