stringtranslate.com

Вложенность (вычисления)

В вычислительной науке и информатике вложение [1] означает, что информация организована в слои или объекты содержат другие подобные объекты. Это почти всегда относится к самоподобным или рекурсивным структурам в некотором смысле.

Терминология

Вложенность может означать:

В электронных таблицах

В электронной таблице функции могут быть вложены одна в другую, создавая сложные формулы. Мастер функций приложения OpenOffice.org Calc позволяет перемещаться по нескольким уровням вложенности, [ необходимо дополнительное объяснение ] позволяя пользователю редактировать (и, возможно, исправлять) каждый из них отдельно.

Например:

=ЕСЛИ(СУММ(C8:G8)=0;"Д";"Н")

В этой формуле Microsoft Excel функция СУММ вложена в функцию ЕСЛИ. Сначала формула вычисляет сумму чисел в ячейках от C8 до G8. Затем она решает, равна ли сумма 0, и отображает букву Y, если сумма равна 0, и букву N, если нет.

Естественно, чтобы обеспечить математическое разрешение этих связанных (или лучше: вложенных ) формул, внутренние выражения должны быть предварительно оценены, и это внешнее направление имеет важное значение, поскольку результаты, возвращаемые внутренними функциями, временно используются в качестве входных данных для внешних .

Из-за потенциального накопления скобок только в одной строке кода редактирование и обнаружение ошибок (или отладка ) могут стать несколько неудобными . Вот почему современные среды программирования, а также программы для работы с электронными таблицами, выделяют жирным шрифтом пару, соответствующую текущей позиции редактирования. (Автоматический) контроль балансировки открывающей и закрывающей скобок известен как проверка соответствия скобок .

В программировании

Структуры управления

В языках структурного программирования вложенность связана с включением управляющих структур одна в другую, что обычно обозначается различными уровнями отступов в исходном коде , как это показано в этой простой функции BASIC :

функция LookupCode ( sCode как строка ) как целое число dim iReturnValue как целое число dim sLine , sPath как строка                sPath = "C:\Test.dsv" if FileExists ( sPath ) then open sPath for input as # 1 do while not EOF ( 1 ) line input # 1 , sLine if sCode = left ( sLine , 3 ) then 'Действие(я), которые необходимо выполнить End if loop close # 1 End if LookupCode = iReturnValue end function                               

В этом небольшом и простом примере условный блок «if... then... end if» вложен в блок «do while... loop».

Некоторые языки, такие как Pascal и Ada, не имеют ограничений на объявления в зависимости от уровня вложенности, что позволяет точно вложенные подпрограммы или даже вложенные пакеты (Ada). Вот пример обоих (упрощенный из реального случая):

-- Избавление от проблемы глобальных переменных (нельзя использовать параллельно) из набора старых исходников без необходимости изменения логики или структуры этого кода . -- Процедура  Nesting_example_1  тип  Buffer_type  — это  массив ( диапазон целых чисел  <>) целых чисел ;    procedure  Decompress (  compress  :  in  Buffer_type ;  decompressed : out  Buffer_type  )  is  -- Вот устаревшие исходные коды, переведенные:  package  X_Globals  is  index_in ,  index_out :  Integer ;  -- *** ^ Эти переменные являются локальными для Decompress.  -- *** Теперь Decompress безопасен для задач.  end  X_Globals ;  -- Методы 1,2,3,... (спецификации)  package  X_Method_1  is  procedure  Decompress_1 ;  end  X_Method_1 ;  -- Методы 1,2,3,... (код)  package  body  X_Method_1  is  use  X_Globals ;  procedure  Decompress_1  is  begin  index_in :=  compress ' First ;  -- Здесь код распаковки, метод 1  end  Decompress_1 ;  end  X_Method_1 ;  -- Конец устаревших исходных кодов  begin  X_Method_1 . Decompress_1 ;  конец  распаковки ; test_in ,  test_out :  Тип_буфера ( 1. . 10_000 );начать  распаковку ( test_in ,  test_out ); конец  Nesting_example_1 ;

Структуры данных

Вложенные структуры данных также часто встречаются в программировании.

Лисп

В функциональных языках программирования , таких как Lisp , существует структура данных списка , а также более простая структура данных атома . [2]

( А Т О М С )      

Атомы в списке — A, T, O, M и S.

( ( ( ВЛОЖЕННЫЕ ) СПИСКИ ) ( МОГУТ ) ( БЫТЬ ) Н Е Ж Н О С Т Ы МИ ( С Л О Ж Н Ы МИ ) )                                               

Смотрите также

Ссылки

  1. ^ https://study.com/academy/lesson/nesting-loops-stan Программирование на языке C
  2. ^ abc Sebesta, Robert W. (2012). Концепции языков программирования (печать) (10-е изд.). Бостон, Массачусетс, США: Addison-Wesley. стр. 49. ISBN 978-0-13-139531-2.