Molte persone pensano che la codifica riguardi algoritmi complessi. Non lo è. Si tratta principalmente di fare scelte semplici. In C, queste scelte si riducono a una cosa: le espressioni booleane.
Li hai visti nelle istruzioni if e nei cicli ** while**. Sono i semafori del tuo programma. Il verde va. Il rosso si ferma.
Prendi questo esempio di base.
Chiede un numero. Controlla se quel numero è inferiore a zero. Se lo è, il programma parla. Se non lo è? Silenzio.
La parte “(b < 0)" è l'espressione booleana. C lo valuta. Vero significa eseguire la riga successiva. Falso significa saltarlo. Semplice.
Ma cosa succede quando hai bisogno di più sfumature?
Gestione dei valori zero e positivi
Il singolo controllo sopra lascia una lacuna. Cosa succede se l’utente inserisce zero? O un numero intero positivo? Il programma li ignora.
Ecco una struttura leggermente più complessa.
Ora hai la logica per i valori negativi, zero e positivi. Le sezioni “else if” e “else” rilevano gli altri casi. È ancora basilare, ma copre tutte le basi.
Condizioni complesse e insidie comuni
La logica del mondo reale raramente rimane semplice. A volte sono necessarie due condizioni affinché siano vere contemporaneamente.
Considera questa riga:
Leggilo come l’inglese. Se x è uguale a y AND j è maggiore di k, imposta z su 1. Altrimenti, imposta q su 10.
Notare gli operatori.
C utilizza == per testare l’uguaglianza. Utilizza un singolo = per assegnare un valore.
Questa è una trappola classica. Se scrivi “if (x = y)”, non stai controllando se sono uguali. Stai assegnando y a x, quindi controllando se il risultato è diverso da zero. La tua logica si rompe. Utilizzare sempre doppi uguali per i confronti.
Il simbolo && rappresenta un’operazione booleana AND. Entrambe le parti devono essere vere.
Il toolkit completo per gli operatori booleani
Non è necessario memorizzarli, ma dovresti sapere come sono. Appaiono ovunque nel codice C.
- Uguaglianza :
== - Disuguaglianza :
!= - Meno di :
< - Maggiore di :
> - Minore o uguale a :
<= - Maggiore o uguale a :
>= - AND :
&& - O :
|| - NON :
!
Perché questo è importante per gli utenti quotidiani
Logica di looping in C: strutture while, do- while e for
Puoi usare i cicli ** while con la stessa facilità delle istruzioni if** di base. Considera un semplice esempio:
Questo codice ripete queste due righe finché a è maggiore o uguale a b. La struttura è semplice. Il C offre anche un costrutto do- while, che garantisce che il blocco di codice venga eseguito almeno una volta prima di verificare la condizione. Ecco uno snippet che mostra un controllo di input di base:
Come il ciclo for semplifica l'iterazione
Il ciclo for è essenzialmente una scorciatoia per un ciclo ** while**. Se hai un codice come questo:
Puoi comprimerlo in una singola istruzione for :
Il ciclo ** while ha tre parti distinte: inizializzazione ( x=1), test ( x<10) e incremento ( x++). Il ciclo for** li racchiude in un'unica riga. Ma non sei limitato a variabili semplici. Guarda questo scenario più complesso:
Puoi riscriverlo usando un ciclo for :
Sembra disordinato. È confuso. Ma funziona. L'operatore virgola consente di concatenare più istruzioni nelle sezioni di inizializzazione e incremento di un ciclo for. Tuttavia, non puoi inserire una virgola nella sezione test.
Molti programmatori C adorano racchiudere la logica in un'unica riga. Altri sostengono che distrugga la leggibilità. Non esiste un consenso universale. Devi solo decidere se preferisci la brevità alla chiarezza.
Il pericolo di = vs == nelle espressioni booleane
Il doppio segno di uguale == è fonte di frequenti bug in C. Gli sviluppatori spesso digitano per errore un singolo segno di uguale =. Il compilatore accetta entrambi, ma il comportamento è drasticamente diverso.
In C, le espressioni booleane vengono valutate come numeri interi. Zero significa Falso. Qualsiasi numero intero diverso da zero significa Vero. Ciò significa che puoi scrivere legalmente:
Ma cosa succede se scrivi "if (a=b)"?
Questo non è un confronto. È un incarico. L'istruzione "if (a=b)" assegna il valore di b a a, quindi verifica la veridicità booleana del valore risultante di a. Se a diventa zero, la condizione è False. Se diventa qualcos'altro, è Vero.
La tua variabile a cambia valore durante questo processo. Questo è raramente ciò che desideri quando intendi confrontare i valori. Sebbene questa funzionalità di assegnazione condizionale possa essere utile in contesti specifici, è una trappola per gli incauti. Fai attenzione all'utilizzo di = e ==. Un errore di battitura cambia tutto.


























