En aquest tema, explorarem les col·leccions en F#, incloent llistes, matrius i seqüències. Aquestes estructures de dades són fonamentals per a la programació funcional i ens permeten treballar amb conjunts de dades de manera eficient i elegant.
Llistes
Les llistes són col·leccions immutables d'elements del mateix tipus. Són molt utilitzades en F# per la seva simplicitat i eficiència en operacions de capçalera.
Creació de Llistes
Operacions amb Llistes
Accés a Elements
Afegir Elements
Concatenació de Llistes
Funcions Comunes
Map
Filter
Reduce
Matrius
Les matrius són col·leccions mutables d'elements del mateix tipus amb accés ràpid per índex. Són útils quan necessitem modificar elements de la col·lecció.
Creació de Matrius
Operacions amb Matrius
Accés a Elements
Modificació d'Elements
Iteració
Funcions Comunes
Map
Filter
Reduce
Seqüències
Les seqüències són col·leccions immutables i diferides d'elements del mateix tipus. Són ideals per treballar amb conjunts de dades grans o infinits, ja que els elements es generen sota demanda.
Creació de Seqüències
Operacions amb Seqüències
Accés a Elements
Iteració
Funcions Comunes
Map
Filter
Reduce
Exercicis Pràctics
Exercici 1: Treballant amb Llistes
Descripció: Crea una llista de nombres de l'1 al 10. Filtra els nombres parells i calcula la suma dels nombres parells.
Solució:
let nums = [1..10] let parells = List.filter (fun x -> x % 2 = 0) nums let sumaParells = List.reduce (+) parells printfn "La suma dels nombres parells és: %d" sumaParells
Exercici 2: Treballant amb Matrius
Descripció: Crea una matriu de nombres de l'1 al 5. Multiplica cada element per 3 i imprimeix els resultats.
Solució:
let matriu = [|1..5|] let multiplicats = Array.map (fun x -> x * 3) matriu Array.iter (printfn "%d") multiplicats
Exercici 3: Treballant amb Seqüències
Descripció: Crea una seqüència infinita de nombres quadrats. Agafa els primers 10 elements i imprimeix-los.
Solució:
let seqInf = Seq.initInfinite (fun x -> x * x) let primers10 = Seq.take 10 seqInf Seq.iter (printfn "%d") primers10
Conclusió
En aquesta secció, hem après sobre les col·leccions en F#, incloent llistes, matrius i seqüències. Hem vist com crear-les, accedir-hi i manipular-les utilitzant diverses funcions comunes. A més, hem practicat amb exercicis per reforçar els conceptes apresos. En el proper mòdul, explorarem funcions i immutabilitat 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