Fondamenti di C/C++

Condizioni, cicli e switch in C e C++

In questa lezione combinerai cicli e l'istruzione switch in un piccolo programma che calcola la media e assegna un giudizio.

Introduzione

L'istruzione if sceglie un percorso in base a una condizione vera o falsa, switch gestisce casi con valori distinti, e i cicli ripetono un blocco finché non si raggiunge una condizione di arresto. La sintassi di queste istruzioni è quasi identica in C e C++.

Punti importanti

  • Attiva gli avvisi del compilatore (compiler warning) e correggili tutti.
  • Comprendi bene il tipo di dato e la durata (lifetime) di ogni valore.
  • Controlla sempre i dati in ingresso e i limiti degli indici degli array.

Guarda come funziona

Sposta il cursore per cambiare il punteggio. Il diagramma di flusso illumina il percorso seguito dal programma e la riga di codice corrispondente viene evidenziata.

Esempi di codice C e C++

C
Esegui →
main.c
#include <stdio.h>

int main(void) {
    int scores[] = {92, 71, 84};
    int total = 0;
    for (int i = 0; i < 3; ++i) total += scores[i];
    int average = total / 3;
    switch (average / 10) {
        case 10: case 9: puts("Grade A"); break;
        case 8: puts("Grade B"); break;
        default: puts("Keep practicing");
    }
    return 0;
}
Risultato dell'esecuzione
Grade B
C++
Esegui →
main.cpp
#include <iostream>
#include <vector>

int main() {
    std::vector<int> scores{92, 71, 84};
    int total = 0;
    for (int score : scores) total += score;
    switch ((total / static_cast<int>(scores.size())) / 10) {
        case 10: case 9: std::cout << "Grade A\n"; break;
        case 8: std::cout << "Grade B\n"; break;
        default: std::cout << "Keep practicing\n";
    }
}
Risultato dell'esecuzione
Grade B

Confronto tra C e C++

Il ciclo for somma i tre voti per calcolare la media, poi switch usa average / 10 per scegliere il giudizio. Usa sempre le parentesi graffe, anche quando il blocco ha una sola riga, e ricordati di mettere break alla fine di ogni case perché il programma non passi per sbaglio al case successivo. Anche l'indice dell'array deve restare sempre entro i limiti.

C

C usa piccole funzioni procedurali e mostra apertamente come i dati sono rappresentati in memoria.

C++

C++ continua a permettere il lavoro a basso livello, ma aggiunge tipi di libreria e astrazioni più sicure.

Esercizi di approfondimento

Esegui entrambe le versioni e poi modifica il codice per osservare la differenza di sicurezza che offre ciascun linguaggio.

  • Prova input non validi e valori ai limiti.
  • Compila con i flag -Wall -Wextra -Wpedantic per attivare più avvisi.
  • Sposta le dichiarazioni condivise in un file header e l'implementazione in un altro file.

Esercitati con una sfida

Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.

Tutte le sfide