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

let buida = []
let nums = [1; 2; 3; 4; 5]
let paraules = ["Hola"; "Món"; "F#"]

Operacions amb Llistes

Accés a Elements

let primer = List.head nums
let resta = List.tail nums

Afegir Elements

let novaLlista = 0 :: nums

Concatenació de Llistes

let llistaConcatenada = nums @ [6; 7; 8]

Funcions Comunes

Map

let dobles = List.map (fun x -> x * 2) nums

Filter

let parells = List.filter (fun x -> x % 2 = 0) nums

Reduce

let suma = List.reduce (+) nums

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

let matriu = [|1; 2; 3; 4; 5|]

Operacions amb Matrius

Accés a Elements

let primerElement = matriu.[0]

Modificació d'Elements

matriu.[0] <- 10

Iteració

for x in matriu do
    printfn "%d" x

Funcions Comunes

Map

let dobles = Array.map (fun x -> x * 2) matriu

Filter

let parells = Array.filter (fun x -> x % 2 = 0) matriu

Reduce

let suma = Array.reduce (+) matriu

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

let seqNums = seq {1..5}
let seqInf = Seq.initInfinite (fun x -> x * x)

Operacions amb Seqüències

Accés a Elements

let primer = Seq.head seqNums
let resta = Seq.tail seqNums

Iteració

for x in seqNums do
    printfn "%d" x

Funcions Comunes

Map

let dobles = Seq.map (fun x -> x * 2) seqNums

Filter

let parells = Seq.filter (fun x -> x % 2 = 0) seqNums

Reduce

let suma = Seq.reduce (+) seqNums

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#.

© Copyright 2024. Tots els drets reservats