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

  1. Introducció als Punteres
  2. Declaració de Punteres
  3. Assignació de Punteres
  4. Operacions amb Punteres
  5. Punteres i Arrays
  6. Exercicis Pràctics

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

  1. 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:

integer, pointer :: ptr

  1. Assignació de Punteres

Per assignar un punter a una variable, utilitzem l'operador =>. Aquí teniu un exemple:

integer, target :: var
integer, pointer :: ptr

var = 10
ptr => var

En aquest exemple, ptr apunta a la variable var.

  1. 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:

Valor de var: 10
Valor a través de ptr: 10
Nou valor de var: 20
Nou valor a través de ptr: 20

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

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

© Copyright 2024. Tots els drets reservats