En ciencias de la computación e informática , el anidamiento [1] es donde la información se organiza en capas, o donde los objetos contienen otros objetos similares. Casi siempre se refiere a estructuras auto-similares o recursivas en algún sentido.
Terminología
Anidar puede significar:
- llamadas anidadas:
- usando 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 de repetición hasta, 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 OpenOffice.org Calc permite navegar a través de múltiples niveles de anidamiento, [ 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 fundamental 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 la detección de errores (o depuración ) pueden volverse algo incómodas . Es por ello que los entornos de programación modernos -así como los programas de hoja de cálculo- resaltan en negrita el par correspondiente a la posición de edición actual. El control de equilibrio (automático) del paréntesis de apertura y cierre conocido como verificación de coincidencia de llaves .
En programación
Estructuras de Control
En los lenguajes de programación estructurados , el anidamiento está relacionado con el encerramiento de estructuras de control entre sí, 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 ( código como cadena ) como entero dim sLine , ruta como cadena dim ReturnValue como entero path = "C: \ Test.dsv" si FileExists ( ruta ), entonces abre la ruta para la entrada como # 1 , mientras que no EOF ( 1 ) línea entrada # 1 , sLine si el código == left ( sLine , 3 ) luego 'Action ( s) para llevar a cabo End si bucle cerca # 1 End si LookupCode = ReturnValue extremo función
En este pequeño y simple ejemplo, el bloque condicional "if ... then ... end if" está anidado dentro del "do while ... loop".
Algunos lenguajes como Pascal y Ada no tienen restricciones en las declaraciones según el nivel de anidamiento, lo que permite subprogramas anidados con precisión o incluso paquetes anidados (Ada). Aquí hay un ejemplo de ambos (simplificado de un caso real):
- Deshacerse del problema de las variables globales (no se puede 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 type Buffer_type es una matriz ( Integer range <>) de Integer ; procedimiento Descomprimir ( comprimido : en Buffer_type ; descomprimido : out 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 Decompress es seguro para tareas. end X_Globals ; - Métodos 1,2,3, ... (especificaciones) el paquete X_Method_1 es el procedimiento Decompress_1 ; end X_Method_1 ; - Métodos 1, 2, 3, ... (código) cuerpo del paquete X_Method_1 se usa X_Globals ; el procedimiento Decompress_1 es begin index_in : = compressed ' Primero ; - Aquí, el código de descompresión, método 1 final Decompress_1 ; end X_Method_1 ; - El final de las fuentes heredadas comienza X_Method_1 . Decompress_1 ; end Decompress ; test_in , test_out : Buffer_type ( 1 .. 10_000 );comenzar Descomprimir ( test_in , test_out ); end Nesting_example_1 ;
Estructuras de datos
Las estructuras de datos anidadas también se encuentran comúnmente en la programación.
Ceceo
En los lenguajes de programación funcional , como Lisp , existe una estructura de datos de lista al igual que una estructura de datos de átomo más simple . [2]
- Las listas simples contienen solo átomos. [2]
( A T O M S )
Los átomos de la lista son A, T, O, M y S.
- Las listas anidadas contienen tanto átomos como otras listas. [2]
( ( ( N E S T E D ) L I S T S ) ( C A N ) ( B E ) U N N E C E S S A R I L Y ( C O M P L E X ) )
Ver también
Referencias
- ^ https://study.com/academy/lesson/nesting-loops-statements-in-c-programming.html%7Ctitle=Nesting bucles y declaraciones en programación C
- ↑ a b c Sebesta, Robert W. (2012). Conceptos de lenguajes de programación (impreso) (10ª ed.). Boston, MA, EE.UU .: Addison-Wesley. pag. 49. ISBN 978-0-13-139531-2.