Strutture dati: array, lista concatenata, pila, coda
Una struttura dati è un modo di ordinare i dati perché un programma li usi in fretta e con facilità.
- Array: dimensione fissa, gli elementi stanno uno accanto all'altro e si raggiungono con l'indice (a[3]). Inserire nel mezzo è lento.
- Lista concatenata (dinamica): ogni nodo contiene un valore e un collegamento al nodo successivo. Cresce e si riduce quando serve, ma per arrivare all'elemento 5 devi passare dagli elementi da 1 a 4.
- Pila (stack): push e pop solo a un'estremità (LIFO). Si usa per annulla, tasto indietro e controllo delle parentesi.
- Coda (queue): si aggiunge in fondo, si toglie dalla testa (FIFO). Si usa per i lavori di stampa e le file d'attesa.
Le librerie contengono già questi strumenti. In Python una list funziona come pila (append, pop) e collections.deque funziona come coda veloce. Se esiste una libreria, usala: non riscriverla.
stack = []
stack.append(5); stack.append(8)
stack.pop() # gives 8
from collections import deque
q = deque([4, 9]); q.append(2)
q.popleft() # gives 4
Usare un IDE: scrivere, eseguire, provare
Un IDE (ambiente di sviluppo integrato) mette in un unico posto un editor, un pulsante per eseguire, un debugger e altri strumenti. Colora il codice, suggerisce i nomi e mostra gli errori mentre scrivi.
- Esegui il programma e leggi il risultato.
- Prova con dati facili, normali e difficili (una lista vuota, lo zero, un numero enorme).
- Debug: metti un punto di interruzione (breakpoint) e vai avanti riga per riga per vedere come cambiano le variabili.
Visualizzazione e animazione in 2D e 3D
Le immagini ci aiutano a vedere gli schemi. I programmi possono disegnare grafici (a barre, a linee, a dispersione), disegni 2D e scene 3D. Un'animazione è la stessa immagine disegnata più volte, con un piccolo cambiamento ogni volta (circa da 30 a 60 volte al secondo). Un modo semplice: tieni una variabile come x, aggiungi un poco a ogni fotogramma e ridisegna. Il 3D di questa pagina è fatto allo stesso modo, con una libreria 3D.
Funzioni avanzate del foglio di calcolo
I fogli di calcolo possono fare lavori da programma con le funzioni:
IF(B2>=50,"Pass","Fail")sceglie tra due risultati (in italiano SE).SUMIF(B2:B5,">=50")somma solo le celle che rispettano una regola (in italiano SOMMA.SE);COUNTIFle conta (CONTA.SE).VLOOKUP(2, A2:B5, 2, FALSE)cerca il 2 nella prima colonna e restituisce il valore della colonna 2 sulla stessa riga (in italiano CERCA.VERT).XLOOKUPfa lo stesso in modo più semplice.- Le tabelle pivot riassumono molti dati per gruppi, e i grafici mostrano il risultato.
Database relazionali e SQL
Un database relazionale tiene i dati in tabelle fatte di righe e colonne. Ogni tabella ha una chiave primaria, una colonna con valori unici (l'id). Un'altra tabella usa quel valore come chiave esterna per collegarsi. Un buon progetto salva ogni informazione una sola volta, così non ci sono dati ripetuti.
SQL è il linguaggio per fare domande e cambiare i dati:
SELECT name, score FROM students
JOIN marks ON students.id = marks.id
WHERE score >= 50 ORDER BY score DESC;
INSERT INTO marks (id, score) VALUES (5, 67);
UPDATE marks SET score = 55 WHERE id = 2;
DELETE FROM marks WHERE id = 5;Integrità vuol dire che i dati restano corretti: le chiavi sono uniche, una chiave esterna deve corrispondere a una riga vera e i valori devono avere il tipo giusto. Sicurezza vuol dire password per gli utenti, a ogni utente solo i permessi che servono, copie di sicurezza e mai costruire SQL incollando il testo dell'utente nella query (usa i parametri): così si evita la SQL injection.
Contribuire alle risorse aperte
Molti strumenti e librerie sono open source: chiunque può leggerli, usarli e migliorarli secondo una licenza. Puoi aiutare correggendo un errore, migliorando una guida, traducendo una pagina o aggiungendo un esempio. Leggi sempre la licenza, cita gli autori e scrivi messaggi chiari e gentili quando proponi una modifica.
Prova tu
Nel 3D, passo 5, metti 3 elementi in una pila (push), poi toglili (pop). Scrivi l'ordine. Fai lo stesso con una coda. Poi prima prevedi, dopo controlla: se aggiungi 4, 9, 2 e togli un elemento, quale valore resta in testa alla coda e in cima alla pila?
Formule e definizioni chiave
- Pila = LIFO (l'ultimo che entra esce per primo): push, pop.
- Coda = FIFO (il primo che entra esce per primo): enqueue, dequeue.
- Array: dimensione fissa, accesso con l'indice. Lista concatenata: dimensione dinamica, si seguono i collegamenti.
- SELECT colonne FROM tabella WHERE condizione
- Chiave primaria = id unico. Chiave esterna = collegamento a un'altra tabella.
Esempi svolti
1. Gli elementi 5, 8 e 2 vengono messi in una pila in quest'ordine. Poi si fa pop due volte. Cosa c'è ora in cima?
Pila dopo i push: 5, 8, 2 (il 2 in cima). Il pop toglie il 2, poi l'8. Resta: 5. In cima c'è 5.
2. Gli elementi 4, 9, 2 entrano in una coda in quest'ordine. Si fa un dequeue. Quale elemento è ora in testa?
Il primo entrato esce, quindi si toglie il 4. In testa c'è il 9.
3. Tabella dei voti: id da 1 a 4 con punteggi 72, 45, 88, 51. Quante righe restituisce WHERE score >= 50?
72, 88 e 51 sono 50 o più. Sono 3 righe.
4. Le celle B2:B5 contengono 72, 45, 88, 51. Quanto dà =SUMIF(B2:B5,">=50")?
Somma solo 72, 88 e 51: 72 + 88 + 51 = 211.
5. Perché usare una pila per controllare le parentesi come ( [ ] ) in un'espressione?
Si fa push di ogni parentesi aperta. Quando arriva una parentesi chiusa, si fa pop e si controlla che corrisponda. L'ultima aperta deve chiudersi per prima (LIFO), ed è quello che dà una pila. Se alla fine la pila è vuota, le parentesi sono corrette.
Errori comuni
- Usare un array quando non si sa prima la dimensione. Meglio una lista o una lista concatenata.
- Confondere pila e coda. La pila toglie l'elemento più nuovo; la coda toglie il più vecchio.
- Dimenticare WHERE in UPDATE o DELETE: così si cambiano tutte le righe.
- Costruire SQL incollando il testo dell'utente in una stringa. Usa invece i parametri.