# Taula de control

Les taules de control són taules que controlen el flux de control o tenen un paper important en el control del programa. No hi ha regles rígides sobre l'estructura o el contingut d'una taula de control; el seu atribut qualificatiu és la seva capacitat per dirigir el flux de control d'alguna manera mitjançant l'"execució" per part d'un processador o intèrpret. El disseny d'aquestes taules de vegades es coneix com a disseny basat en taules (tot i que això normalment es refereix a la generació automàtica de codi a partir de taules externes en lloc de taules directes en temps d'execució). En alguns casos, les taules de control poden ser implementacions específiques de programació basada en autòmats basat en màquines d'estats finits. Si hi ha diversos nivells jeràrquics de taula de control, poden comportar-se d'una manera equivalent a les màquines d'estat UML.
En alguns casos, es pot assignar a no programadors per mantenir el contingut de les taules de control. Per exemple, si una frase de cerca introduïda per l'usuari conté una frase determinada, es pot assignar un URL (adreça web) en una taula que controli on es dirigeix l'usuari de cerca. Si la frase conté "faldilla", la taula pot dirigir l'usuari a "www.shopping.example/catalogs/skirts", que és la pàgina del catàleg de productes de faldilles. (L'exemple d'URL no funciona a la pràctica). El personal de màrqueting pot gestionar aquesta taula en lloc dels programadors.

## Ús típic

* Transformació dels valors d'entrada a:
** un índex, per a posterior ramificació o cerca de punter.
** un nom de programa, número de subrutina relatiu, etiqueta de programa o desplaçament de programa, per alterar el flux de control.
* Controlar un bucle principal en la programació impulsada per esdeveniments mitjançant una variable de control per a les transicions d'estat.
* Control del cicle del programa per a aplicacions de processament de transaccions en línia.

## Ús més avançat

* Actuar com a instruccions virtuals per a una màquina virtual processada per un intèrpret
    similar al bytecode, però normalment amb operacions implicades per la pròpia estructura de la taula

## Estructura de la taula

Les taules poden tenir múltiples dimensions, de longitud fixa o variable i solen ser portàtils entre plataformes informàtiques, només requereixen un canvi a l'intèrpret, no a l'algorisme en si, la lògica del qual s'incorpora essencialment a l'estructura i el contingut de la taula. L'estructura de la taula pot ser semblant a una matriu associativa multimapa, on un valor de dades (o una combinació de valors de dades) es pot assignar a una o més funcions a realitzar.

### Taules unidimensionals

Potser en la seva implementació més senzilla, una taula de control pot ser de vegades una taula unidimensional per traduir directament un valor de dades en brut a un desplaçament de subrutina corresponent, índex o punter utilitzant el valor de les dades en brut, ja sigui directament com a índex de la matriu, o realitzant alguna aritmètica bàsica sobre les dades prèviament. Això es pot aconseguir en temps constant (sense una cerca lineal o binària utilitzant una taula de cerca típica en una matriu associativa). A la majoria d'arquitectures, això es pot aconseguir en dues o tres instruccions de màquina, sense cap comparació ni bucle. La tècnica es coneix com a " funció hash trivial " o, quan s'utilitza específicament per a taules de branques, " enviament doble ". Perquè això sigui factible, l'interval de tots els valors possibles de les dades ha de ser petit (per exemple, un valor de caràcter ASCII o EBCDIC que tingui un interval d'hexadecimal '00' a 'FF'. Si es garanteix que l'interval real serà menor que això, la matriu es pot truncar a menys de 256 bytes).

### Taules multidimensionals

Més habitualment, una taula de control es pot considerar com una taula de veritat o com una implementació executable ("binària") d'una taula de decisions impresa (o un arbre de taules de decisions, a diversos nivells). Contenen proposicions (sovint implicades), juntament amb una o més "accions" associades. Aquestes accions es realitzen normalment mitjançant subrutines genèriques o personalitzades que són cridades per un programa " intèrpret ". L'intèrpret en aquest cas funciona efectivament com una màquina virtual, que "executa" les entrades de la taula de control i, per tant, proporciona un nivell d'abstracció més alt que el codi subjacent de l'intèrpret.

## Exemples de taules de control

Els exemples següents són arbitraris (i es basen en una única entrada per simplificar), tanmateix la intenció és simplement demostrar com es pot fer el control del flux mitjançant l'ús de taules en comptes de declaracions de programa habituals. Ha de quedar clar que aquesta tècnica es pot estendre fàcilment per tractar múltiples entrades, ja sigui augmentant el nombre de columnes o utilitzant múltiples entrades de taula (amb opcional i/o operador). De la mateixa manera, mitjançant l'ús de taules de control "enllaçades" (jeràrquiques) es pot aconseguir una programació estructurada (opcionalment utilitzant el sagnat per ajudar a destacar les taules de control subordinades).

## Referències

* ↑ «Archived copy» (en anglès). Arxivat de l'original el 10 June 2016. [Consulta: 17 maig 2016].
* ↑ «Control Tables, Transaction Tables and Prompt Tables» (en anglès americà). [Consulta: 2 desembre 2023].
* ↑ dearandyxu. «Delta copy from a database using a control table - Azure Data Factory» (en anglès americà), 10-08-2023. [Consulta: 2 desembre 2023].
* ↑ «SQL control table» (en anglès americà), 13-12-2013. [Consulta: 2 desembre 2023].