En informática y ciencias de la computación , la anidación [1] es cuando la información se organiza en capas o cuando los objetos contienen otros objetos similares. Casi siempre se refiere a estructuras autosimilares o recursivas en algún sentido.
Terminología
Anidar puede significar:
- llamadas anidadas:
- utilizando varios niveles de subrutinas
- llamadas recursivas
- niveles anidados de paréntesis en expresiones aritméticas
- bloques anidados de código fuente imperativo , como cláusulas if anidadas, cláusulas while, cláusulas repeat-until, etc.
- ocultación de información :
- Definiciones de funciones anidadas con alcance léxico
- estructuras de datos anidadas, como registros, objetos, clases, etc.
- Virtualización anidada , también llamada virtualización recursiva: ejecutar una máquina virtual dentro de otra máquina virtual
En hojas de cálculo
En una hoja de cálculo, las funciones se pueden anidar unas dentro de otras, creando fórmulas complejas. El asistente de funciones de la aplicación Calc de OpenOffice.org permite navegar a través de múltiples niveles de anidación, [ se necesita más explicación ] permitiendo al usuario editar (y posiblemente corregir) cada uno de ellos por separado.
Por ejemplo:
=SI(SUMA(C8:G8)=0,"Y", "N")
En esta fórmula de Microsoft Excel , la función SUMA está anidada dentro de la función SI. Primero, la fórmula calcula la suma de los números en las celdas de C8 a G8. Luego, decide si la suma es 0 y muestra la letra Y si la suma es 0 y la letra N si no lo es.
Naturalmente, para permitir la resolución matemática de estas fórmulas encadenadas (o mejor: anidadas ), las expresiones internas deben ser evaluadas previamente, y esta dirección hacia afuera es esencial porque los resultados que devuelven las funciones internas se utilizan temporalmente como datos de entrada para las externas .
Debido a la posible acumulación de paréntesis en una sola línea de código, la edición y detección de errores (o depuración ) puede llegar a resultar algo complicada . Por eso, los entornos de programación modernos -así como los programas de hojas de cálculo- resaltan en negrita el par correspondiente a la posición de edición actual. El control (automático) del balanceo de los paréntesis de apertura y cierre se conoce como comprobación de coincidencia de llaves .
En programación
Estructuras de control
En los lenguajes de programación estructurada , la anidación está relacionada con el encerramiento de estructuras de control una dentro de otra, generalmente indicado a través de diferentes niveles de sangría dentro del código fuente , como se muestra en esta sencilla función BASIC :
función LookupCode ( sCode como cadena ) como entero dim iReturnValue como entero dim sLine , sPath como cadena
sPath = "C:\Test.dsv"
si FileExists ( sPath ) entonces abre sPath para entrada como # 1 hacer mientras no EOF ( 1 ) línea de entrada # 1 , sLine si sCode = left ( sLine , 3 ) entonces 'Acción(es) a realizar Fin si bucle cerrado # 1 Fin si LookupCode = iReturnValue fin de la función
En este pequeño y simple ejemplo, el bloque condicional “si... entonces... fin si” está anidado dentro del bucle “do while...”.
Algunos lenguajes como Pascal y Ada no tienen restricciones en cuanto a las declaraciones según el nivel de anidamiento, lo que permite subprogramas anidados con precisión o incluso paquetes anidados (Ada). A continuación se muestra un ejemplo de ambos (simplificado a partir de un caso real):
-- Deshacerse del problema de las variables globales (no se pueden usar en paralelo)
-- de un conjunto de fuentes antiguas, sin la necesidad de cambiar
la lógica o la estructura de ese código.
--
El procedimiento Nesting_example_1 es
tipo Buffer_type es una matriz ( rango de enteros <>) de enteros ;
procedimiento Descomprimir (
comprimido : en Buffer_type ;
descomprimido : fuera Buffer_type
)
es
-- Aquí están las fuentes heredadas, traducidas:
paquete X_Globals es
index_in , index_out : Integer ;
-- *** ^ Estas variables son locales para Descomprimir.
-- *** Ahora Descomprimir es seguro para tareas.
fin X_Globals ;
-- Métodos 1,2,3,... (especificaciones)
paquete X_Method_1 es
procedimiento Descomprimir_1 ;
fin X_Method_1 ;
-- Métodos 1,2,3,... (código)
cuerpo del paquete X_Method_1 es uso X_Globals ; procedimiento Descomprimir_1 es empezar index_in := comprimido ' Primero ; -- Aquí, el código de descompresión, método 1 fin Decompress_1 ; fin X_Method_1 ; -- Fin de las fuentes heredadas empezar X_Method_1 . Descomprimir_1 ; fin Descomprimir ;
prueba_de_entrada , prueba_de_salida : Tipo_de_búfer ( 1. . 10_000 );
comenzar
Descomprimir ( prueba_de_entrada , prueba_de_salida );
fin Anidamiento_ejemplo_1 ;
Estructuras de datos
Las estructuras de datos anidadas también se encuentran comúnmente en programación.
Ceceo
En los lenguajes de programación funcional , como Lisp , existe una estructura de datos de lista y también una estructura de datos de átomos más simple . [2]
- Las listas simples sólo contienen átomos. [2]
( ÁTOMOS )
Los átomos de la lista son A, T, O, M y S.
- Las listas anidadas contienen tanto átomos como otras listas. [2]
( ( ( L I S TA S ANIDADAS ) ( PUEDEN ) ( SER ) INNECESARIAMENTE ( C O M P L E J E ) )
Véase también
Referencias
- ^ https://study.com/academy/lesson/nesting-loops-stan Programación en C
- ^ abc Sebesta, Robert W. (2012). Conceptos de lenguajes de programación (versión impresa) (10.ª ed.). Boston, MA, EE. UU.: Addison-Wesley. pág. 49. ISBN 978-0-13-139531-2.