En aquest tema, explorarem el concepte de punteres en Fortran, una característica poderosa que permet la manipulació directa de la memòria. Els punteres són útils per a la creació de estructures de dades dinàmiques, com ara llistes enllaçades, i per a l'optimització de l'ús de la memòria.
Continguts
- Introducció als Punteres
- Declaració de Punteres
- Assignació de Punteres
- Operacions amb Punteres
- Punteres i Arrays
- Exercicis Pràctics
- Introducció als Punteres
Un punter és una variable que emmagatzema l'adreça de memòria d'una altra variable. Això permet accedir i manipular directament la memòria, oferint una gran flexibilitat i control sobre les dades.
- Declaració de Punteres
Per declarar un punter en Fortran, utilitzem la paraula clau pointer
. A continuació es mostra un exemple de com declarar un punter que apunta a una variable de tipus enter:
- Assignació de Punteres
Per assignar un punter a una variable, utilitzem l'operador =>
. Aquí teniu un exemple:
En aquest exemple, ptr
apunta a la variable var
.
- Operacions amb Punteres
Un cop un punter està assignat a una variable, podem utilitzar-lo per accedir i modificar el valor de la variable a la qual apunta. Aquí teniu un exemple:
print *, "Valor de var: ", var print *, "Valor a través de ptr: ", ptr ptr = 20 print *, "Nou valor de var: ", var print *, "Nou valor a través de ptr: ", ptr
Sortida esperada:
- Punteres i Arrays
Els punteres també poden apuntar a arrays. Aquí teniu un exemple de com treballar amb punteres i arrays:
integer, target :: arr(5) = [1, 2, 3, 4, 5] integer, pointer :: ptr(:) ptr => arr print *, "Array original: ", arr print *, "Array a través de ptr: ", ptr ptr(3) = 10 print *, "Array modificat: ", arr print *, "Array modificat a través de ptr: ", ptr
Sortida esperada:
Array original: 1 2 3 4 5 Array a través de ptr: 1 2 3 4 5 Array modificat: 1 2 10 4 5 Array modificat a través de ptr: 1 2 10 4 5
- Exercicis Pràctics
Exercici 1: Assignació de Punteres
Declara una variable de tipus real i un punter que apunti a aquesta variable. Assigna un valor a la variable a través del punter i imprimeix el valor.
Solució:
program exercici1 real, target :: var real, pointer :: ptr var = 5.5 ptr => var print *, "Valor de var: ", var print *, "Valor a través de ptr: ", ptr ptr = 7.5 print *, "Nou valor de var: ", var print *, "Nou valor a través de ptr: ", ptr end program exercici1
Exercici 2: Punteres i Arrays
Declara un array de tipus enter i un punter que apunti a aquest array. Modifica un element de l'array a través del punter i imprimeix l'array abans i després de la modificació.
Solució:
program exercici2 integer, target :: arr(3) = [1, 2, 3] integer, pointer :: ptr(:) ptr => arr print *, "Array original: ", arr print *, "Array a través de ptr: ", ptr ptr(2) = 10 print *, "Array modificat: ", arr print *, "Array modificat a través de ptr: ", ptr end program exercici2
Conclusió
En aquest tema, hem après què són els punteres, com declarar-los, assignar-los i utilitzar-los per accedir i modificar dades. També hem vist com treballar amb punteres i arrays. Els punteres són una eina poderosa en Fortran que permet una gestió més flexible i eficient de la memòria. En els següents temes, explorarem altres estructures de dades avançades que es poden implementar utilitzant punteres.
Curs de Programació en Fortran
Mòdul 1: Introducció a Fortran
- Introducció a Fortran
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Escrivint el teu Primer Programa en Fortran
Mòdul 2: Conceptes Bàsics
- Variables i Tipus de Dades
- Operadors i Expressions
- Entrada i Sortida
- Estructures de Control: Sentències If
- Estructures de Control: Bucles
Mòdul 3: Arrays i Cadenes
Mòdul 4: Procediments i Funcions
Mòdul 5: Estructures de Dades Avançades
Mòdul 6: Gestió de Fitxers
Mòdul 7: Temes Avançats
Mòdul 8: Millors Pràctiques i Optimització
- Tècniques d'Optimització de Codi
- Depuració i Perfilat
- Escrivint Codi Mantenible
- Estàndards i Portabilitat de Fortran