venerdì 3 ottobre 2025

Corso di JavaScript & Programmazione Web: 3 – Strutture di controllo

3 – Strutture di Controllo

1. Introduzione generale

Le strutture di controllo costituiscono il cuore di ogni linguaggio di programmazione. Esse permettono di modificare il normale flusso sequenziale di esecuzione delle istruzioni, introducendo la possibilità di:

  • prendere decisioni (branching);

  • ripetere istruzioni (looping);

  • selezionare alternative in maniera efficiente.

Dal punto di vista teorico, tali strutture sono collegate alla logica booleana e all’algebra dei predicati, che rappresentano il fondamento matematico della programmazione. Secondo il teorema di Böhm-Jacopini (1966), qualsiasi algoritmo può essere implementato utilizzando solo tre strutture fondamentali:

  1. sequenza,

  2. selezione (if/else, switch),

  3. iterazione (for, while).


2. Strutture condizionali

2.1 If/Else

Il costrutto if permette di eseguire un blocco di codice solo se una condizione è vera. La forma generale è:

if (condizione) { istruzioni } else { istruzioni alternative }\text{if (condizione) \{ istruzioni \} else \{ istruzioni alternative \}}

📘 Esempio (Python)

x = 7
if x % 2 == 0:
    print("Numero pari")
else:
    print("Numero dispari")

📘 Esempio (JavaScript)

let x = 7;
if (x % 2 === 0) {
    console.log("Numero pari");
} else {
    console.log("Numero dispari");
}

2.2 Operatori logici

Gli operatori logici consentono di combinare condizioni:

  • AND (&& o and) → vero solo se entrambe le condizioni sono vere.

  • OR (|| o or) → vero se almeno una condizione è vera.

  • NOT (! o not) → inverte il valore della condizione.

📘 Esempio combinato

eta = 20
cittadinanza = "italiana"
if eta >= 18 and cittadinanza == "italiana":
    print("Puoi votare")

3. Strutture iterative

3.1 Ciclo For

Il ciclo for è utile quando si conosce a priori il numero di iterazioni.

📘 Esempio

for i in range(5):   # ripete da 0 a 4
    print("Iterazione:", i)

3.2 Ciclo While

Il ciclo while viene usato quando non si conosce il numero di iterazioni a priori, ma si ripete finché una condizione è vera.

📘 Esempio

n = 0
while n < 5:
    print("n vale:", n)
    n += 1

3.3 Ciclo For…of (o foreach)

Nei linguaggi moderni (JavaScript, Python, Java) esiste un costrutto per iterare direttamente sugli elementi di una collezione.

📘 Esempio (JavaScript)

let numeri = [2, 4, 6, 8];
for (let n of numeri) {
    console.log(n);
}

📘 Esempio (Python – foreach implicito)

numeri = [2, 4, 6, 8]
for n in numeri:
    print(n)

4. Switch/Case

Lo switch è un costrutto che semplifica la gestione di più condizioni alternative. È concettualmente simile a una catena di if/elif, ma più leggibile.

📘 Esempio (JavaScript)

let giorno = 3;
switch (giorno) {
    case 1:
        console.log("Lunedì");
        break;
    case 2:
        console.log("Martedì");
        break;
    case 3:
        console.log("Mercoledì");
        break;
    default:
        console.log("Altro giorno");
}

5. Esercizio applicativo – Stampare i numeri pari

Traccia

Scrivere un programma che stampi solo i numeri pari da 1 a N.

Soluzione 1 – Ciclo For con condizione

N = 20
for i in range(1, N+1):
    if i % 2 == 0:
        print(i)

Soluzione 2 – Incremento diretto (più efficiente)

N = 20
for i in range(2, N+1, 2):  # parte da 2 e salta di 2
    print(i)

Soluzione 3 – While loop

N = 20
i = 2
while i <= N:
    print(i)
    i += 2

Soluzione 4 – For…of con filtro (JavaScript)

let numeri = Array.from({length: 20}, (_, i) => i + 1);
for (let n of numeri) {
    if (n % 2 === 0) {
        console.log(n);
    }
}

6. Osservazioni critiche

  • Efficienza: la seconda soluzione evita condizioni logiche, riducendo il numero di confronti.

  • Generalizzazione: lo stesso approccio può essere usato per stampare multipli di 3, numeri primi, ecc.

  • Didattica: l’esercizio è ideale per introdurre il concetto di modularità e ottimizzazione.


7. Conclusione

Il modulo sulle strutture di controllo non è soltanto un momento introduttivo, ma segna il passaggio dall’uso “statico” del linguaggio a un utilizzo realmente algoritmico. Con if, for, while e switch si entra nella dimensione del calcolo automatico in senso stretto: decisioni e ripetizioni, gli stessi meccanismi logici che caratterizzano l’agire umano, trovano una formalizzazione esatta all’interno del linguaggio di programmazione.


Nessun commento:

Posta un commento

Corso Fondamenti di Informatica e Reti: 6 Reti di computer e Internet

Reti di computer e Internet Introduzione Prova a pensare alla vita quotidiana senza reti informatiche: niente messaggi WhatsApp, niente m...