Эта статья требует дополнительных ссылок для проверки . ( июнь 2018 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
В компьютерной науке и информатике , вложенности [1] , где информация организована в слоях, или там , где объекты содержат другие подобные объекты. Это почти всегда в некотором смысле относится к самоподобным или рекурсивным структурам.
Терминология [ править ]
Вложенность может означать:
- вложенные вызовы:
- использование подпрограмм нескольких уровней
- рекурсивные вызовы
- вложенные уровни скобок в арифметических выражениях
- вложенные блоки императивного исходного кода, такие как вложенные предложения if, предложения while, условия повторения до и т. д.
- скрытие информации :
- определения вложенных функций с лексической областью видимости
- вложенные структуры данных, такие как записи, объекты, классы и т. д.
- вложенная виртуализация , также называемая рекурсивной виртуализацией: запуск виртуальной машины внутри другой виртуальной машины
В электронных таблицах [ править ]
В электронной таблице функции можно вкладывать одна в другую, составляя сложные формулы. Мастер функций приложения 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 ) )
См. Также [ править ]
- Управление потоком
- Для цикла
- Псевдокод
- Структурированное программирование
Ссылки [ править ]
- ^ https://study.com/academy/lesson/nesting-loops-statements-in-c-programming.html%7Ctitle=Вложенные циклы и операторы в программировании на C
- ^ a b c Себеста, Роберт В. (2012). Концепции языков программирования (печать) (10-е изд.). Бостон, Массачусетс, США: Аддисон-Уэсли. п. 49. ISBN 978-0-13-139531-2.