gl/ripetizioni

Foglio elettronico e primo algoritmo in seconda

Riferimenti assoluti e relativi, funzioni e grafici, poi il passaggio dal diagramma a blocchi al codice: informatica in seconda all'istituto tecnico.

di Gaetano Livornese

  • #informatica
  • #seconda superiore
  • #tecnico
  • #foglio elettronico
  • #algoritmi
  • #programmazione

In seconda, negli istituti tecnici, il programma di informatica del biennio sta lavorando (o sta per lavorare) sul foglio elettronico — riferimenti, funzioni, grafici — prima di passare ad algoritmi, diagrammi a blocchi e al primo linguaggio di programmazione. La prova pratica al PC su queste due parti arriva tipicamente fra inizio e fine novembre, quindi fra sei e dieci settimane da adesso, con la verifica sugli algoritmi subito dopo. Sono due argomenti diversi ma collegati: il foglio elettronico insegna a ragionare su dati e formule, gli algoritmi insegnano a ragionare su istruzioni — e chi capisce bene il primo arriva più preparato al secondo.

Il problema concreto: perché una tabella “si rompe” quando la trascini

Quello che vedo più spesso, quando un ragazzo mi porta un file Excel o Google Sheets che “non funziona”, è una tabella dove una formula corretta nella prima riga diventa sbagliata appena la trascini in basso. Il colpevole, quasi sempre, è la differenza fra riferimento relativo e riferimento assoluto, ed è esattamente il punto su cui verte quasi ogni prova pratica di seconda.

Procedura passo passo: riferimenti, funzioni, grafici

1. Riferimenti relativi e assoluti: A1 contro $A$1

Quando scrivi una formula come =B2*C2 in una cella e poi la trascini verso il basso o verso destra, il foglio elettronico non copia la formula identica: la adatta, spostando i riferimenti della stessa quantità di righe o colonne di cui hai trascinato. Questo comportamento si chiama riferimento relativo, ed è il default di ogni cella scritta senza simboli particolari.

Il simbolo $ blocca la parte a cui viene messo davanti, impedendo che si adatti trascinando:

  • A1 — riferimento relativo: sia la colonna che la riga si adattano quando trascini;
  • $A$1 — riferimento assoluto: sia la colonna che la riga restano fisse, sempre A1 in ogni cella dove trascini la formula;
  • A$1misto, riga bloccata: la colonna si adatta, la riga resta sempre 1;
  • $A1misto, colonna bloccata: la colonna resta sempre A, la riga si adatta.

Il caso classico che rompe una tabella intera: hai un’aliquota IVA in una cella fissa, per esempio B1, e la usi in una formula come =A2*B1 per calcolare il totale della riga 2. Se trascini quella formula verso il basso senza il simbolo $, alla riga 3 il foglio calcolerà =A3*B2, alla riga 4 =A4*B3, e così via: il riferimento all’aliquota “scivola” via dalla cella giusta. La formula corretta da trascinare è =A2*$B$1: così il riferimento al prezzo (A2) resta relativo e si adatta a ogni riga, mentre il riferimento all’aliquota ($B$1) resta bloccato su quella cella, sempre.

2. Le funzioni che servono davvero

Nella maggior parte degli esercizi di seconda tornano sempre le stesse funzioni, ed è più utile saperle usare bene che conoscerne cento a memoria:

  • =SOMMA(A2:A10) — somma un intervallo di celle;
  • =MEDIA(A2:A10) — calcola la media di un intervallo;
  • =SE(B2>100;"sì";"no") — restituisce un valore o l’altro in base a una condizione: è la funzione logica di base, quella che introduce il concetto di condizione anche nel foglio elettronico, prima ancora di vederlo in un linguaggio di programmazione;
  • =CONTA.SE(B2:B10;">50") — conta quante celle di un intervallo soddisfano una condizione;
  • =SOMMA.SE(B2:B10;">50";C2:C10) — somma i valori di un intervallo, ma solo per le righe che soddisfano una condizione su un altro intervallo;
  • =CERCA.VERT(A2;$D$2:$F$10;3;FALSO) — cerca un valore nella prima colonna di una tabella e restituisce il valore corrispondente in un’altra colonna della stessa riga: qui il riferimento assoluto sulla tabella ($D$2:$F$10) non è un dettaglio, è quasi sempre obbligatorio, perché altrimenti l’intervallo di ricerca “scivola” trascinando la formula esattamente come nell’esempio dell’aliquota.

3. Come si scelgono gli intervalli

Un errore banale ma frequente è selezionare un intervallo che non copre tutte le righe con dati, oppure che ne copre troppe (righe vuote in fondo alla tabella), falsando MEDIA o CONTA.SE. La regola pratica: prima di scrivere la formula, guarda dove finiscono davvero i dati (l’ultima riga piena), e usa quell’intervallo — non un numero arbitrario “abbondante” scelto a occhio.

4. Che grafico usare per quale dato

Nella prova pratica capita quasi sempre di dover scegliere il grafico giusto per un insieme di dati, e qui l’errore più comune è usare sempre la torta perché “sembra il grafico più completo”:

  • istogramma a barre: quando devi confrontare valori diversi tra categorie diverse (le vendite di quattro prodotti in un mese) — è la scelta giusta nella maggior parte dei casi;
  • grafico a linee: quando devi mostrare l’andamento di un valore nel tempo (la temperatura registrata ogni ora, le vendite mese per mese) — le linee rendono visibile la tendenza, che con le barre si vede peggio;
  • grafico a torta: solo quando devi mostrare come si divide un totale in parti (le percentuali di voto a un sondaggio) — e solo se le categorie sono poche, non più di 5-6, altrimenti diventa illeggibile.

La torta è quasi sempre la scelta sbagliata quando i dati cambiano nel tempo o quando ci sono molte categorie: è il grafico più “riconoscibile” ma anche il più spesso usato a sproposito.

Dal diagramma a blocchi al codice

La seconda metà del programma cambia completamente strumento, ma non cambia il modo di ragionare: si tratta sempre di prendere dei dati, applicare delle regole, e produrre un risultato — prima con formule nel foglio, ora con istruzioni in un linguaggio.

1. Il diagramma a blocchi: gli elementi di base

Un diagramma a blocchi descrive un algoritmo con pochi simboli standard:

  • un ovale per inizio e fine;
  • un rettangolo per un’istruzione o un’operazione (assegnare un valore, fare un calcolo);
  • un parallelogramma per input e output (leggere un dato, stampare un risultato);
  • un rombo per una decisione, con due uscite (sì/no, vero/falso);
  • una freccia per collegare i blocchi e indicare l’ordine di esecuzione, che in un ciclo torna indietro su un blocco già passato.

2. Lo stesso algoritmo, prima a blocchi poi in codice

Qui uso Python perché è il linguaggio più diffuso per iniziare — se nella tua scuola si usa C++, la struttura logica (variabili, input, decisione, ciclo, output) è identica: cambia solo la sintassi.

3. Tipi e casting: l’errore che il programma non segnala

In Python (e in quasi ogni linguaggio), la funzione che legge un dato da tastiera restituisce sempre una stringa di testo, anche se l’utente digita un numero. Questo produce l’errore più comune del primo modulo:

eta = input("Quanti anni hai? ")
eta_doppia = eta + eta
print(eta_doppia)

Se l’utente digita 5, questo codice non stampa 10: stampa 55, perché eta è la stringa "5", non il numero 5, e il simbolo + tra due stringhe le concatena (le attacca una dopo l’altra) invece di somarle. Per ottenere il numero bisogna convertire esplicitamente la stringa in un numero intero con int() — questa conversione si chiama casting:

eta = int(input("Quanti anni hai? "))
eta_doppia = eta + eta
print(eta_doppia)

Ora, con eta = 5, il programma stampa correttamente 10. La regola da ricordare: ogni volta che leggi un dato con input() e ci devi fare un calcolo numerico, va convertito con int() (numeri interi) o float() (numeri con la virgola) prima di usarlo in un’operazione aritmetica.

L’errore tipico da evitare

L’errore più costoso, in assoluto, è dimenticare il casting dopo input() e scoprirlo solo quando il programma produce un risultato assurdo senza segnalare nessun errore: Python non si blocca, esegue comunque la concatenazione di stringhe e restituisce un numero che sembra plausibile ma è sbagliato. Prendi l’abitudine di chiederti, ogni volta che scrivi input(): “il valore che sto leggendo mi serve come testo o come numero?” — e se serve come numero, il casting va scritto nella stessa riga, non aggiunto dopo che qualcosa non torna.

Due esercizi svolti

Esercizio 1 — foglio elettronico: tabella di spesa con colonna calcolata.

Hai una tabella con colonna A (nome del prodotto), colonna B (prezzo unitario) e colonna C (quantità acquistata), dalla riga 2 alla riga 6. In E1 c’è la percentuale di sconto per acquisti sopra i 100 €, per esempio 10%. Devi calcolare in colonna D il totale di riga, con lo sconto applicato solo se il totale prima dello sconto supera 100 €.

Procedimento cella per cella. Prima calcoliamo il totale grezzo di riga in una colonna d’appoggio (o direttamente dentro la formula): =B2*C2 è il totale prima dello sconto della riga 2. Poi la formula finale in D2 deve controllare se quel totale supera 100 e, in caso affermativo, applicare lo sconto preso da E1 con riferimento assoluto (perché lo sconto è uno solo, in una cella fissa, e la formula deve poterlo trascinare su tutte le righe):

D2:  =SE(B2*C2>100;B2*C2*(1-$E$1);B2*C2)

Trascinando questa formula da D2 a D6, i riferimenti a B e C si adattano a ogni riga (relativi), mentre $E$1 resta sempre puntato sulla stessa cella dello sconto (assoluto). Se alla riga 3 il totale grezzo fosse 120 € e lo sconto in E1 fosse 10%, il risultato sarebbe 120 × (1 - 0,10) = 108 €; se alla riga 4 il totale grezzo fosse 60 €, sotto la soglia, il risultato resterebbe 60 € senza sconto.

Esercizio 2 — lo stesso problema come algoritmo: diagramma e codice Python.

Stesso problema, semplificato a una sola spesa: leggere prezzo unitario e quantità, calcolare il totale, applicare il 10% di sconto se il totale supera 100 €, stampare il totale finale.

Diagramma a blocchi, descritto a parole: Inizio → Input prezzo unitario → Input quantità → Calcola totale = prezzo × quantità → Decisione: totale > 100? → (sì) Calcola totale = totale × 0,9 → (in entrambi i casi confluisce su) Stampa totale → Fine.

Codice Python:

prezzo = float(input("Prezzo unitario: "))
quantita = int(input("Quantità: "))

totale = prezzo * quantita

if totale > 100:
    totale = totale * 0.9

print("Totale da pagare:", totale)

Verifica del risultato. Con prezzo = 15 e quantita = 8, il totale grezzo è . Siccome , si applica lo sconto: . Il programma stampa Totale da pagare: 108.0 — lo stesso risultato dell’esercizio 1 con i numeri della riga 3, ottenuto stavolta con un algoritmo invece che con una formula.

Su informatica del biennio tecnico non abbiamo ancora una simulazione dedicata: nelle simulazioni per il liceo trovi quelle di matematica e fisica, la categoria più vicina per allenarsi su esercizi a tempo — la risposta corretta è gratis, la soluzione guidata si sblocca con la prima lezione.

Dove porta questo argomento

Il foglio elettronico e il primo algoritmo non sono due parentesi isolate: sono le basi su cui si costruisce tutto il resto del corso. Se l’anno scorso, in prima, hai visto i sistemi di numerazione e il binario, qui stai facendo il passo successivo: da come un computer rappresenta i dati a come si scrive un programma che li elabora. E l’anno prossimo, in terza, il codice diventerà la materia principale con cicli annidati e array — qui ci siamo fermati volutamente al primo ciclo e alla prima decisione, quella base serve tutta per affrontare bene il salto successivo.

Le lezioni di informatica sono online, uno a uno, e spesso il blocco non è capire “cosa fa” un SE o un if, ma abituarsi a scomporre un problema in passaggi piccoli, uno alla volta. Se vuoi una mano, la prima chiacchierata è gratuita → contatti.

Continua a leggere

Post correlati.

Vuoi applicare quello che hai letto?

Parliamone 30 minuti gratis: guardiamo insieme dove sei bloccato e ti dico onestamente come posso aiutarti.

Oppure scrivimi su WhatsApp.