En aquest tema, explorarem dues estructures de dades fonamentals en F#: els mapes (maps) i els conjunts (sets). Aquestes estructures són molt útils per a emmagatzemar i manipular col·leccions de dades de manera eficient.
Mapes
Un mapa és una col·lecció de parells clau-valor on cada clau és única. Els mapes són immutables per defecte en F#, el que significa que qualsevol operació que modifiqui un mapa retornarà un nou mapa en lloc de modificar l'original.
Creació de Mapes
Accés als Elements
Afegir i Eliminar Elements
Iteració sobre un Mapa
Exercici Pràctic: Treballant amb Mapes
Exercici:
- Crea un mapa que contingui els noms de tres ciutats i les seves poblacions.
- Afegeix una nova ciutat al mapa.
- Elimina una ciutat del mapa.
- Itera sobre el mapa i imprimeix cada ciutat i la seva població.
Solució:
let cityMap = Map.ofList [ ("Barcelona", 1620343); ("Madrid", 3223334); ("Valencia", 791413) ] let updatedCityMap = cityMap.Add("Sevilla", 688711) let finalCityMap = updatedCityMap.Remove("Madrid") finalCityMap |> Map.iter (fun city population -> printfn "City: %s, Population: %d" city population)
Conjunts
Un conjunt és una col·lecció d'elements únics. Els conjunts també són immutables per defecte en F#.
Creació de Conjunts
Afegir i Eliminar Elements
Operacions amb Conjunts
let setA = Set.ofList [1; 2; 3] let setB = Set.ofList [3; 4; 5] let unionSet = Set.union setA setB // {1; 2; 3; 4; 5} let intersectSet = Set.intersect setA setB // {3} let diffSet = Set.difference setA setB // {1; 2}
Iteració sobre un Conjunt
Exercici Pràctic: Treballant amb Conjunts
Exercici:
- Crea un conjunt de números de l'1 al 5.
- Afegeix el número 6 al conjunt.
- Elimina el número 1 del conjunt.
- Crea un altre conjunt de números del 4 al 8.
- Troba la unió, intersecció i diferència dels dos conjunts.
Solució:
let set1 = Set.ofList [1; 2; 3; 4; 5] let updatedSet1 = set1.Add(6) let finalSet1 = updatedSet1.Remove(1) let set2 = Set.ofList [4; 5; 6; 7; 8] let unionSet = Set.union finalSet1 set2 let intersectSet = Set.intersect finalSet1 set2 let diffSet = Set.difference finalSet1 set2 printfn "Union: %A" unionSet printfn "Intersection: %A" intersectSet printfn "Difference: %A" diffSet
Resum
En aquesta secció, hem après a treballar amb mapes i conjunts en F#. Hem vist com crear, accedir, afegir i eliminar elements en aquestes estructures de dades, així com realitzar operacions comunes com la unió, intersecció i diferència en conjunts. Aquests conceptes són fonamentals per a la manipulació eficient de col·leccions de dades en F#.
Curs de Programació en F#
Mòdul 1: Introducció a F#
Mòdul 2: Conceptes Bàsics
- Tipus de Dades i Variables
- Funcions i Immutabilitat
- Coincidència de Patrons
- Col·leccions: Llistes, Matrius i Seqüències
Mòdul 3: Programació Funcional
Mòdul 4: Estructures de Dades Avançades
Mòdul 5: Programació Orientada a Objectes en F#
- Classes i Objectes
- Herència i Interfícies
- Barreja de Programació Funcional i Orientada a Objectes
- Mòduls i Espais de Noms
Mòdul 6: Programació Asíncrona i Paral·lela
- Fluxos de Treball Asíncrons
- Biblioteca de Tasques Paral·leles
- MailboxProcessor i Agents
- Patrons de Concurrència
Mòdul 7: Accés i Manipulació de Dades
Mòdul 8: Proves i Depuració
- Proves Unitàries amb NUnit
- Proves Basades en Propietats amb FsCheck
- Tècniques de Depuració
- Perfilat de Rendiment