Esercizi di manipolazione dati in Javascript
CSV
1. Calciatori
Dato un CSV come il seguente:
Nome,Cognome,Ruolo,Età
Luca,Rossi,Portiere,25
Marco,Bianchi,Difensore,28
Giovanni,Esposito,Centrocampista,22
Alessandro,Russo,Attaccante,30
Federico,Romano,Difensore,27
Matteo,Colombo,Centrocampista,24
Simone,Ricci,Attaccante,29
Andrea,Marino,Portiere,26Scrivere una funzione generatrice che crea un oggetto con i seguenti metodi pubblici:
a) load(csv): funzione che riceve in input la stringa CSV, e salva (in una variabile privata) la lista dei giocatori (va bene sia come lista di dizionari che come lista di liste).
b) role(roleName): funzione che riceve in ingresso un ruolo (es. “centrocampista”) e restituisce l’elenco dei giocatori che ricoprono tale ruolo ordinata per età.
2. Magazzino
Dato un CSV come il seguente:
nome,categoria,prezzo,quantità
pane,alimenti,2,108
latte,alimenti,1,89
uova,alimenti,3,64
pasta,alimenti,2,120
riso,alimenti,2,75
farina,alimenti,1,90
zucchero,alimenti,1,60
sale,alimenti,1,40
olio,alimenti,5,55
burro,alimenti,3,45
formaggio,alimenti,4,38
yogurt,alimenti,2,50
biscotti,alimenti,2,70
caffè,alimenti,4,65
tè,alimenti,3,42
miele,alimenti,5,30
acqua,bevande,1,200
succo,bevande,2,95
cola,bevande,2,110
birra,bevande,3,85
vino,bevande,6,40
detersivo,casalinghi,2,53
sapone,casalinghi,1,88
spugna,casalinghi,1,60
candeggina,casalinghi,2,35
scottex,casalinghi,3,70
sacchetti,casalinghi,2,100
piatti,casalinghi,5,25
bicchieri,casalinghi,4,30
pentola,casalinghi,15,10
padella,casalinghi,18,8
forchette,casalinghi,6,40
coltelli,casalinghi,8,35
cucchiai,casalinghi,6,45
spazzolino,igiene,2,90
dentifricio,igiene,3,75
shampoo,igiene,4,60
bagnoschiuma,igiene,4,55
deodorante,igiene,3,65
rasoio,igiene,5,40
crema,igiene,6,35
asciugamani,igiene,10,20
lenzuola,casa,25,12
cuscino,casa,18,15
coperta,casa,30,8
lampadina,casa,3,50
prolunga,casa,7,25
caricatore,elettronica,12,30
mouse,elettronica,15,20
tastiera,elettronica,25,10a) Leggere la stringa CSV e produrre un oggetto lista che contiene come elementi gli oggetti della lista (sotto forma di dizionari).
b) Scrivere una funzione che riceve in ingresso il dizionario creato e genera un CSV risultato con questa struttura:
nome, categoria, valoreDove valore indica il valore totale (prezzo * quantità)
Ad esempio:
nome, categoria, valore
pane, alimenti, 216
latte, alimenti, 89
detersivo, casalinghi, 106c) Scrivere una funzione filtro che riceve in ingresso un un prezzo e restituisce una lista contenente tutti i prodotti di prezzo inferiore o uguale a quello ricevuto in ingresso.
Es:
filtro(2) -> il risultato sarà una lista degli oggetti che rispondono al requisito.
3. Voti
Sia dato il seguente CSV:
nome, cognome, italiano, storia, matematica, informatica, inglese, tpsi, gpoi
Mario, Rossi, 6, 7, 6, 6, 5, 6, 6
Sandra, Verdi, 5, 5, 7, 7, 10, 8, 7Scrivere una funzione che riceve in ingresso la stringa contenente il CSV e genera un CSV risultato con questa struttura:
nome, cognome, media, status, InsufficientiDove:
media: indica la media dei voti
status: indicare se “promosso” (media >= 6) o “bocciato” (media < 6)
insufficienti: numero di materie insufficienti
Ad esempio:
nome, cognome, media, status, Insufficienti
Mario, Rossi, 6.0, promosso, 1
Sandra, Verdi, 7.0, promosso, 24. Appartamenti
Dato un CSV come il seguente:
Tipologia,Metratura,Prezzo,Zona
Appartamento,85,300000,Centro Storico
Villa,200,1200000,San Siro
Monolocale,45,150000,Porta Romana
Bilocale,65,250000,Navigli
Attico,120,800000,Brera
Loft,90,400000,Isola
Trilocale,100,350000,Bicocca
Quadrilocale,150,600000,CityLife
Scrivere un componente che con i seguenti metodi pubblici:
1.1 load(csv): funzione che riceve in input la stringa CSV, e salva (in una variabile privata) la lista degli appartamenti (come oggetto Javascript).
1.2 render(parentElement): funzione che genera una tabella coi dati degli appartamenti e la inserisce come html in parentElement.
1.3 add(data): funzione che riceve in input un dizionario con i dati di un nuovo immobile (tipologia, metratura, prezzo zona) e li aggiunge alla lista. Poi esegue automaticamente una render.
5. Temperature
Dato un CSV come il seguente:
Luogo,Data,Temperatura
Roma,2025-04-01,12.3
Milano,2025-04-01,11.6
Palermo,2025-04-01,17.1
Milano,2025-04-01,12.1
Palermo,2025-04-02,18.0
Roma,2025-04-02,11.8
...Scrivere un programma che:
- carica i dati in un array di dizionari
- stampa città, giorno e temperatura con la temperatura più alta
- stampa la città con la temperatura media più alta
- crea un CSV come il seguente
Luogo,TemperaturaMedia
Roma,17.5
Milano,12.9
Palermo,19.1
...6. Vendite
Dato un CSV come il seguente:
Anno,Ricavi,Spese
2020,200000,250000
2021,220000,240000
2022,230000,240000
2023,240000,230000
2024,250000,220000
...Scrivere un programma che:
- carica i dati in un array di dizionari
- stampa l’anno in cui i ricavi superano le spese
- stampa i ricavi totali e le spese totali
- crea un CSV come il seguente
Anno,Utile
2020,-50000
2021,-20000
2022,-10000
2023,10000
2024,30000
...7. Laureati
Nel CSV seguente sono riportati i dati degli studenti laureati (fonte: https://dati-ustat.mur.gov.it/dataset/laureati/resource/43df861d-7345-481a-9803-2eb236aa022e )
_id,AnnoS,Lau_M,Lau_F,Lau,fonte dati,Note
1,2024,173877,237705,411582,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,dati provvisori
2,2023,167422,225997,393419,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
3,2022,157079,210412,367491,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
4,2021,160299,213650,373949,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
5,2020,153496,200515,354011,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
6,2019,149033,195066,344099,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
7,2018,141113,187151,328264,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
8,2017,134809,183674,318483,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
9,2016,131595,180589,312184,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
10,2015,127132,178051,305183,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
11,2014,126072,182088,308160,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
12,2013,125992,181939,307931,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
13,2012,123805,178900,302705,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
14,2011,121951,174911,296862,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
15,2010,117949,168041,285990,Anagrafe Nazionale degli Studenti universitari (ANS) - maggio 2025,""
16,2009,122.877,169.933,292.810,Rilevazione Istruzione Universitaria,""
17,2008,125.050,169.927,294.977,Rilevazione Istruzione Universitaria,""
18,2007,126.017,174.114,300.131,Rilevazione Istruzione Universitaria,""
19,2006,128.106,173.270,301.376,Rilevazione Istruzione Universitaria,""
20,2005,128.869,172.429,301.298,Rilevazione Istruzione Universitaria,""
21,2004,114.123,154.698,268.821,Rilevazione Istruzione Universitaria,""
22,2003,103.355,131.584,234.939,Rilevazione Istruzione Universitaria,""
23,2002,88.045,113.073,201.118,Rilevazione Istruzione Universitaria,""
24,2001,74.623,97.183,171.806,Rilevazione Istruzione Universitaria,""
Scrivere una applicazione che:
– crea un array di dizionari che contiene tutti i valori
– sostituire (nel programma, non nel csv) le chiavi con le seguenti label: “id, anno, maschi, femmine, totale, fonte, note)
– indicare l’anno col maggior numero di laureati maschi, l’anno con maggior numero di laureate femmine, l’anno col maggior numero di laureati totali, la somma totale di laureati maschi, femmine e totali.
