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.
Curs de Programació en Perl
Mòdul 1: Introducció al Perl
Mòdul 2: Programació Bàsica en Perl
Mòdul 3: Treballant amb Dades
Mòdul 4: Programació Intermèdia en Perl
Mòdul 5: Programació Avançada en Perl
- Expressions Regulars Avançades
- Interacció amb Bases de Dades amb DBI
- Programació Web amb Perl
- Multifil