Skip to content
Snippets Groups Projects
Commit 116656ab authored by Anna Morpurgo's avatar Anna Morpurgo
Browse files

Lab08.md piccoli aggiustamenti nelle note e aggiornamento dell'es. lunghezze

parent 1afabbee
No related branches found
No related tags found
No related merge requests found
......@@ -55,6 +55,8 @@
### Dichiarazione di una mappa (viene creata una mappa "zero-value", cioè nil)
Una mappa è una struttura di dati costrituita da coppie chiave:valore, dove la chiave è univoca.
Sintassi:
```go
var mapName map[keyType]valueType
......@@ -65,7 +67,7 @@ Esempio:
var map1 map[string]int
```
**Nota**. A differenza delle slice, una mappa deve essere inizializzata (vedi qui sotto come) prima di poter aggiungervi elementi, altrimenti si ottiene un errore run-time:\
**Nota**. A differenza delle slice, una mappa deve essere inizializzata (vedi qui sotto come) prima di poter aggiungervi elementi (cioè coppie chiave:valore), altrimenti si ottiene un errore run-time:\
<tt>panic: assignment to entry in nil map</tt>
### Inizializzazione di una mappa
......@@ -88,27 +90,29 @@ map1 := map[string]float64{"zero" : 0., "uno" : 1.}
```
### Operazioni su mappe
Inserimento o aggiornamento di un elemento in una mappa m (si fanno nello stesso modo, non occorre controllare se la chiave c'era già):
Inserimento o aggiornamento di un elemento in una mappa (si fanno nello stesso modo, non occorre controllare se la chiave c'era già):
```go
m[key] = elem
myMap[key] = value
```
Accesso a un elemento di una mappa:
Accesso al valore di una mappa associato a una data chiave:
```go
elem = m[key]
value = myMap[key]
```
Cancellazione di un elemento da una mappa:
Cancellazione di un elemento (quindi della coppia chiave:valore) da una mappa:
```go
delete(m, key)
delete(myMap, key)
```
Verifica della presenza di una chiave in una mappa:
```go
element, ok = mappa[key] //se key c'è in mappa, ok è true; altrimenti ok è false e elemt è zero-value
value, ok = myMap[key]
//se key c'è in myMap, ok è true e value è il valore associato a key;
//altrimenti ok è false e value è lo zero-value associato al tipo per i valori della mappa
```
Per verificare se due mappe sono uguali, vedete la funzione `DeepEqual` del package `reflect`.
......@@ -131,15 +135,32 @@ Per verificare se due mappe sono uguali, vedete la funzione `DeepEqual` del pack
## Esercizi sulle mappe
### Lunghezze (mappe)
Scrivere un programma lunghezze.go che legge riga per riga un testo da standard input (potete usare la ridirezione), terminato da EOF, e stampa quante parole ci sono di lunghezza 1, quante di lunghezza 2, ecc.
Il programma è dotato di una funzione
Scrivere un programma `lunghezze.go` che legge riga per riga un testo da standard input (potete usare la ridirezione), terminato da EOF, e stampa quante parole ci sono di lunghezza 1, quante di lunghezza 2, ecc.
In particolare sperimentare quattro tipi di stampa:
- una stampa della mappa
- una stampa degli elementi (le coppie k:v) della mappa, non importa in che ordine (for range)
- una stampa degli elementi in ordine dalla lunghezza minima a quella massima, comprese le lunghezze eventualmente non presenti nella mappa (che tipo di for?)
- una stampa degli elementi in ordine dalla lunghezza minima a quella massima, escluse le lunghezze non presenti nella mappa (come evito di stampare le lunghezze che hanno 0 parole associate?).
Il programma deve essere dotato di:
una funzione
```
func aggiornaConteggio(m map[int]int, riga string)
```
che aggiorna la mappa dei conteggi e che deve essere usata dal main.
che aggiorna la mappa dei conteggi (e che deve essere usata dal main);
una funzione
```
func findMaxKey(m map[int]int) int
```
che restituisce la massima chiave presente nella mappa.
nomefile: lunghezze.go
---
### Vocali (mappe)
Scrivere un programma vocali.go che analizza un testo e conta le occorrenze delle vocali (sia minuscole che maiuscole, ma non le accentate) nel testo e stampa, ma solo per le vocali presenti nel testo, il numero di volte che le vocali stesse sono presenti nel testo.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment