stringtranslate.com

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

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

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

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

В таблицах

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

Например:

=ЕСЛИ(СУММ(C8:G8)=0,"Y","N")

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

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

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

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

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

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

функция LookupCode ( sCode как строка ) как целое число dim iReturnValue как целое число dim sLine , sPath как строка                sPath = "C:\Test.dsv", если FileExists ( sPath ) , затем откройте sPath для ввода как # 1 , пока не будет EOF ( 1 ) , строковый ввод # 1 , sLine if sCode = left ( sLine , 3 ) , then 'Action(s ) должно быть выполнено End if замыкание цикла # 1 End if LookupCode = iReturnValue функция завершения                               

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

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

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

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

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

Лисп

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

( А Т О М С )      

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

( ( ( Н Е С Т Е Д ) СПИСКИ ) ( C A N ) ( B E ) UN N E C E S S A R I L Y ( C O M P L E X ) )                                               

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

Рекомендации

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