Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Терминология [ править ]

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

В электронных таблицах [ править ]

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

Например:

= ЕСЛИ (СУММ (C8: G8) = 0; «Y»; «N»)

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

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

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

В программировании [ править ]

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

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

функция  LookupCode ( код  как  строка )  как  целое число  dim  sLine ,  путь  как  строка  dim  ReturnValue  как  целое число Путь = "C: \ Test.dsv" ,  если  FileExists ( пути ) ,  то  открытый  путь  для  ввода  в  # 1  сделать ,  пока  не  EOF ( 1 )  линия  вход  # 1 ,  Sline  если  код == оставил ( Sline ,  3 )  затем  «Action ( s)  Конец,  если  цикл  закрыт  # 1  Конец,  если  LookupCode = ReturnValueконечная  функция

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

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

- Избавление от проблемы глобальных переменных (нельзя использовать параллельно) - из набора старых источников, без необходимости изменять логику или структуру этого кода . - процедура  Nesting_example_1  есть тип  Buffer_type  - это  массив ( Integer  range  <>)  of  Integer ; процедура  Decompress (  сжатый  :  в  Buffer_type ;  распакованный : из  Buffer_type  )  is  - Вот устаревшие источники, переведенные:  пакет  X_Globals  - это  index_in ,  index_out :  Integer ;  - *** ^ Эти переменные являются локальными для Decompress.  - *** Теперь 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 : =  сжатый ' First ;  - Здесь код декомпрессии, метод 1  end  Decompress_1 ;  конец  X_Method_1 ;  - Конец устаревших источников  начинается  X_Method_1 . Decompress_1 ;  конец  декомпрессии ; test_in ,  test_out :  Buffer_type ( 1 .. 10_000 );начинают  Decompress ( test_in ,  test_out ); конец  Nesting_example_1 ;

Структуры данных [ править ]

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

Лисп [ править ]

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

  • Простые списки содержат только атомы. [2]
(  Т О М С )     

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

  • Вложенные списки содержат как атомы, так и другие списки. [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  )  )

См. Также [ править ]

  • Управление потоком
  • Для цикла
  • Псевдокод
  • Структурированное программирование

Ссылки [ править ]

  1. ^ https://study.com/academy/lesson/nesting-loops-statements-in-c-programming.html%7Ctitle=Вложенные циклы и операторы в программировании на C
  2. ^ a b c Себеста, Роберт В. (2012). Концепции языков программирования (печать) (10-е изд.). Бостон, Массачусетс, США: Аддисон-Уэсли. п. 49. ISBN 978-0-13-139531-2.