En aquest tema, aprendrem sobre les funcions en Fortran, una part fonamental de la programació modular. Les funcions permeten dividir el codi en blocs més petits i manejables, facilitant la seva reutilització i manteniment.

Continguts

Què és una Funció?

Una funció és un bloc de codi que realitza una tasca específica i retorna un valor. Les funcions són útils per evitar la duplicació de codi i per organitzar el programa de manera més clara i estructurada.

Declaració de Funcions

En Fortran, les funcions es declaren amb la paraula clau function. La declaració d'una funció inclou el tipus de retorn, el nom de la funció i els seus arguments.

Sintaxi

type function function_name(arguments)
  • type: El tipus de dada que retorna la funció (per exemple, integer, real, character).
  • function_name: El nom de la funció.
  • arguments: Els arguments que la funció rep (opcional).

Definició de Funcions

La definició d'una funció inclou el codi que especifica què fa la funció. A més de la declaració, la definició inclou el cos de la funció, que conté les instruccions que s'executen quan la funció és cridada.

Sintaxi

type function function_name(arguments)
    ! Declaració dels arguments
    type :: argument1, argument2, ...
    
    ! Declaració de variables locals
    type :: local_variable1, local_variable2, ...
    
    ! Cos de la funció
    ...
    
    ! Retorn del valor
    function_name = value
end function function_name

Crida a Funcions

Per cridar una funció, simplement utilitzem el seu nom seguit dels arguments entre parèntesis. El valor retornat per la funció es pot assignar a una variable o utilitzar directament en expressions.

Exemple de Crida

result = function_name(arg1, arg2, ...)

Exemples Pràctics

Exemple 1: Funció que Calcula el Quadrat d'un Nombre

program main
    implicit none
    real :: number, result

    ! Assignar un valor a la variable
    number = 5.0

    ! Cridar la funció square
    result = square(number)

    ! Imprimir el resultat
    print *, "El quadrat de ", number, " és ", result
end program main

! Definició de la funció square
real function square(x)
    real, intent(in) :: x
    square = x * x
end function square

Exemple 2: Funció que Calcula la Suma de Dos Nombres

program main
    implicit none
    real :: num1, num2, result

    ! Assignar valors a les variables
    num1 = 3.0
    num2 = 4.0

    ! Cridar la funció sum
    result = sum(num1, num2)

    ! Imprimir el resultat
    print *, "La suma de ", num1, " i ", num2, " és ", result
end program main

! Definició de la funció sum
real function sum(a, b)
    real, intent(in) :: a, b
    sum = a + b
end function sum

Exercicis Pràctics

Exercici 1: Funció que Calcula el Factorial d'un Nombre

Escriu una funció que calculi el factorial d'un nombre enter positiu.

Pista

El factorial d'un nombre n es defineix com n! = n * (n-1) * (n-2) * ... * 1.

Solució

program main
    implicit none
    integer :: number, result

    ! Assignar un valor a la variable
    number = 5

    ! Cridar la funció factorial
    result = factorial(number)

    ! Imprimir el resultat
    print *, "El factorial de ", number, " és ", result
end program main

! Definició de la funció factorial
integer function factorial(n)
    integer, intent(in) :: n
    integer :: i

    factorial = 1
    do i = 1, n
        factorial = factorial * i
    end do
end function factorial

Exercici 2: Funció que Calcula la Mitjana de Tres Nombres

Escriu una funció que calculi la mitjana de tres nombres reals.

Solució

program main
    implicit none
    real :: num1, num2, num3, result

    ! Assignar valors a les variables
    num1 = 4.0
    num2 = 5.0
    num3 = 6.0

    ! Cridar la funció average
    result = average(num1, num2, num3)

    ! Imprimir el resultat
    print *, "La mitjana de ", num1, ", ", num2, " i ", num3, " és ", result
end program main

! Definició de la funció average
real function average(a, b, c)
    real, intent(in) :: a, b, c
    average = (a + b + c) / 3.0
end function average

Conclusió

En aquest tema, hem après què són les funcions, com es declaren, defineixen i criden en Fortran. Les funcions són una eina poderosa per organitzar i modularitzar el codi, facilitant la seva reutilització i manteniment. Hem vist exemples pràctics i hem practicat amb exercicis per reforçar els conceptes apresos. En el següent tema, explorarem com passar arguments a les funcions i subrutines en més detall.

© Copyright 2024. Tots els drets reservats