Nesting (beräkning)
Inom datavetenskap och informatik är kapsling där information organiseras i lager, eller där objekt innehåller andra liknande objekt. Det hänvisar nästan alltid till självliknande eller rekursiva strukturer i någon mening.
Terminologi
Häckning kan betyda:
- kapslade anrop:
- använder flera nivåer av subrutiner
- rekursiva samtal
- kapslade nivåer av parenteser i aritmetiska uttryck
- kapslade block av imperativ källkod som kapslade if-satser, while-satser, repetera-tills-satser etc.
-
information gömmer :
- kapslade funktionsdefinitioner med lexikal omfattning
- kapslade datastrukturer såsom poster, objekt, klasser, etc.
- kapslad virtualisering , även kallad rekursiv virtualisering: köra en virtuell maskin inuti en annan virtuell maskin
I kalkylblad
I ett kalkylblad kan funktioner kapslas in i varandra, vilket gör komplexa formler. Funktionsguiden för OpenOffice.org Calc -applikationen gör det möjligt att navigera genom flera nivåer av kapsling, [ ytterligare förklaring behövs ] så att användaren kan redigera (och eventuellt korrigera) var och en av dem separat.
Till exempel:
=OM(SUMMA(C8:G8)=0,"Y","N")
I den här Microsoft Excel- formeln är SUM-funktionen kapslad inuti IF-funktionen. Först beräknar formeln summan av talen i cellerna från C8 till G8. Den avgör sedan om summan är 0, och den visar bokstaven Y om summan är 0, och bokstaven N om den inte är det.
Naturligtvis, för att tillåta den matematiska upplösningen av dessa kedjade (eller bättre: kapslade ) formler, måste de inre uttrycken utvärderas tidigare, och denna utåtriktade riktning är väsentlig eftersom resultaten som de interna funktionerna returnerar tillfälligt används som ingångsdata för de externa . .
På grund av den potentiella ackumuleringen av parenteser i endast en kodrad, kan redigering och feldetektering (eller felsökning ) bli besvärlig på något sätt . Det är därför som moderna programmeringsmiljöer -liksom kalkylprogram- markerar med fet stil det par som motsvarar den aktuella redigeringspositionen. Den (automatiska) balanseringskontrollen av öppnings- och stängningsparentesen är känd som brace match checking .
I programmering
Kontrollstrukturer
I strukturerade programmeringsspråk är kapsling relaterad till inneslutningen av kontrollstrukturer i varandra, vanligtvis indikerade genom olika indragsnivåer i källkoden , som det visas i denna enkla BASIC- funktion:
funktion LookupCode ( sCode som sträng ) som heltal dim iReturnValue som heltal dim sLine , sPath som sträng sPath = "C:\ Test.dsv " om FileExists ( sPath ) öppnar sedan sPath för inmatning som # 1 utan EOF ( 1 ) rad in # 1 , sLine om sCode = vänster ( sLine , 3 ) sedan 'Åtgärd ( er) som ska utföras End if loop close # 1 End if LookupCode = iReturnValue slutfunktion
I detta lilla och enkla exempel är det villkorliga blocket "om... då... slut om" kapslat inuti "gör medan... loop".
Vissa språk som Pascal och Ada har inga begränsningar för deklarationer beroende på kapslingsnivån, vilket tillåter exakt kapslade underprogram eller till och med kapslade paket (Ada). Här är ett exempel på båda (förenklat från ett verkligt fall):
-- Att bli av med problemet med globala variabler (kan inte användas parallellt) -- från en uppsättning gamla källor, utan att behöva ändra den kodens -- logik eller struktur. - proceduren Nesting_example_1 är typen Buffer_type är array ( heltalsområde <> ) av heltal ; procedure Decompress ( komprimerad : in Buffer_type ; dekomprimerad : out Buffer_type ) är -- Här är de äldre källorna, översatta: paketet X_Globals är index_in , index_out : Integer ; -- *** ^ Dessa variabler är lokala för Decompress. -- *** Nu är Decompress uppgiftssäkert. slut X_Globals ; -- Metoder 1,2,3,... (specifikationer) paket X_Method_1 är proceduren Decompress_1 ; avsluta X_Method_1 ; -- Metoder 1,2,3,... (kod ) paketets kropp X_Method_1 använder X_Globals ; proceduren Decompress_1 är start index_in := komprimerad ' First ; -- Här, dekompressionskoden, metod 1 slutar Decompress_1 ; avsluta X_Method_1 ; -- Slutet på de äldre källorna börjar X_Method_1 . Dekomprimera_1 ; avsluta Dekomprimera ; test_in , test_out : Buffer_type ( 1. . 10_000 ); börja Dekomprimera ( test_in , test_out ); end Nesting_example_1 ;
Data struktur
Kapslade datastrukturer är också vanligt förekommande i programmering.
Läspa
I de funktionella programmeringsspråken , såsom Lisp , existerar en listdatastruktur liksom en enklare atomdatastruktur .
- Enkla listor innehåller bara atomer.
( A T O M S )
Atomerna i listan är A, T, O, M och S.
- Kapslade listor innehåller både atomer och andra listor.
( ( ( 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 ) )