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

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

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

В таблицах

В электронная таблица функции могут быть вложенный одно в другое, составляя сложные формулы. Мастер функций 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 Икс ) )

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

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

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