Anidamiento (informática)

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

El anidamiento (llamado nesting en inglés) es la práctica de incorporar llamadas (calls) a funciones o procedimientos (unas) dentro de otras, mediante la inclusión de diversos niveles de paréntesis.

Debido a que la potencial acumulación de estos últimos suele hacer que la edición y la detección de errores se vuelva un proceso engorroso, los entornos de programación modernos -así como los programas de planilla de cálculo- resaltan en negrita el par correspondiente a la posición que está editando el programador o usuario en cada momento. El control (automático) del balance o equilibrio entre los paréntesis de apertura y de cierre se suele conocer como brace match checking en inglés.

Naturalmente, para la resolución matemática de estas complejas fórmulas encadenadas, las expresiones deben ser evaluadas desde adentro hacia afuera, ya que los resultados de las más internas sirven, temporalmente, de datos de entrada de las exteriores.

En las plantillas de cálculo[editar]

En las hojas de cálculo, se suelen anidar o agrupar funciones unas dentro de otras, derivando en fórmulas relativamente complejas. Los programas Apache OpenOffice Calc y LibreOffice Calc permiten, mediante sus respectivos asistentes de funciones (function wizard), navegar a través de los varios o múltiples niveles de anidamiento, permitiendo editar (y eventualmente corregir) cada una de ellas por separado. Tal vez de manera sorprendente, su rival Microsoft Excel no posee esa característica, eventualmente deseable cuando se trabaja en algunas grandes planillas.

En programación[editar]

En los lenguajes de programación estructurada, el anidamiento está relacionado con la inclusión de estructuras de control dentro de otras, usualmente indicado mediante la inclusión de distintos niveles de sangría (llamada indentation en inglés) dentro del código fuente, como se muestra en el sencillo código BASIC siguiente:

function BuscarCodigo(sCod as string) as integer
dim iRespuesta as integer
dim sLinea, sRuta as string

sRespuesta=0
sRuta="C:\Probar.tsv"
if FileExists(sRuta) then
  open sRuta for input as #1
  do while not EOF(1)
    line input #1, sLinea
    if sCod=left(sLinea, 3) then
     'Realizar una acción o varias acciones
    end if
  loop
  close #1
  BuscarCodigo=iRespuesta
end function

En este simple ejemplo, la estructura condicional if... then... end if ("si... entonces... fin si") está anidada dentro de otra que la contiene, el ciclo do while... loop ("repetir... mientras", literalmente "hacer mientras... bucle").

Véase también[editar]