Вложенность (вычисления) - Nesting (computing)
Эта статья нужны дополнительные цитаты для проверка.Июнь 2018 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В вычислительная наука и информатика, гнездование[1] где информация организована по слоям или где объекты содержат другие похожие объекты. Это почти всегда относится к самоподобный или же рекурсивный структуры в некотором смысле.
Вложенность может означать:
- вложенные вызовы:
- используя несколько уровней подпрограммы
- рекурсивные вызовы
- вложенные уровни скобок в арифметических выражениях
- вложенные блоки императива исходный код такие как вложенные предложения if, предложения while, условия повторения до и т. д.
- скрытие информации:
- определения вложенных функций с лексическая область
- вложенные структуры данных, такие как записи, объекты, классы и т. д.
- вложенная виртуализация, также называемый рекурсивной виртуализацией: запуск виртуальная машина внутри другой виртуальной машины
В таблицах
В электронная таблица функции могут быть вложенный одно в другое, составляя сложные формулы. Мастер функций OpenOffice.org Calc приложение позволяет перемещаться по нескольким уровням вложенности,[требуется дальнейшее объяснение ] позволяя пользователю редактировать (и, возможно, исправлять) каждый из них отдельно.
Например:
= ЕСЛИ (СУММ (C8: G8) = 0; «Y»; «N»)
В этом Майкрософт Эксель формула, функция СУММ вложена в функцию ЕСЛИ. Сначала формула вычисляет сумму чисел в ячейках от C8 до G8. Затем он решает, равна ли сумма 0, и отображает букву Y, если сумма равна 0, и букву N, если это не так.
Естественно, чтобы разрешить математическое разрешение этих связанных (или лучше: вложенный) формулы, внутренние выражения должны быть предварительно оценены, и это внешнее направление важно, потому что результаты, которые внутренний функции return временно используются в качестве данных ввода для внешний ед.
Из-за потенциального скопления круглых скобок только в одной строке кода редактирование и обнаружение ошибок (или отладка ) может как то стало неуклюжий. Вот почему современные среды программирования, а также программы для работы с электронными таблицами, выделяют жирным шрифтом пару, соответствующую текущей позиции редактирования. (Автоматическое) управление балансировкой открывающей и закрывающей круглых скобок, известное как проверка соответствия скобок.
В программировании
Структуры управления
В структурное программирование языки, гнездование относится к вмещающий из управляющие структуры один в другой, обычно обозначаемый разными отступ уровни в исходный код, как показано в этом простом БАЗОВЫЙ функция:
функция LookupCode(код в качестве нить) в качестве целое число тусклый линия, дорожка в качестве нить тусклый ReturnValue в качестве целое число дорожка="C: Test.dsv" если Файл существует(дорожка) тогда открыто дорожка за Вход в качестве #1 делать пока нет EOF(1) линия Вход #1, линия если код==оставили(линия, 3) тогда 'Действия, которые необходимо выполнить Конец если петля Закрыть #1 Конец если LookupCode=ReturnValueконец функция
В этом небольшом и простом примере условный блок «if ... then ... end if» вложен в блок «do while ... loop».
Некоторые языки, такие как Паскаль и Ада не имеют ограничений на объявления в зависимости от уровня вложенности, позволяя точно вложенные подпрограммы или даже вложенные пакеты (Ada). Вот пример того и другого (упрощенный из реального случая):
- Избавление от проблемы с глобальными переменными (нельзя использовать параллельно)- из набора старых источников, без необходимости изменять этот код- логика или структура.--процедура Nesting_example_1 является тип Buffer_type является множество(Целое число классифицировать <>) из Целое число; процедура Распаковать( сжатый : в Buffer_type; распакованный: из Buffer_type ) является - Вот переведенные устаревшие источники: упаковка X_Globals является index_in, index_out: Целое число; - *** ^ Эти переменные являются локальными для 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:= сжатый'Первый; - Здесь код декомпрессии, метод 1 конец Decompress_1; конец X_Method_1; - Конец устаревших источников начинать X_Method_1.Decompress_1; конец Распаковать; test_in, протестировать: Buffer_type(1..10_000);начинать Распаковать(test_in, протестировать);конец Nesting_example_1;
Структуры данных
Вложенный структуры данных также часто встречаются в программировании.
Лисп
в функциональное программирование языки, такие как Лисп, а список структура данных существует, как и более простой атом структура данных.[2]
- Простые списки держат только атомы.[2]
( А Т О M S )
Атомы в списке: A, T, O, M и S.
- Вложенные списки содержат как атомы, так и другие списки.[2]
( ( ( N E S Т E D ) L я S Т S ) ( C А N ) ( B E ) U N N E C E S S А р я L Y ( C О M п L E Икс ) )
Смотрите также
Рекомендации
- ^ https://study.com/academy/lesson/nesting-loops-statements-in-c-programming.html%7Ctitle=Nesting Циклы и операторы в программировании на C
- ^ а б c Себеста, Роберт В. (2012). Концепции языков программирования (Распечатать) (10-е изд.). Бостон, Массачусетс, США: Аддисон-Уэсли. п. 49. ISBN 978-0-13-139531-2.