En aquest mòdul, explorarem les estructures de dades complexes en Perl. Aquestes estructures són fonamentals per a la programació avançada, ja que permeten emmagatzemar i manipular dades de manera més eficient i flexible. Aprendrem a treballar amb arrays de hashes, hashes de arrays, i altres combinacions que ens permetran crear estructures de dades més riques.

Continguts

Introducció a les Estructures de Dades Complexes

Les estructures de dades complexes són combinacions de les estructures de dades bàsiques (arrays i hashes) que permeten emmagatzemar dades de manera més organitzada i accessible. Aquestes estructures són especialment útils quan es treballa amb dades jeràrquiques o relacionades.

Arrays de Hashes

Un array de hashes és una estructura on cada element de l'array és un hash. Aquesta estructura és útil per emmagatzemar una llista d'elements on cada element té múltiples atributs.

Exemple

my @array_of_hashes = (
    { name => 'Alice', age => 30, city => 'Barcelona' },
    { name => 'Bob', age => 25, city => 'Madrid' },
    { name => 'Charlie', age => 35, city => 'València' },
);

# Accedir a elements
foreach my $person (@array_of_hashes) {
    print "Name: $person->{name}, Age: $person->{age}, City: $person->{city}\n";
}

Explicació

  • @array_of_hashes: Declarem un array que conté hashes.
  • Cada hash conté claus (name, age, city) amb els seus respectius valors.
  • Utilitzem un bucle foreach per iterar sobre cada hash dins de l'array i accedir als seus valors.

Hashes de Arrays

Un hash de arrays és una estructura on cada clau del hash apunta a un array. Aquesta estructura és útil per agrupar llistes d'elements sota una clau comuna.

Exemple

my %hash_of_arrays = (
    fruits => ['apple', 'banana', 'cherry'],
    vegetables => ['carrot', 'broccoli', 'spinach'],
);

# Accedir a elements
foreach my $category (keys %hash_of_arrays) {
    print "$category: " . join(", ", @{$hash_of_arrays{$category}}) . "\n";
}

Explicació

  • %hash_of_arrays: Declarem un hash que conté arrays.
  • Cada clau (fruits, vegetables) apunta a un array de valors.
  • Utilitzem un bucle foreach per iterar sobre les claus del hash i accedir als arrays associats.

Arrays de Arrays

Un array de arrays és una estructura on cada element de l'array és un altre array. Aquesta estructura és útil per representar matrius o taules de dades.

Exemple

my @array_of_arrays = (
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
);

# Accedir a elements
foreach my $row (@array_of_arrays) {
    print join(", ", @$row) . "\n";
}

Explicació

  • @array_of_arrays: Declarem un array que conté altres arrays.
  • Cada sub-array representa una fila d'una matriu.
  • Utilitzem un bucle foreach per iterar sobre cada sub-array i imprimir els seus elements.

Hashes de Hashes

Un hash de hashes és una estructura on cada clau del hash apunta a un altre hash. Aquesta estructura és útil per emmagatzemar dades jeràrquiques o relacionades.

Exemple

my %hash_of_hashes = (
    alice => { age => 30, city => 'Barcelona' },
    bob => { age => 25, city => 'Madrid' },
    charlie => { age => 35, city => 'València' },
);

# Accedir a elements
foreach my $person (keys %hash_of_hashes) {
    print "$person: Age: $hash_of_hashes{$person}{age}, City: $hash_of_hashes{$person}{city}\n";
}

Explicació

  • %hash_of_hashes: Declarem un hash que conté altres hashes.
  • Cada clau (alice, bob, charlie) apunta a un hash amb atributs (age, city).
  • Utilitzem un bucle foreach per iterar sobre les claus del hash i accedir als hashes associats.

Exercicis Pràctics

Exercici 1: Crear un Array de Hashes

Crea un array de hashes que emmagatzemi informació sobre diversos llibres (títol, autor, any de publicació) i imprimeix aquesta informació.

Solució

my @books = (
    { title => '1984', author => 'George Orwell', year => 1949 },
    { title => 'To Kill a Mockingbird', author => 'Harper Lee', year => 1960 },
    { title => 'The Great Gatsby', author => 'F. Scott Fitzgerald', year => 1925 },
);

foreach my $book (@books) {
    print "Title: $book->{title}, Author: $book->{author}, Year: $book->{year}\n";
}

Exercici 2: Crear un Hash de Arrays

Crea un hash de arrays que emmagatzemi llistes de pel·lícules per gènere (acció, comèdia, drama) i imprimeix aquestes llistes.

Solució

my %movies = (
    action => ['Die Hard', 'Mad Max', 'John Wick'],
    comedy => ['Superbad', 'Step Brothers', 'The Hangover'],
    drama => ['The Shawshank Redemption', 'Forrest Gump', 'The Godfather'],
);

foreach my $genre (keys %movies) {
    print "$genre: " . join(", ", @{$movies{$genre}}) . "\n";
}

Conclusió

En aquesta secció, hem après a treballar amb estructures de dades complexes en Perl, com ara arrays de hashes, hashes de arrays, arrays de arrays i hashes de hashes. Aquestes estructures ens permeten emmagatzemar i manipular dades de manera més eficient i flexible, cosa que és essencial per a la programació avançada. A mesura que avancem en el curs, continuarem utilitzant aquestes estructures per resoldre problemes més complexos i realistes.

© Copyright 2024. Tots els drets reservats