En aquest mòdul, explorarem conceptes avançats relacionats amb funcions i procediments en MUMPS. Aprendrem a crear funcions més complexes, a gestionar paràmetres de manera eficient i a utilitzar tècniques avançades per millorar la modularitat i la reutilització del codi.

  1. Funcions amb Paràmetres Opcional i Per Defecte

Explicació

En MUMPS, podem definir funcions que acceptin paràmetres opcionals i assignar valors per defecte a aquests paràmetres. Això ens permet cridar a les funcions amb diferents nombres d'arguments sense causar errors.

Exemple

MyFunction(param1, param2, param3)
    ; Assignar valors per defecte si els paràmetres no es proporcionen
    set param1=$get(param1, "default1")
    set param2=$get(param2, "default2")
    set param3=$get(param3, "default3")
    
    ; Cos de la funció
    write "Param1: ", param1, !
    write "Param2: ", param2, !
    write "Param3: ", param3, !
    quit

Explicació del Codi

  • set param1=$get(param1, "default1"): Si param1 no es proporciona, s'assigna el valor "default1".
  • write "Param1: ", param1, !: Es mostra el valor de param1.

Exercici

Crea una funció SumNumbers que accepti tres números com a paràmetres i retorni la seva suma. Si algun paràmetre no es proporciona, ha de ser considerat com a 0.

Solució

SumNumbers(num1, num2, num3)
    set num1=$get(num1, 0)
    set num2=$get(num2, 0)
    set num3=$get(num3, 0)
    quit num1 + num2 + num3

  1. Funcions Recursives

Explicació

Les funcions recursives són funcions que es criden a si mateixes per resoldre problemes que es poden dividir en subproblemes més petits. Un exemple clàssic és el càlcul del factorial d'un nombre.

Exemple

Factorial(n)
    if n=0 quit 1
    quit n * $$Factorial(n-1)

Explicació del Codi

  • if n=0 quit 1: La condició base de la recursió. Si n és 0, retorna 1.
  • quit n * $$Factorial(n-1): La funció es crida a si mateixa amb n-1.

Exercici

Crea una funció recursiva Fibonacci que calculi el n-èssim nombre de la seqüència de Fibonacci.

Solució

Fibonacci(n)
    if n=0 quit 0
    if n=1 quit 1
    quit $$Fibonacci(n-1) + $$Fibonacci(n-2)

  1. Passar Funcions com a Paràmetres

Explicació

En MUMPS, podem passar el nom d'una funció com a paràmetre a una altra funció. Això ens permet crear funcions més generals que poden aplicar diferents operacions segons el paràmetre passat.

Exemple

ApplyFunction(funcName, param)
    quit @funcName@(param)

Explicació del Codi

  • @funcName@(param): Utilitza el nom de la funció passat com a paràmetre per cridar-la amb param.

Exercici

Crea una funció Square que retorni el quadrat d'un nombre i utilitza ApplyFunction per aplicar-la a un nombre.

Solució

Square(x)
    quit x * x

write $$ApplyFunction("Square", 5) ; Ha de retornar 25

  1. Funcions Anònimes i Clausures

Explicació

Encara que MUMPS no suporta funcions anònimes de la mateixa manera que altres llenguatges moderns, podem simular aquest comportament utilitzant variables globals per emmagatzemar funcions.

Exemple

set ^Functions("Square")="quit x*x"
set x=5
xecute ^Functions("Square")

Explicació del Codi

  • set ^Functions("Square")="quit x*x": Emmagatzema la definició de la funció en una variable global.
  • xecute ^Functions("Square"): Executa la funció emmagatzemada.

Exercici

Emmagatzema una funció que calculi el cub d'un nombre en una variable global i executa-la.

Solució

set ^Functions("Cube")="quit x*x*x"
set x=3
xecute ^Functions("Cube") ; Ha de retornar 27

Conclusió

En aquest mòdul, hem explorat diverses tècniques avançades per treballar amb funcions i procediments en MUMPS. Hem après a gestionar paràmetres opcionals, a crear funcions recursives, a passar funcions com a paràmetres i a simular funcions anònimes. Aquestes habilitats ens permetran escriure codi més flexible, modular i reutilitzable.

En el següent mòdul, ens endinsarem en la gestió de bases de dades en MUMPS, on aprendrem a crear, gestionar i optimitzar bases de dades utilitzant aquest llenguatge.

© Copyright 2024. Tots els drets reservats