En aquest tema, explorarem les estructures de dades avançades en MUMPS. Aquestes estructures són fonamentals per a la gestió eficient de dades complexes i per a la implementació d'algoritmes sofisticats. Aprendrem sobre arrays multidimensionals, llistes enllaçades, arbres i altres estructures que ens permetran manipular dades de manera més efectiva.

Continguts

Arrays Multidimensionals

Descripció

Els arrays multidimensionals en MUMPS són una extensió dels arrays simples que permeten emmagatzemar dades en múltiples dimensions. Això és útil per representar matrius, taules i altres estructures de dades complexes.

Exemple

; Definició d'un array bidimensional
SET matrix(1,1) = 10
SET matrix(1,2) = 20
SET matrix(2,1) = 30
SET matrix(2,2) = 40

; Accés als elements de l'array
WRITE "Element a la posició (1,1): ", matrix(1,1), !
WRITE "Element a la posició (2,2): ", matrix(2,2), !

Explicació

  • SET matrix(1,1) = 10: Assigna el valor 10 a la posició (1,1) de l'array matrix.
  • WRITE "Element a la posició (1,1): ", matrix(1,1), !: Mostra el valor emmagatzemat a la posició (1,1) de l'array matrix.

Llistes Enllaçades

Descripció

Les llistes enllaçades són estructures de dades on cada element (node) conté un valor i una referència al següent element de la llista. Això permet una inserció i eliminació eficients.

Exemple

; Definició d'una llista enllaçada
SET list("head") = "node1"
SET list("node1","value") = 10
SET list("node1","next") = "node2"
SET list("node2","value") = 20
SET list("node2","next") = ""

; Recórrer la llista
SET current = list("head")
WHILE current'="" DO
. WRITE "Valor: ", list(current,"value"), !
. SET current = list(current,"next")

Explicació

  • SET list("head") = "node1": Defineix el cap de la llista com node1.
  • SET list("node1","value") = 10: Assigna el valor 10 al node node1.
  • SET list("node1","next") = "node2": Enllaça node1 amb node2.
  • WHILE current'="" DO ...: Recórrer la llista fins que no hi hagi més nodes.

Arbres

Descripció

Els arbres són estructures de dades jeràrquiques on cada node té un valor i referències a nodes fills. Són útils per representar dades jeràrquiques com arbres genealògics o sistemes de fitxers.

Exemple

; Definició d'un arbre
SET tree("root","value") = "A"
SET tree("root","left","value") = "B"
SET tree("root","right","value") = "C"
SET tree("root","left","left","value") = "D"
SET tree("root","left","right","value") = "E"

; Recórrer l'arbre en preordre
DO PreOrder("root")

PreOrder(node)
  IF node="" QUIT
  WRITE "Node: ", tree(node,"value"), !
  DO PreOrder($NAME(tree(node,"left")))
  DO PreOrder($NAME(tree(node,"right")))
  QUIT

Explicació

  • SET tree("root","value") = "A": Defineix el valor del node arrel com "A".
  • DO PreOrder("root"): Inicia el recorregut en preordre a partir del node arrel.
  • PreOrder(node): Funció recursiva per recórrer l'arbre en preordre.

Taules de Hash

Descripció

Les taules de hash són estructures de dades que permeten l'accés ràpid a elements mitjançant una clau. Són útils per a la cerca ràpida i l'emmagatzematge de dades associatives.

Exemple

; Definició d'una taula de hash
SET hash("key1") = "value1"
SET hash("key2") = "value2"
SET hash("key3") = "value3"

; Accés als elements de la taula de hash
WRITE "Valor associat a 'key1': ", hash("key1"), !
WRITE "Valor associat a 'key2': ", hash("key2"), !

Explicació

  • SET hash("key1") = "value1": Assigna el valor "value1" a la clau "key1".
  • WRITE "Valor associat a 'key1': ", hash("key1"), !: Mostra el valor associat a la clau "key1".

Exercicis Pràctics

Exercici 1: Crear un Array Multidimensional

Descripció: Crea un array tridimensional i omple'l amb valors. Mostra alguns dels valors emmagatzemats.

Solució:

; Definició d'un array tridimensional
SET cube(1,1,1) = 100
SET cube(1,1,2) = 200
SET cube(1,2,1) = 300
SET cube(2,1,1) = 400

; Accés als elements de l'array
WRITE "Element a la posició (1,1,1): ", cube(1,1,1), !
WRITE "Element a la posició (1,2,1): ", cube(1,2,1), !

Exercici 2: Implementar una Llista Enllaçada

Descripció: Implementa una llista enllaçada amb tres nodes i recorre-la per mostrar els valors.

Solució:

; Definició d'una llista enllaçada
SET list("head") = "node1"
SET list("node1","value") = 10
SET list("node1","next") = "node2"
SET list("node2","value") = 20
SET list("node2","next") = "node3"
SET list("node3","value") = 30
SET list("node3","next") = ""

; Recórrer la llista
SET current = list("head")
WHILE current'="" DO
. WRITE "Valor: ", list(current,"value"), !
. SET current = list(current,"next")

Conclusió

En aquesta secció, hem explorat diverses estructures de dades avançades en MUMPS, incloent arrays multidimensionals, llistes enllaçades, arbres i taules de hash. Aquestes estructures són fonamentals per a la gestió eficient de dades complexes i per a la implementació d'algoritmes sofisticats. Amb els exemples i exercicis proporcionats, hauríeu de tenir una comprensió sòlida de com utilitzar aquestes estructures en els vostres programes MUMPS.

En el següent tema, explorarem les biblioteques i extensions personalitzades, que us permetran ampliar les funcionalitats del vostre codi MUMPS.

© Copyright 2024. Tots els drets reservats