NOT, AND, OR e XOR: le quattro operazioni logiche che governano ogni decisione digitale
Cosa sono gli Operatori Logici
Nella Lezione A1 abbiamo imparato che una variabile booleana è un contenitore che può assumere solo due valori: VERO (1) oppure FALSO (0). Adesso facciamo il passo successivo: impariamo a combinare queste variabili per ottenere nuove informazioni.
Per capire il concetto, pensiamo a un esempio concreto. Immaginiamo di voler uscire a fare una passeggiata. La nostra decisione dipende da due condizioni: «Ho finito i compiti?» e «Fuori c’è bel tempo?». Ciascuna di queste condizioni è una variabile booleana, perché può essere vera o falsa. Ma la decisione finale — uscire o non uscire — dipende da come combiniamo le due risposte.
Potremmo decidere di uscire solo se entrambe le condizioni sono vere: ho finito i compiti e c’è bel tempo. Oppure potremmo decidere di uscire se almeno una delle due è vera. Il modo in cui combiniamo le condizioni cambia il risultato.
Definizione
Un operatore logico è un simbolo (o una parola chiave) che prende una o più variabili booleane in ingresso (input) e produce un risultato booleano in uscita (output), cioè un valore che è anch’esso VERO oppure FALSO. L’operatore definisce la regola con cui gli input vengono combinati per determinare l’output.
In questa lezione studieremo i quattro operatori fondamentali dell’algebra booleana:
| Operatore | Nome italiano | Input | Significato in breve |
|---|---|---|---|
| NOT | Negazione (inversione) | 1 | Inverte il valore: vero diventa falso, falso diventa vero |
| AND | Prodotto logico (congiunzione) | 2 | Vero solo se tutti gli input sono veri |
| OR | Somma logica (disgiunzione inclusiva) | 2 | Vero se almeno uno degli input è vero |
| XOR | Somma logica esclusiva (disgiunzione esclusiva) | 2 | Vero se gli input hanno valori diversi tra loro |
Questi quattro operatori sono i mattoni fondamentali con cui si costruisce qualsiasi ragionamento logico all’interno di un computer. Con essi si possono descrivere condizioni semplici e combinarle in condizioni sempre più complesse, esattamente come con le quattro operazioni aritmetiche si possono costruire calcoli di qualsiasi difficoltà.
Nota
Nella tabella qui sopra abbiamo indicato 2 input per AND, OR e XOR, perché in questa lezione li studieremo nella loro forma a due ingressi, che è la più comune. In realtà, AND e OR possono accettare anche più di due input, e il loro comportamento si estende in modo naturale: AND restituisce VERO solo se tutti gli input sono veri, OR restituisce VERO se almeno uno è vero. Anche XOR si può estendere a più input, ma la regola diventa diversa e la affronteremo in una lezione successiva. Per ora, concentriamoci sul caso a due input.
Come si legge una Tabella di Verità
Prima di affrontare i singoli operatori, dobbiamo imparare a leggere uno strumento fondamentale: la tabella di verità (in inglese truth table).
Definizione
Una tabella di verità è uno schema che elenca tutte le combinazioni possibili dei valori di input e, per ciascuna combinazione, mostra il valore dell’output prodotto dall’operatore logico. È il modo più chiaro e completo per descrivere il comportamento di un operatore.
Come funziona in pratica? Nelle colonne di sinistra troviamo le variabili di input (A, B, e così via), ciascuna con il proprio valore 0 o 1. Nell’ultima colonna a destra troviamo il risultato, cioè l’output dell’operazione logica, indicato spesso con la lettera Y. Ogni riga della tabella rappresenta un caso diverso: una specifica combinazione di valori degli input.
Quante righe ha una tabella di verità? Dipende dal numero di variabili di input. La regola è semplice: con n variabili di input, le combinazioni possibili sono 2ⁿ. Quindi:
| Numero di input | Calcolo | Righe nella tabella |
|---|---|---|
| 1 variabile (es. NOT) | 2¹ = 2 | 2 righe |
| 2 variabili (es. AND, OR, XOR) | 2² = 4 | 4 righe |
| 3 variabili | 2³ = 8 | 8 righe |
Nota pratica
Le tabelle di verità sono molto importanti perché non lasciano spazio a dubbi o interpretazioni. Ogni riga mostra un caso preciso con il suo risultato. Se impari a leggerle bene, capire qualsiasi operatore logico diventa immediato: basta guardare la tabella.
Operatore NOT — la Negazione
1 input ⟶ 1 output
L’operatore NOT è il più semplice tra tutti gli operatori logici. Ha un solo input e il suo lavoro è uno solo: invertire il valore che riceve. Se riceve VERO, restituisce FALSO. Se riceve FALSO, restituisce VERO. Per questo motivo viene chiamato anche negazione o inversione.
Definizione
L’operatore NOT (negazione) prende un singolo valore booleano in input e ne restituisce l’opposto. Se l’input è VERO (1), l’output è FALSO (0). Se l’input è FALSO (0), l’output è VERO (1).
Tabella di Verità di NOT
| A (input) | Y = NOT A (output) |
|---|---|
| 0 | 1 |
| 1 | 0 |
Esempi dalla vita quotidiana
| Situazione | Input (A) | NOT A (risultato) |
|---|---|---|
| La luce è accesa. Premi l’interruttore. | Accesa (1) | Spenta (0) |
| La luce è spenta. Premi l’interruttore. | Spenta (0) | Accesa (1) |
| Il telefono è in modalità silenziosa. Disattivi il silenzioso. | Silenzioso attivo (1) | Silenzioso disattivo (0) |
| La modalità aereo è disattivata. La attivi. | Aereo disattivo (0) | Aereo attivo (1) |
Come si scrive NOT
| Notazione | Esempio | Contesto d’uso |
|---|---|---|
NOT A | NOT A | Algebra booleana, pseudocodice |
!A | !A | Linguaggi di programmazione (JavaScript, PHP, C, Java) |
¬A | ¬A | Logica matematica formale |
| Ā | Ā | Elettronica digitale (barra sopra la variabile) |
Operatore AND — il Prodotto Logico
2 input ⟶ 1 output
L’operatore AND è chiamato anche prodotto logico o congiunzione. Il suo nome in inglese significa «e» (nel senso di «questa cosa E quest’altra cosa»). Il suo comportamento è semplice da ricordare: il risultato è VERO soltanto quando tutti gli input sono VERI. Basta che anche uno solo degli input sia falso perché l’intero risultato diventi falso.
Definizione
L’operatore AND (prodotto logico) prende due valori booleani in input e restituisce VERO (1) solo se entrambi gli input sono VERI (1). Se anche uno solo degli input è FALSO (0), il risultato è FALSO (0).
Tabella di Verità di AND
| A | B | Y = A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Ecco perché AND viene chiamato «prodotto logico»: si comporta come una moltiplicazione in cui 0 × qualsiasi cosa = 0. L’unico modo per ottenere 1 è moltiplicare 1 × 1.
Un trucco per ricordare AND
Pensate all’AND come a un genitore severo: per ottenere il permesso di uscire a passeggiare (risultato VERO), devono essere soddisfatte tutte le condizioni. «Hai finito i compiti? E c’è bel tempo? Solo se entrambe le risposte sono sì, puoi uscire.» Se anche una sola risposta è no, il permesso viene negato.
Esempi dalla vita quotidiana e dalla Tecnologia
| Situazione | Condizione A | Condizione B | Risultato (A AND B) |
|---|---|---|---|
| Login con autenticazione a due fattori | Password corretta? | Codice SMS corretto? | Accesso consentito solo se entrambi corretti |
| Acquisto online | Prodotto disponibile? | Pagamento andato a buon fine? | Ordine confermato solo se entrambi veri |
| Ammissione a un esame | Hai frequentato abbastanza ore? | Hai consegnato tutti i lavori? | Ammesso solo se entrambe le condizioni sono vere |
| Avvio di un’auto moderna | La chiave è rilevata? | Il pedale del freno è premuto? | Il motore si avvia solo se entrambe vere |
Come si scrive AND
| Notazione | Esempio | Contesto d’uso |
|---|---|---|
A AND B | A AND B | Algebra booleana, pseudocodice |
A && B | A && B | Linguaggi di programmazione (JavaScript, PHP, C, Java) |
A · B | A · B | Notazione matematica (simile alla moltiplicazione) |
A ∧ B | A ∧ B | Logica matematica formale |
Operatore OR — la Somma Logica
2 input ⟶ 1 output
L’operatore OR è chiamato anche somma logica o disgiunzione inclusiva. Il suo nome in inglese significa «oppure» (nel senso di «questa cosa OPPURE quest’altra cosa, oppure entrambe»). A differenza dell’AND, l’OR ha un comportamento più «generoso»: il risultato è VERO quando almeno uno degli input è VERO. L’unico caso in cui il risultato è falso è quando tutti gli input sono falsi.
Definizione
L’operatore OR (somma logica) prende due valori booleani in input e restituisce VERO (1) se almeno uno degli input è VERO (1). Il risultato è FALSO (0) soltanto quando entrambi gli input sono FALSI (0).
Tabella di Verità di OR
| A | B | Y = A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Un trucco per ricordare OR
Pensate all’OR come a un genitore permissivo: per ottenere il permesso di uscire, basta che sia soddisfatta almeno una condizione. «Hai finito i compiti OPPURE c’è bel tempo? Se almeno una delle due è vera, puoi uscire.» Il permesso viene negato solo se nessuna condizione è soddisfatta.
Esempi dalla vita quotidiana e dalla Tecnologia
| Situazione | Condizione A | Condizione B | Risultato (A OR B) |
|---|---|---|---|
| Sblocco di un telefono | Riconoscimento facciale riuscito? | Impronta digitale riconosciuta? | Telefono sbloccato se almeno uno funziona |
| Allarme antincendio | Il sensore del piano 1 rileva fumo? | Il sensore del piano 2 rileva fumo? | L’allarme suona se almeno un sensore rileva fumo |
| Sconto su un sito di e-commerce | Sei uno studente? | Hai un codice promozionale? | Ottieni lo sconto se almeno una condizione è vera |
| Connessione a Internet | Il Wi-Fi è disponibile? | La rete dati mobile è attiva? | Sei connesso se almeno una rete funziona |
Attenzione: OR inclusivo e OR esclusivo
L’OR della logica booleana è inclusivo: comprende anche il caso in cui entrambi gli input sono veri (ultima riga della tabella: 1 OR 1 = 1). Questo è diverso dal modo in cui a volte usiamo «oppure» nel linguaggio quotidiano, dove spesso intendiamo «o uno o l’altro, ma non entrambi». Quel significato esclusivo corrisponde a un altro operatore, lo XOR, che vedremo tra poco.
Come si scrive OR
| Notazione | Esempio | Contesto d’uso |
|---|---|---|
A OR B | A OR B | Algebra booleana, pseudocodice |
A || B | A || B | Linguaggi di programmazione (JavaScript, PHP, C, Java) |
A + B | A + B | Notazione matematica (simile alla somma) |
A ∨ B | A ∨ B | Logica matematica formale |
Operatore XOR — la Somma Logica Esclusiva
2 input ⟶ 1 output
L’operatore XOR (si pronuncia «ex-or») è chiamato anche somma logica esclusiva o OR esclusivo. La «X» iniziale sta per eXclusive, cioè esclusivo. Il suo comportamento è simile all’OR, ma con una differenza cruciale: il risultato è VERO solo quando gli input hanno valori diversi tra loro. Se entrambi gli input sono uguali (entrambi veri o entrambi falsi), il risultato è FALSO.
Definizione
L’operatore XOR (somma logica esclusiva) prende due valori booleani in input e restituisce VERO (1) quando i valori degli input sono diversi tra loro: uno è 1 e l’altro è 0. Il risultato è FALSO (0) quando entrambi gli input sono uguali (entrambi 0 oppure entrambi 1).
Tabella di Verità di XOR
| A | B | Y = A XOR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Un trucco per ricordare XOR
Pensate allo XOR come a una scelta obbligata: «primo o secondo a mensa, ma non entrambi». Se il menu dice «puoi scegliere il primo OPPURE il secondo», intende che puoi avere l’uno o l’altro, ma non tutti e due. Se scegli entrambi o nessuno dei due, la condizione non è soddisfatta.
Come si scrive XOR
| Notazione | Esempio | Contesto d’uso |
|---|---|---|
A XOR B | A XOR B | Algebra booleana, pseudocodice |
A ^ B | A ^ B | Linguaggi di programmazione (JavaScript, PHP, C, Java, Python) |
A ⊕ B | A ⊕ B | Notazione matematica formale |
Confronto tra i quattro Operatori
| A | B | A AND B | A OR B | A XOR B |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
Schema riassuntivo: quando l’output è VERO
| Operatore | L’output è VERO (1) quando… | Parola chiave |
|---|---|---|
| NOT | …l’input è FALSO (inverte il valore) | Opposto |
| AND | …tutti gli input sono VERI | Tutti |
| OR | …almeno un input è VERO | Almeno uno |
| XOR | …gli input sono diversi tra loro | Diversi |
Consiglio per lo studio
Se ricordate le quattro parole chiave — opposto, tutti, almeno uno, diversi — saprete sempre ricostruire la tabella di verità di ciascun operatore senza doverla memorizzare. Provate a farlo: prendete un foglio bianco, scrivete le quattro combinazioni di input (0,0 — 0,1 — 1,0 — 1,1) e per ciascuna chiedetevi «la parola chiave di questo operatore è soddisfatta?».
Gli Operatori Logici in PHP e JavaScript
Abbiamo studiato i quattro operatori in forma teorica. È il momento di vederli all’opera nel codice reale. PHP e JavaScript mettono a disposizione del programmatore esattamente questi operatori, con una sintassi specifica che è importante imparare fin da subito perché comparirà in ogni programma che scriveremo.
Sintassi degli Operatori nei due Linguaggi
| Operatore | PHP | JavaScript | Nota |
|---|---|---|---|
| NOT | ! | ! | Identica nei due linguaggi |
| AND | && oppure and | && | In PHP esiste anche la parola chiave and, ma && è preferita |
| OR | || oppure or | || | In PHP esiste anche la parola chiave or, ma || è preferita |
| XOR | ^ oppure xor | ^ | In PHP esiste anche la parola chiave xor |
Nota importante su PHP
In PHP gli operatori
and,orexorscritti come parole chiave hanno una priorità diversa rispetto a&&,||e^. Questa differenza può causare comportamenti inattesi nelle espressioni complesse. Per questa ragione, nella pratica professionale si preferisce sempre usare&&,||e^, ed è questa la convenzione che adotteremo in tutto il corso.
Operatore NOT in PHP e JavaScript
Il NOT si scrive con il punto esclamativo ! posto immediatamente prima della variabile o del valore da negare.
<?php
$piove = true;
$non_piove = !$piove; // false: il NOT inverte il valore
$luce_spenta = false;
$luce_accesa = !$luce_spenta; // true
var_dump($non_piove); // Output: bool(false)
var_dump($luce_accesa); // Output: bool(true)
?>
let piove = true;
let nonPiove = !piove; // false
let luceSpenta = false;
let luceAccesa = !luceSpenta; // true
console.log(nonPiove); // Output: false
console.log(luceAccesa); // Output: true
Il NOT viene usato frequentemente nel codice per verificare che una condizione non sia vera. Ad esempio: «se l’utente non è autenticato, mostra la pagina di login».
Operatore AND in PHP e JavaScript
Il AND si scrive con il doppio carattere &&. Il risultato è true solo se entrambe le condizioni sono vere.
<?php
$password_corretta = true;
$codice_sms_corretto = true;
$accesso_consentito = $password_corretta && $codice_sms_corretto;
var_dump($accesso_consentito); // Output: bool(true)
// Se anche una sola condizione è falsa, il risultato è false
$codice_sms_corretto = false;
$accesso_consentito = $password_corretta && $codice_sms_corretto;
var_dump($accesso_consentito); // Output: bool(false)
?>
let passwordCorretta = true;
let codiceSmsCorretto = true;
let accessoConsentito = passwordCorretta && codiceSmsCorretto;
console.log(accessoConsentito); // Output: true
// Se anche una sola condizione è falsa, il risultato è false
codiceSmsCorretto = false;
accessoConsentito = passwordCorretta && codiceSmsCorretto;
console.log(accessoConsentito); // Output: false
L’AND è l’operatore più usato nelle condizioni di accesso e di validazione: tutte le condizioni devono essere soddisfatte contemporaneamente prima di procedere.
Operatore OR in PHP e JavaScript
Il OR si scrive con il doppio carattere ||. Il risultato è true se almeno una delle condizioni è vera.
<?php
$wifi_disponibile = false;
$dati_mobili_attivi = true;
$connesso = $wifi_disponibile || $dati_mobili_attivi;
var_dump($connesso); // Output: bool(true)
// Basta che i dati mobili siano attivi per essere connessi
$wifi_disponibile = false;
$dati_mobili_attivi = false;
$connesso = $wifi_disponibile || $dati_mobili_attivi;
var_dump($connesso); // Output: bool(false)
// Nessuna connessione disponibile
?>
let wifiDisponibile = false;
let datiMobiliAttivi = true;
let connesso = wifiDisponibile || datiMobiliAttivi;
console.log(connesso); // Output: true
wifiDisponibile = false;
datiMobiliAttivi = false;
connesso = wifiDisponibile || datiMobiliAttivi;
console.log(connesso); // Output: false
L’OR è usato tipicamente quando vogliamo che un’azione sia possibile attraverso più percorsi alternativi: sblocco con impronta oppure con riconoscimento facciale, pagamento con carta oppure con bonifico, e così via.
Operatore XOR in PHP e JavaScript
Il XOR si scrive con il carattere ^. Il risultato è true solo quando i due valori sono diversi tra loro.
<?php
$piano_mensile = true;
$piano_annuale = false;
// L'utente ha scelto esattamente un piano: XOR è true
$scelta_valida = $piano_mensile ^ $piano_annuale;
var_dump($scelta_valida); // Output: bool(true)
// Se l'utente sceglie entrambi o nessuno: XOR è false
$piano_mensile = true;
$piano_annuale = true;
$scelta_valida = $piano_mensile ^ $piano_annuale;
var_dump($scelta_valida); // Output: bool(false)
?>
let pianoMensile = true;
let pianoAnnuale = false;
let sceltaValida = pianoMensile ^ pianoAnnuale;
console.log(Boolean(sceltaValida)); // Output: true
pianoMensile = true;
pianoAnnuale = true;
sceltaValida = pianoMensile ^ pianoAnnuale;
console.log(Boolean(sceltaValida)); // Output: false
Nota su XOR in JavaScript
In JavaScript l’operatore
^lavora sui bit dei numeri interi e non restituisce direttamente un valore booleano, ma un numero (0 oppure 1). Per ottenere un valore booleano esplicito è sufficiente avvolgere il risultato nella funzioneBoolean(), come mostrato nell’esempio. In PHP questo passaggio non è necessario perché^su variabili booleane restituisce direttamente un booleano. Lo XOR puro è meno frequente nel codice applicativo rispetto agli altri operatori, ma compare spesso negli algoritmi di crittografia e nella manipolazione dei bit.
Combinare gli Operatori: espressioni composte
Nella pratica, gli operatori si combinano tra loro per esprimere condizioni più articolate. Vediamo un esempio realistico: un sistema che verifica se un utente può accedere a una sezione riservata di un sito web.
<?php
$utente_autenticato = true;
$abbonamento_attivo = true;
$account_sospeso = false;
// L'accesso è consentito se:
// - l'utente è autenticato
// - ha un abbonamento attivo
// - il suo account NON è sospeso
$accesso = $utente_autenticato && $abbonamento_attivo && !$account_sospeso;
var_dump($accesso); // Output: bool(true)
?>
let utenteAutenticato = true;
let abbonamentoAttivo = true;
let accountSospeso = false;
// L'accesso è consentito se:
// - l'utente è autenticato
// - ha un abbonamento attivo
// - il suo account NON è sospeso
let accesso = utenteAutenticato && abbonamentoAttivo && !accountSospeso;
console.log(accesso); // Output: true
Osservate come il codice rispecchi quasi letteralmente il ragionamento logico espresso a parole. Questo è uno degli aspetti più importanti della programmazione: tradurre un ragionamento in codice in modo che il programma si comporti esattamente come intendiamo. La logica booleana è lo strumento che rende possibile questa traduzione.
Anticipazione
Nelle prossime lezioni vedremo come queste espressioni booleane vengano usate all’interno delle strutture condizionali (
if,else,while) per controllare il flusso di esecuzione di un programma. Per ora è importante avere chiari i quattro operatori e la loro sintassi nei due linguaggi: sono gli strumenti con cui costruiremo tutte le decisioni dei nostri programmi.
Esercizi di Verifica
Esercizio 1 — Completa le Tabelle di Verità
Tabella A — Operatore OR
| A | B | Y = A OR B |
|---|---|---|
| 0 | 0 | ? |
| 0 | 1 | ? |
| 1 | 0 | ? |
| 1 | 1 | ? |
Tabella B — Operatore XOR
| A | B | Y = A XOR B |
|---|---|---|
| 0 | 0 | ? |
| 0 | 1 | ? |
| 1 | 0 | ? |
| 1 | 1 | ? |
Tabella C — Operatore AND
| A | B | Y = A AND B |
|---|---|---|
| 0 | 0 | ? |
| 0 | 1 | ? |
| 1 | 0 | ? |
| 1 | 1 | ? |
Esercizio 2 — Quale Operatore?
Per ciascuna delle seguenti situazioni, indica quale operatore logico (NOT, AND, OR, XOR) descrive meglio la regola applicata. Spiega brevemente il perché della tua scelta.
- Per entrare in un locale, devi avere il biglietto e un documento d’identità.
- Puoi pagare con carta di credito oppure con il bancomat oppure in contanti.
- In un quiz a risposta singola, devi selezionare la risposta A oppure la risposta B, ma non entrambe.
- Quando metti il telefono in modalità silenziosa, le suonerie passano da attive a disattive.
- Un sito web concede l’accesso ai contenuti premium se l’utente ha un abbonamento attivo e ha effettuato il login.
- Un sistema di backup salva i dati se la connessione via cavo funziona oppure se la connessione Wi-Fi funziona.
- In un gioco a turni, è il turno del Giocatore 1 oppure del Giocatore 2, ma non di entrambi contemporaneamente.
- Quando premi il pulsante di accensione del computer, lo stato cambia: se era acceso diventa spento, se era spento diventa acceso.
Esercizio 3 — Calcola l’Output
Per ciascuna delle seguenti espressioni, calcola il risultato finale (0 o 1). Procedi un’operazione alla volta.
NOT 1= ?0 AND 1= ?1 OR 0= ?1 XOR 1= ?NOT 0= ?1 AND 1= ?0 OR 0= ?0 XOR 1= ?
Esercizio 4 — Espressioni composte
Calcola il risultato delle seguenti espressioni, che combinano più operatori. Risolvi prima l’operazione tra parentesi, poi applica l’operatore esterno.
NOT (1 AND 0)= ?NOT (0 OR 1)= ?(1 AND 1) OR 0= ?(0 OR 1) AND (1 OR 0)= ?NOT (1 XOR 0)= ?(1 AND 0) OR (0 AND 1)= ?(NOT 0) AND (NOT 1)= ?(1 XOR 1) OR (0 AND 1)= ?
Esercizio 5 — Dallo Scenario all’Espressione Logica
Leggi ciascun scenario e traduci la regola descritta in un’espressione logica usando gli operatori NOT, AND, OR, XOR. Indica anche il risultato per i valori forniti.
- Un distributore automatico eroga la bevanda solo se l’utente ha inserito l’importo corretto (A = 1) e ha premuto il pulsante di selezione (B = 1). Scrivi l’espressione e calcola il risultato per A = 1, B = 0.
- Un’app di messaggistica mostra la notifica se il telefono non è in modalità silenziosa (A = 1 significa «silenzioso attivo»). Scrivi l’espressione e calcola il risultato per A = 1.
- Un cancello automatico si apre se il sensore rileva un’auto in uscita (A = 1) oppure se qualcuno preme il pulsante di apertura (B = 1). Scrivi l’espressione e calcola il risultato per A = 0, B = 0.
- In una competizione a squadre, vince chi ha ottenuto il punteggio più alto (A) oppure chi ha completato la prova più velocemente (B), ma non può valere entrambi i criteri contemporaneamente. Scrivi l’espressione e calcola il risultato per A = 1, B = 1.
Esercizio 6 — Dal Codice alla Logica
Osserva il seguente codice PHP. Per ciascuna variabile risultante, indica quale operatore è stato usato, scrivi la corrispondente espressione logica in forma simbolica (es. A AND B) e calcola il valore atteso dell’output.
<?php
$A = true;
$B = false;
$C = true;
$risultato_1 = $A && $B;
$risultato_2 = $A || $B;
$risultato_3 = !$C;
$risultato_4 = $A ^ $C;
$risultato_5 = $A && !$B;
$risultato_6 = !$A || $B;
?>
Per ciascun risultato: indica l’operatore usato, scrivi il valore atteso (true o false) e spiega in una frase perché il risultato è quello che hai calcolato.
Esercizio 7 — Scrivi il Codice
Traduci ciascuna delle seguenti condizioni in una riga di codice PHP e in una riga di codice JavaScript, usando le variabili e gli operatori appropriati.
- «L’ordine viene spedito se il pagamento è confermato e il prodotto è disponibile in magazzino.»
- «La notifica appare se il suono non è disattivato.»
- «Il coupon è valido se l’utente è nuovo cliente oppure se ha un codice promozionale.»
- «Il turno cambia se esattamente uno dei due giocatori ha premuto il pulsante “fine turno”.»
Per ciascun punto, definisci prima le variabili con valori a tua scelta, poi scrivi l’espressione con l’operatore corretto, e infine stampa il risultato con var_dump() in PHP e con console.log() in JavaScript.
Esercizio 8 — Rispondi con parole tue
Rispondi alle seguenti domande scrivendo almeno tre righe per ciascuna risposta.
- Qual è la differenza principale tra AND e OR? Fai un esempio concreto per ciascuno.
- In che cosa si differenziano OR e XOR? Perché questa differenza è importante?
- Perché l’operatore NOT è diverso dagli altri tre? (Suggerimento: pensa al numero di input.)
- Perché in PHP si preferisce usare
&&invece diand? Cosa cambierebbe se li usassimo in modo intercambiabile?