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:

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  )  ) 

Se även