Разработка структуры программы и модульное программирование. Структура программы: блочная Блочная структура

Модульная структура программы

Чтобы упростить приложение, повысить его надежность и эффективность применяется модульный подход. Разбиение на модули позволяет разбить задачу на более мелкие функциональные блоки, облегчая этим разработку. Применяя такой подход к разработке системы, можно легко расширять функциональные возможности отдельных модулей, не затрагивая при этом исходный код прочих. Для уменьшения сложности программного обеспечения, необходимо сделать модули небольшими и более независимые. Чтобы сделать модули более независимыми можно применить два метода:

Усиление внутренних связей модулей;

Ослабление взаимосвязи между модулями.

Данная структура используется для обеспечения функциональной независимости модулей программы, т.е. максимального разделения функции модулей. Благодаря этому повышается внутренняя связность модулей и ослабляется их внешнее сцепление.

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

Модульная структура библиотеки представлена в приложении Д на рисунке Д.1, визуализатора на рисунке Д.2.

Тестирование

Из всех этапов отладки программного обеспечения тестирование является самым трудоемким и дорогим. При создании типичного программного обеспечения на тестирование приходится около 40% общего времени и более 40% общей стоимости программного обеспечения.

Тестирование нужно, чтобы повысить надежность программного обеспечения, иначе в нем нет необходимости. Повысит надежность можно, устранив ошибки. Поэтому тестирование для доказательства корректности программы лишено смысла. Тестированием можно выявить ошибки, исправить их и, таким образом, повысить надежность программного обеспечения.

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

Документирование

Техническое задание

Для многих проектов требуется использовать ландшафты. Данный программный комплекс позволяет генерировать трехмерный ландшафт и показывает его на экране монитора.

6.1.1 Назначение разработки

Программный комплекс предназначен для генерации и отображения ландшафтов.

6.1.2 Требования к программе или программному изделию

Для пользователя приложение должно предоставлять следующие возможности:

1) возможность введения входных данных, таких как минимальная и максимальная высота, размеры карты, крутизны гор;

2) генерация ландшафтов;

3) сохранение ландшафта для использования его в сторонних программах;

4) демонстрация получившегося результата, путем вывода картинки на экран.

6.1.3 Требования к надежности

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

6.1.4 Требования к составу и параметрам технических средств

Для минимального функционирования программы требуется: персональный компьютер, 2 ГБ оперативной памяти, 50 Мб свободного места на жестком диске; клавиатура, мышь.

Для оптимальной работы приложения необходимо оперативной памяти не менее 3ГБ оперативной памяти.

6.1.5 Требования к информационной и программной совместимости

Программа должна функционировать под управлением ОС семейства Windows 7 и выше; DirectX 11; Visual c++2015; .Net Framework 4.5 и выше.

6.1.6 Требования к программной документации

Документация к программе должна содержать руководство пользователя, документации по работе с библиотекой.

Руководство пользователя

Запуск программы производится запуском файла shell.exe, после запуска вы увидите окно, представленное на рисунке 6.1.

Вызвать меню «файл», можно с помощью кнопки «очистить» сбросить данные до стандартных значений. С помощью кнопки «Сохранить как bmp» сохранить карту высот в формате bmp. С помощью кнопки «Сохранить как obj» можно сохранить ландшафт в формате obj. Нажав на кнопку «Просмотр» запуститься визуализатор, в котором можно будет увидеть в трехмерном виде, представлен на рисунке 6.2.

Рисунок 6.1 - Окно программы


Рисунок 6.2 - Окно программы

Вызвать меню «настройки», можно с помощью кнопки «настройки программы» настроить программу для визуализации. С помощью кнопки «настройки визуализации» можно настроить визуализатор.

Движение в визуализаторе осуществляется кнопками на клавиатуре w, a, s, d, которые соответствуют направлениям вперед, влево, вправо, назад.

Управление камерой осуществляется мышкой.

Документация по работе с библиотекой

Для работой с библиотекой необходимо подключить файл LandscapeGenerator.dll к вашему проекту. В проекте необходимо объявить экземпляр класса LandscapeGenerator. Класс содержит следующие методы для изменения параметров ландшафта, такие как ширина, длина, минимальная и максимальная высота, гористость, генерации ландшафта, возврат ландшафта как bitmap, сохранение ландшафта в формате obj и bmp.

Пояснительная записка.

Актуальность программы.

Новизна программы.



Цель

Задачи:

-

Программа рассчитана



Сроки реализации программы:

Режим занятий

1 год обучения – стартовый;

Формы занятий:

Методы обучения:

Педагогические технологии:

Ожидаемые результаты.

Обучающийся:

· будет знать, как использовать различные технические приемы при рабо­те с бумагой;

· получит практические навыки работы с инструментами;

· будет обучен работе с разными материалами и инструментами при изготовлении, как простейших технических изделий, так и конструировании объемных макетов транспортных средств, мебели или зданий.

· будет уметь ориентироваться в технике чтения элементарных схем и чертежей;

· будет стремиться развивать образное и пространствен­ное мышление.

· будет развивать художественный вкус и гармонию между формой и содержанием художественного образа

· будут развиты конструкторские способности, техническое мышление, творческий подход к работе;

· будет выработано терпение и упор­ство, необходимые при работе с бумагой.


Учебный план 1-го года обучения

Название разделов и тем Количество часов Формы контроля
всего теория практика
1. Вводное занятие. Инструктаж по ПБ и по ТБ - Беседа
2. Практическое задание.
2.1. Инструменты, краткая история инструментов. Техника безопасного труда и пожарной безопасности. Практическое задание.
2.2. Материалы: бумага, картон. Виды и свойства. Технология обработки бумаги и картона. Практическое задание.
2.3. Аппликация. Практическое задание.
2.4. Конструирование из готовых форм. Практическое задание.
2.5. Новогодние поделки. Мини-выставка.
2.6. Игротека. Практическое задание.
3. Основы цветоведения и композиции. Практическое задание.
4. Оригами. Мини-выставка.
5. Объемное конструирование. Мини-выставка.
6. Итоговое занятие. Творческие работы. -
Итого

1. Вводное занятие. Теория. Режим работы объединения, правила поведения обучающихся. Ознакомление с планом работы объединения. Основные требования к организации рабочего места.

Практика. Показ поделок прошлых лет. Анкетирование. Загадки.

2. Творческое моделирование из бумаги и картона.

Теория. Инструменты при работе с бумагой и картоном. Знакомство с трафаретом и шаблоном. Общие правила безопасной работы режущими и колющими инструментами. Материалы: бумага, картон. Виды и свойства бумаги и картона. Технология обработки бумаги и картона.

Практика. Отработка умений и навыков резания по прямой линии, по кругу. Аппликация.

Теория. Виды аппликации: предметная, сюжетная, декоративная, орнамент. Понятие «плоская аппликация». Способы и правила склеивания. Последовательность наклеивания деталей.

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

Теория. Технология оклеивания коробок.

Практика. Изготовление сувениров. Новогодние поделки. Теория. Знакомство с традициями празднования Нового года. Практика. Изготовление новогодних поделок, сувениров, открыток. Игротека. Теория. Совершенствование технологических приемов работы с бумагой и картоном. Работа по шаблонам.

Практика. Изготовление силуэтов животных.

3. Основы цветоведения и композиции. Теория. Цветовой спектр. Основные и дополнительные цвета. Холодные и теплые цвета. Понятие «композиция», «фон», «основа».Практика. Выполнение практических работ на плоскости.

4. Оригами. Теория. История оригами. Базовые формы и условные обозначения. Практика. Изготовление поделок в технике оригами: животные, цветы, открытки.

5. Объемное конструирование. Теория. Понятие «плоское» и «объемное». Конструирование из полоски бумаги. Практика. Приемы создания куба, цилиндра, конуса. Художественное оформление поделок.

6. Итоговое занятие. Повторение и закрепление полученных знаний. Творческая работа.

К концу 1-го года обучения обучающиеся должны знать:

Правила безопасной работы и личной гигиены при работе инструментами;

Название и назначение инструментов (ножницы, шило);

Название и назначение материалов (бумага, картон), их свойства,

Основные понятия геометрических фигур, тел;

Что такое аппликация;

Понятие « плоское» и « объемное»;

Что такое композиция, фон;

Базовые формы: воздушный змей и др.

К концу первого года обучения обучающиеся должны уметь:

Анализировать изделия (определять его назначение, материал, способы соединения);

Планировать свою работу;

Экономно размечать материалы с помощью шаблонов, пользоваться линейкой, трафаретом;

Применять на практике свойства бумаги и картона;

Сгибать различные игрушки из квадрата-основы;

Резать бумагу и картон ножницами по линии разметки;

Соединять детали из бумаги и картона с помощью клея, скрепок, ниток;

Делать аппликацию
Учебный план 2-го года обучения

Название разделов и тем Количество часов Форма контроля
всего теория практика
1. Вводное занятие. Инструктаж по ПБ и ТБ - Беседа.
2. Материалы и инструменты, организация рабочего места. Беседа.
3. Аппликация. Практическое задание.
4. Графическая грамота. Беседа.
4.1. Понятие об элементах графической грамоты: технический рисунок, эскиз, чертеж. Практическое задание.
4.2. Чертежные инструменты.
4.3. Виды, способы и приемы разметки.
4.4. Линии чертежа
5. Технологические занятия
5.1. Приемы изготовления поделок в технике оригами Мини-выставка.
5.2. Мастерская Деда Мороза
5.3. Игротека из бумаги и картона Практическое задание.
6. Практическое задание.
6.1 Квиллинг.
6.2 Изделия из готовых форм.
6.3 Изделия из гофрированного картона.
6.4 Технические модели.
7. Итоговое занятие. Изготовление подарочной работы. - Самостоятельная работа.
Итого

1. Вводное занятие. Теория. Ознакомление с планом работы объединения. Инструктажи.

2. Материалы и инструменты. Теория. История бумаги. Производство бумаги и картона. Свойства картона и бумаги. Инструменты при работе с бумагой и картоном. Практика. Опыты по определению направления волокон: продольные, поперечные.

3. Аппликация. Теория. Классификация аппликации: по виду- (предметная,сюжетная,орнамент); по изображению- (плоскостная, объемная);по способам выполнения-(мозаика, обрывная); По цветовому решению- (монохромные, полихромные).Понятие о симметрии, симметричных фигурах. Виды симметричного вырезания. Практика. Выполнение аппликационных работ. Изготовление открыток, сувениров.

4. Графическая грамота. Теория. Понятие технического рисунка, эскиза, чертежа. Знакомство с чертежными инструментами: линейкой, угольником, циркулем. Их назначение и применение. Виды разметки: на глаз, сгибанием, на просвет, по шаблону и трафарету, по клетчатой бумаге, с использованием чертежных инструментов. Линии чертежа: линии видимого контура, линии сгиба, осевая, сплошная тонкая. Их назначения Практика. Изготовление поделок с использованием чертежных инструментов. Изготовление поделок с использованием различных способов и приемов разметки. Чтение чертежей разверток объемных деталей.

5. Технологические занятия. Оригами. Теория. Условные обозначения, терминология, базовые формы. Приемы складывания. Практика Изготовление поделок в технике оригами. Мастерская Деда Мороза. Теория. Новогодние традиции разных народов. Рождество. История открыткиПрактика. Вырезание снежинок. Изготовление новогодних игрушек, открыток, гирлянд. Звезд. Игротека из бумаги и картона. Теория. Знакомство с динамическими игрушками: дергунчики, стукалки, игрушки- маятники, игрушки – сюрпризы. Виды соединения деталей из бумаги и картона: - с помощью ниток, скрепок; подвижное – с помощью проволоки, ниток, болта с гайкой.Практика. Изготовление дергунчиков, динамических игрушек.

6. Конструирование из бумаги и картона. Бумагопластика. Теория. Азбука бумагопластики. Практика. Изготовление полуобъмных и объемных поделок. Изделия из готовых форм. Теория. Способы оклеивания коробок разных форм. Практика. Создание макетов из разных коробок. Изделия из гофрированного картона Теория. Основные технологические приемы. Практика. Выполнение объемных работ. Начальные представления о геометрических телах: параллелепипед, цилиндр, конус, пирамида. Теория . Понятия о геометрических телах. Понятие о развертках геометрических тел. Практика. Конструирование на их основе поделок и технических объектов.

7. Изготовление подарочной работы. Итоговое занятие.

К концу 2 года обучения учащиеся должны знать:

Название и назначение инструментов для работы с бумагой и картоном;

Линии чертежа;

Правила разметки по шаблонам, линейке, угольнику, при помощи циркуля;

Виды аппликации;

Цветовой круг, цветовые сочетания;

Понятие о симметрии, симметричных фигурах;

Базовые формы в оригами.

К концу 2-го года обучения учащиеся должны уметь:

Соблюдать правила безопасной работы и личной гигиены;

Анализировать изделие: назначение, материал, способы соединения, технология изготовления;

Правильно организовать свое рабочее место;

Поддерживать порядок во время работы;

Делать разметку разными способами;

Выполнять технологические операции с бумагой и картоном;

Соединять детали из бумаги и картона при помощи клея, проволоки, ниток, и щелевого замка;

Выполнять различные виды аппликации;


Учебный план 3-го года обучения .

Название разделов и тем Количество часов Форма контроля
Всего Теория Практика
1. Вводное занятие - Беседа.
2. Материалы и инструменты Беседа.
3. Оригами Практическое задание.
3.1. Панно Мини-выставка.
3.2. Гофрирование
3.3. Модульное оригами
4. Графическая грамота Беседа.
5. Виды транспортной техники. Практическое задание.
5.1. Воздушный транспорт.
5.2. Водный транспорт.
5.3. Сухопутный транспорт.
5.4. Космический транспорт.
5.5. Специальный транспорт
6. Технология работы с разными материалами. Практическое задание.
6.1. Мастерская Деда Мороза. Мини-выставка.
6.1.1 Изготовление сувенира
6.1.2. Изготовление елочных украшений.
6.1.3 Объемные открытки.
6.1.4. Новогодние фигурки.
6.2. Квиллинг
6.2.1. Открытки
6.2.2. Панно
6.2.3. Фоторамка
6.2.4 Сувенир
6.3. Моделирование и конструирование из нетрадиционных материалов. Практическое задание.
6.3.1. Шкатулки
6.3.2. Вазы
6.3.3. Сувениры
6.3.4. Панно
6.3.5. Органайзер
6.3.6. Коробка для бумаг
6.3.7. Комодик
7. Проектная деятельность
7.1. Выбор темы проекта
7.2 Изготовление изделия
7.3. Подготовка документации.
8. Изготовление Подарочной работы. Самостоятельная работа.
9. Заключительное занятие. Итоговая работа
Итого

1.Вводное занятие. Знакомство с планом работы на год. Инструктажи.

2. Материалы и инструменты. Повторение пройденного материала.

3. Оригами. Теория. Азбука оригами: условные обозначения. Виды гофрирования. Модульное оригами: приемы складывания. Практика. Изготовление панно. Изготовление вееров, бабочек, цветов. Изготовление поделок методом модульного оригами.

4.Графическая грамота. Теория. Закрепление и углубление знаний о чертежных инструментах. Практика. Построение окружности при помощи циркуля. Деление ее на части. Изготовление часов.

5.Виды транспортной техники. Теория. Виды самолетов. Их устройство.Значение водного и морского транспорта. Виды сухопутного транспорта. Назначение. Космический транспорт. Элементарное представление о космосе. Виды специального транспорта.Практика. Изготовление самолета. Изготовление моделей судов. Изготовление автомобиля. Изготовление ракеты. Изготовление трактора.

6.Технология работы с разными материалами. Мастерская Деда Мороза. Теория. Восточный гороскоп и символ года Практика .Изготовление сувениров, елочных украшений, объемных открыток, новогодних фигурок. Квиллинг (бумагокручение)Теория. Материалы и инструменты для работы в технике квиллинг Практика. Изготовление поделок: открытки, панно, фоторамки, сувениры. Моделирование и конструирование из нетрадиционных материалов.Теория. Бросовый материал и технология его обработки. Практика. Изготовление из него различных поделок: шкатулки, вазы, сувениры,органайзеры и др.

7.Проектная деятельность. Теория. Выбор проекта и его обоснование. Выбор материалов и инструментов. Выбор оптимальной технологии изготовления проекта.Практика. Изготовление изделия. Оформление проектной документации.

8.Итоговое занятие. Подведение итогов.

К концу 3-го года обучения обучающиеся должны знать:

Названия и назначение инструментов для работы с бумагой и картоном;

Правила безопасной работы и личной гигиены;

Название материалов (бумага, картон, ватман), их свойства;

Линии чертежа;

Виды транспортных машин, название и их назначение;

Основные профессии людей, связанные с обслуживанием транспорта;

Правили разметки по шаблонам, линейке, угольнику, при помощи циркуля;

Элементы геометрических тел;

Масштаб, увеличение и уменьшение.

К концу 3-го года обучения учащиеся должны уметь:

Соблюдать правила безопасной работы и личной гигиены;

Анализировать изделия: назначение, материал, способы соединения, технология изготовления,

Правильно организовать свое рабочее место;

Поддерживать порядок во время работы;


Приложение 1.

Дидактические материалы.

Критерии оценки.

Показатели (оцениваемые результаты) Критерии Степень выраженности оцениваемого качества Кол-во баллов Методы диагностики
1. Теоретическая подготовка обучающихся
1.1Теоретические знания (по основным разделам учебно-тематического плана программы) Соответствие теоретических знаний программным требованиям -низкий уровень (обучающийся овладел менее чем 1/2 объема знаний, предусмотренных программой); тестирование
1.2 Владение терминами Правильность использования терминов -низкий уровень (обучающийся, как правило, избегает использовать термины); собеседование
-средний уровень (обучающийся сочетает специальные термины с бытовыми);
-высокий уровень (специальные термины употребляет осознанно и в полном соответствии с их содержанием)
2. Практическая подготовка обучающихся
2.1 Умения и навыки (практика), предусмотренные программой (по основным разделам учебно-тематического плана программы) Соответствие практических умений и навыков требованиям программы -низкий уровень (обучающийся овладел менее чем ½ предусмотренных программой умений и навыков); Практическая работа
-средний уровень (объем усвоенных знаний составляет 1/2)
-высокий уровень (обучающийся освоил практически весь объем знаний, предусмотренных программой за конкретный период)
2.2 Владение инструментом Отсутствие затруднений в использовании инструмента -низкий уровень (обучающийся испытывает серьезное затруднение при работе с инструментом); Практическая работа
-средний уровень (работает с инструментом с помощью педагога);
-высокий уровень (работает инструментом самостоятельно)
2.3 Творческие навыки Креативность в выполнении практических заданий начальный(элементарный) уровень развития креативности (обучающийся в состоянии выполнить лишь простейшие практические задания педагога); Практическая работа
-репродуктивный уровень (выполняет в основном задания на основе образца);
-творческий уровень (выполняет практические задания с элементами творчества)

Первый год обучения.

Входной контроль :

Практическое задание № 1 – обучающиеся разрезают лист бумаги по заданным различным линиям.

Практическое задание № 2 – обучающиеся вырезают квадрат с расчерченными геометрическими фигурами, отмеченные галочками фигуры штрихуют. Затем вырезают и складывают фигурки по заданным картинкам.

Промежуточный контроль:

Тест № 1 – обучающиеся должны правильно провести стрелки от названия тела к его изображению.

Практическое задание № 3 – обучающиеся чертят квадрат, делают кораблик. Оформляют.

Второй год обучения.

Тест № 2 – обучающиеся должны разбить изображение автомобиля на простые геометрические фигуры и выбрать чертеж, соответствующий своему разбиению силуэта автомобиля.

Практическое задание № 4 – обучающиеся, выполняют летающую кордовую модель по технологической карте. Два задания – начертить модель по графическому изображению деталей, сборка и центровка.

Третий год обучения.

Итоговый контроль :

Тест № 3 – из предложенных вариантов ответа обучающиеся выбирают один верный.

Практическое задание № 5 – по технологической карте обучающиеся выполняют аппликационный материал для закладки. Геометрические фигуры выкладываются в определенном порядке. Допускается творческий подход.

Пояснительная записка.

Дополнительная общеобразовательная общеразвивающая программа (далее программа) «Мозаика» (начальное техническое моделирование). Направленность программы: техническая. Срок реализации 3 года. Возраст обучающихся 6 - 11 лет.

Дополнительное образование способствует формированию и самоопределению личности ребенка. Разнообразные формы образовательной деятельности сочетаются с различными видами деятельности ребенка.

Актуальность программы. Актуальность образовательной программы выражается в том, что среди современных детей все больше наблюдается неусидчивых, нетерпеливых, детей, а ручная деятельность завлекает, успокаивает, развивает терпение, усидчивость, мелкую моторику рук. Когда ребенок вырезает, склеивает макет, складывает бумагу и т. д., он задействует обе руки, а это способствует активизации обоих полушарий головного мозга. Таким образом, происходит развитие левого полушария, с которым связана способность говорить, считать, логически мыслить и т.д., одновременно развивается и правое полушарие, которое отвечает за развитие музыкальных и художественных способностей, пространственное восприятие объектов и т.д.

Новизна программы. Данная программа позволяет каждому ребенку выступить в качестве творца-конструктора. Они имеют возможность использовать все свои знания, внутренние замыслы, идеи в своих работах, имеют возможность участвовать в школьных, городских и республиканских выставках, где можно показать свое творческие работы родителям, друзьям.

Данная программа уделяет больше времени активным формам обучения, чем отличается от программ данной направленности. Программа предусматривает включение в состав занятий игровых технологий, пальчиковых упражнений, конкурсов, соревнований, учитывая возрастные особенности обучающихся, помогает определиться ребенку к подростковому возрасту в своих творческих интересах.

Вопросы гармонического развития и творческой самореализации находят свое решение в условиях объединения начального технического моделирования. Открытие в себе неповторимой индивидуальности поможет обучающемуся реализовать себя в учебе, творчестве, в общении с другими людьми.

Педагогическая целесообразность. Для успешного выполнения заданий творческого моделирования ребенок должен уметь сосредоточится, понять смысл и цель работы, представить результат своей деятельности. Выполнение моделей требует аккуратности, усидчивости, развитой моторики рук. Чтобы ребенок завершил конструирование и изготовление модели, ему необходимы волевые качества, развитие которых влияет на активность жизненной позиции, устойчивость мотиваций, умение преодолевать внутренние внешние трудности при совершении целенаправленных действий и поступков. Занятия формируют усидчивость, аккуратность, эстетическую устремленность не просто сделать, а сделать грамотно, красиво, оригинально. У детей развивается чувство объемной, пропорциональной, цветовой гармонии, развивается вкус.

Цель – формирование и развитие творческих способностей обучающихся через начальное техническое моделирование.

Задачи:

- познакомить обучающихся с различными видами трудовой деятельности, многообразием материалов и приемами работы с ними;

Научить обучающихся самостоятельно работать с различными материалами и инструментами с соблюдением техники безопасного труда;

Сформировать у обучающихся представление о технике, транспорте и т.д.;

Воспитывать уважительное отношение между членами коллектива в совместной деятельности;

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

Программа составлена на основе программы Фетцер В.В. «Техническое моделирование и конструирование с младшими школьниками» - Ижевск 1994

Отличительные особенности программы: обучение носит теоретический, познавательный и практический характер наряду с индивидуальным подходом к способностям и возрастным особенностям обучающихся.

Программа рассчитана на детей младшего школьного возраста 6 -11 лет.

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

Сроки реализации программы:

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

Программа рассчитана на 3 года обучения

Режим занятий

1 год обучения: 1 раза в неделю по 2 часа(72 часа);

2 год обучения: 2 раза в неделю по 2 часа(144 часа);

3 год обучения: 2 раза в неделю по 2 часа(144 ч).

Уровни освоения программы (уровни сложности):

1 год обучения – стартовый;

2 и 3 года обучения – базовый уровень.

Возможно обучение, по индивидуальному учебному плану графику в пределах осваиваемой программы.

Формы и методы обучения, педагогические технологии:

Формы занятий: занятия, практические занятия, открытые занятия, беседы, конкурсы, мастер-классы, выставки, мастерские и т.д.

Методы обучения: словесные - беседа, наглядные - показ способов действия, практическая, творческая работа, практическая деятельность.

Педагогические технологии: педагогика сотрудничества, проектные технологии, личностно-ориентированные технологии.

Структура программы: блочная.

Года обучения являются самостоятельными модулями и обучающиеся могут закончить или начать обучение с любой модуля. Структура и содержание программы допускают включение вновь прибывших, обучающихся на любом году обучения с учетом уровня подготовленности и возраста обучающихся (по результатам входного контроля).

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

Основные разделы программы: творческое моделирование из бумаги и картона, оригами, объемное конструирование, графическая грамота, квиллинг. Конструирование из разных материалов.

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

С помощью модулей можно создавать библиотеки подпрограмм, которые могут храниться как в виде исходного, так и в виде объектного кода (кода, уже готового к совместной компиляции и объединению с другими модулями). В Delphi откомпилированный объектный код модуля хранится в файлах с расширением «.dpu».

Структура модуля аналогична структуре программы на языке Паскаль. Заголовок для модуля обязателен и начинается со слова UNIT (вместо PROGRAM как в обычной программе):

Unit <имя модуля>;

Имя модуля должно совпадать с именем файла на языке Pascal. Когда Delphi автоматически генерирует различные модули, он делает так, чтобы имя модуля совпадало с именем файла.

В отличие от программы, тело модуля (раздел операторов) может отсутствовать. Оно используется для инициализации переменных модуля и производится перед выполнением операторов основной программы. Модуль содержит две обязательные части: интерфейсную и исполнительную.

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

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

Среди процедур и функций модуля могут быть вспомогательные, которые разработчик модуля может не включать в интерфейсное описание, тогда они будут скрыты от пользователей и недоступны к использованию вне модуля.

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

Uses M1 , М2 ...;

Далее в интерфейсной части описываются константы, типы, переменные, процедуры и функции, которые могут быть использованы при вызове этого модуля, причем процедуры и функции указываются в виде заголовков, без тела. Сами тела процедур описываются позже в закрытой - исполнительной - части модуля. Очень важно в интерфейсной части с помощью комментариев задокументировать все назначения для каждого элемента интерфейсной части, все параметры, константы и типы, чтобы пользователи модуля могли без труда его использовать.

Интерфейсная часть заканчивается с началом исполнительной части. Исполнительная часть начинается с ключевого слова Implementation. Она содержит тела всех процедур и функций, описанных в интерфейсной части. Она может включать локальные метки функций и разделов операторов. После слова Implementation также может следовать слово Uses со списком модулей, которые используются в исполнительной части. Далее указываются метки, типы, константы, переменные, процедуры и (Ьункпии модуля.

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

В конце модуля может идти необязательная часть завершения, начинающаяся с ключевого слова Finalization, в которой размещаются операторы, выполняемые при любом завершении работы модуля. Завершается модуль ключевым словом «end.» с обязательной точкой в конце.

Кратко синтаксис описания модуля выглядит так:

Если в разных модулях используются одноименные переменные, то для доступа к переменной модуля следует использовать префикс:

<имя модуля>. <имя переменной>.

Пример 10.1. Рассмотрим возможности взаимосвязи модулей. Программа может получиться короче, если разрешить модулям использовать внутренние элементы друг друга.

пометка">тесная взаимосвязь между модулями (или высокая степень сцепления модулей), и в таком случае становится невозможно использовать их по отдельности, что нарушает принципы модульного программирования.

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

Обычно при проектировании программ разбиение проекта на модули происходит в самом начале разработки программной системы. Этот процесс называется модуляризацией. Как правило, этим занимается системный аналитик проекта и его группа. Считается, что размер модуля должен колебаться в пределах 30-300 строк исходного текста. Наглядность модуля существенно улучшается благодаря использованию в заголовке (начале) модуля комментариев и подробного описания его функций. При беглом просмотре достаточно читать комментарии-заголовки, практически не обращая внимания на весь остальной текст.

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

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

Здесь основная программа Р разбивается на три основных модуля М1, М2, МЗ. Из этих модулей в программе используются интерфейсные элементы А, В, С (из первого модуля), D (из второго модуля), F, G, К, L (из третьего модуля). Каждый из этих модулей разбивается на более мелкие, например, М2 разбивается на М2.1, М2.2, М2.3 и т.д. Из этой схемы, например, видны перекрестные ссылки между модулями М2 и М3, а также между М2.2 и М2.3.

После завершения модуляризации каждый модуль распределятся для кодирования между программистами с целью независимого написания кода и отладки. Однако в таких случаях часто возникает ситуация, когда в родительском модуле предполагается использование процедур и функций дочерних модулей, но дочерние модули еще не закодированы другими программистами. Например, в модуле МЗ используются элементы К, L из дочерних модулей, но эти модули пока не готовы. Как быть программисту, реализующему код модуля МЗ? Выход из этой ситуации осуществляется посредством написания в родительском модуле процедур (или функций) «заглушек», которые по имени и параметрам полностью совпадают с элементами К, L. Заглушки позволяют компилировать и выполнять программу в отладочном режиме.

«Заглушка» - процедура представлена точной спецификацией заголовка (название и параметры) и пустым телом. «Заглушка» - функция представлена точной спецификацией заголовка (название и параметры) и имеет в теле всего один оператор, возвращающий значение функции. Например, тело функции-заглушки L может быть таким:

формула" src="http://hi-edu.ru/e-books/xbook691/files/ris-page173.gif" border="0" align="absmiddle" alt="

При хорошей модуляризации граф взаимосвязей модулей, как правило, представляет собой дерево, а интерфейсные элементы используются по графу от листьев дерева к узлам более высокого уровня. Однако такое не всегда возможно, и приходится анализировать и проводить оптимизацию графа. Для анализа качества результатов модуляризации используются две характеристики: связность модуля и сцепление модулей, которые рассматриваются далее.

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

  • функциональный (сильная связность) - 10;
  • последовательная - 9;
  • коммуникативная - 7;
  • процедурная - 5;
  • временная - 3;
  • логическая - 1;
  • по совпадению (слабая связность) - 0.

Модуль с функциональной связностью не может быть разбит на два других, имеющих связность того же типа. Если в модуле присутствуют подпрограммы управления входными-выходными потоками, и в нем есть основная часть по обработке этих данных, то модуль выполняет единую функциональную задачу. Как правило, такой модуль реализуется последовательностью операций в виде единого цикла и имеет функциональную связность.

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

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

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

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

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

Если операторы модуля объединяются произвольным образом, например, когда нужно указать их размещение в области памяти, такой модуль имеет связность по совпадению.

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

Сцепление модулей определяется как мера относительной независимости модулей. Независимые модули могут быть модифицированы без переделки каких-либо других модулей. Слабое сцепление более желательно, так как это означает высокий уровень независимости модуля. Модули считаются полностью независимыми, если каждый из них не содержит информации о другом. Чем больше информации о других модулях используется в них, тем меньше они независимы и тем теснее сцеплены. Такая информация появляется в результате перекрестного использования имен модулей, назначения вызываемых последовательностей, неявного применения входных и выходных кодов, а также из данных, определяемых структурами общих областей памяти. Чем очевиднее взаимодействие двух связных друг с другом модулей, тем проще определить необходимую корректировку одного модуля, зависящую от изменений, производимых в других. Большая изоляция и непосредственное взаимодействие модулей приводит к трудностям в определении границ изменений одного модуля, которые устраняли бы ошибки в других. Ниже приведены примерные меры сцепления модулей (в различных источниках оценки степени сцепления отличаются) (табл. 10.1).

Часто в больших программах используются подпрограммы для реализации вспомогательных алгоритмов. В ЯА подпрограммы оформляются в виде процедур.

Описание процедур

{имя проц.} PROC {параметр} {тело проц.} {имя проц.} ENDP где {имя проц.} – должно повторяться дважды и используется для обращения к процедуре; {параметр} может принимать одно из двух значений - (по умолчанию) или . К близкой (внутренней) процедуре можно обращаться только из того сегмента команд, где она описана. К дальней (внешней) процедуре можно обращаться из любых сегментов команд программы, в том числе и из того, где она описана. Имена и метки, описанные в процедуре, не локализуются внутри нее, поэтому должны быть уникальными в программе. Хотя в АЯ можно описать одну процедуру внутри другой, никакой выгоды это не дает и обычно не используется.

Вызов процедур

На ЯА все переходы между основной программой и процедурой нужно организовывать самим. Если из процедуры возможен возврат в DOS, то ее можно вызвать командой перехода на имя процедуры JMP {имя проц.} Если нужен возврат в вызывающую программу, то проще всего использовать команду обращения CALL {имя проц.} Тогда в теле процедуры должна быть команда возврата RET Есть другая возможность: запомнить адрес возврата с использованием стека и организовать возврат командами переходов. При вызове процедуры следует учитывать параметры, передаваемые процедуре, и ее расположение относительно точки вызова, т.е. тип перехода в команде CALL определяется автоматически, например (для процедуры p). P CALL P Если это – близкий вызов (NEAR), то производятся следующие действия: Stack:= AB, IP:= offset P где АВ – адрес возврата, т.е. эффективный адрес команды, следующей за вызовом; Дальний вызов (FAR) обеспечивает действия: Stack:= CS, Stack:= AB, CS:= seg P, IP:= offset P Если описание процедуры находится в сегменте ниже команды вызова, то следует указать атрибут перехода оператором PTR. Например , CALL FAR PTR P; дальний вызов P

Расположение процедур в сегменте

    Внутренние процедуры находятся в одном сегменте с вызывающей программой.
При этом возможны 3 варианта расположения: а) Все процедуры размещены раньше основной (вызывающей) программы, которая может быть также оформлена в виде процедуры.Например: Text SEGMENT ‘code’ ASSUME CS: text, DS: data, SS: stack A1 PROC … RET A1 ENDP Main PROC MOV AX, data MOV DS, AX … CALL A1 … MOV AX, C400h INT 21h Main ENDP Text ENDS Data SEGMENT … Data ENDS Stack SEGMENT ‘stack’ … Stack ENDS END Main б) все процедуры – ниже точки вызова. в) процедуры – внутри основной процедуры, возможно даже, что процедура внутри другой процедуры (хотя никакой выгоды это не даёт)Например, … Main PROC … CALL A1 … MOV AX, C400h INT 21h A1 PROC … RET A1 ENDP Main ENDP Text ENDS 2) Внешние процедуры располагаются в других сегментах или в других файлах.Наприме р, текст основной программы находится в файле P.asm Text SEGMENT public ‘code’ ; объединение модулей последовательно; в общий сегмент ASSUME CS: text, DS: data, SS: stack EXTRN stop: proc; объявление внешнего имени Main PROC … CALL Stop … Main ENDP Text ENDS Data SEGMENT … Data ENDS Stack SEGMENT ‘stack’ … Stack ENDS END Main Исходный текст процедуры находится в файле P1.asm Text SEGMENT public ‘code’ ASSUME CS: text PUBLIC stop; объявление имени доступным извне Stop proc …

Stop ENDP text ENDS END ; конец файла без точки входа Объединение этих файлов происходит на шаге компоновки, т.е. требуется раздельная трансляция. Например, для MASM MASM/ZI PR MASM/ZI P1 где ZI – опция, позволяющая поместить в объектный файл полную информацию о номерах строк и символах исходного модуля (ИМ). После образования PR.obj и P1.obj их нужно скомпоновать в единый загрузочный файл LINK/C0 PR P1, COMPOZ где С0 – опция, передающая в загрузочный файл символьную информацию, позволяющую отладчику CV выводить на экран полный текст ИМ, включая метки и комментарии. Модуль COMPOZ.exe готов к исполнению. Можно подключить процедуру из библиотеки . Для этого перед сегментами ИМ помещается директива INCLUDE {имя файла библиотеки}Наприме р, для подключения файла IO.asm следует записать INCLUDE IO.asm S SEGMENT ‘stack’ … S ENDS D SEGMENT ‘data’ … D ENDS C SEGMENT ‘code’ ASSUME CS:C, SS:S, DS:D Begin: … … C ENDS END Begin

Передача параметров между процедурами (организуется по желанию программиста)

    Передача параметров через регистры МП
Передавать значения фактических параметров можно через регистры МП по желанию программиста. Например , ; процедура вычисления AX:= max {AX, BX} max proc far CMP AX, BX JGE Max1 MOV AX, BX Max1: RET max endp … ; в основной процедуре … MOV AX, A ; подготовка параметров MOV BX, B ; к вызову процедуры CALL max MOV C, AX ; сохранение результата …
    Передача параметров по ссылке означает передачу адреса (имени) ячейки памяти, соответствующей фактическому параметру (передача именованного значения из ассемблера в Pascal). Для этого можно использовать имя ячейки памяти или загрузить адрес перед вызовом процедуры в регистр (BX, BP, SI или DI, т.к. в процедуре можно использовать эти регистры для адресации).
Например , командой LEA BX, B CALL……
    Передача параметров через стек.
Передача параметров через регистры ограничена их небольшим количеством. Если параметров много (больше 5-ти), их передают через стек следующим образом: - Основная программа записывает в стек фактические параметры (значения или адреса); - В процедуре используются параметры, записанные в стек.Например: ; вызов p(a1,…, ak) PUSH a1 … PUSH ak CALL p … В процедуре можно использовать дополнительный указатель стека BP, но в начале процедуры следует сохранить значение BP, которое использовалось в вызывающей программе, т.е. ; начало процедуры Р P proc PUSH BP ; сохранение BP MOV BP, SP ; настройка BP на вершину стека … Затем можно использовать базовую адресацию. Например, для близкого вызова – адрес возврата, занесенный в стек автоматически, – адрес последнего параметра ak. До возврата из процедуры следует восстановить BP командой POP BP затем очистить стек от передаваемых параметров, чтобы он не перегружался при многократном вызове процедур, т.е. установить в SP значение, на 2*k больше, чем было после вызова процедуры. Есть 2 возможности корректного возврата из процедуры. а) корректировать SP в вызывающей программе
; конец процедуры ; в вызывающей программе
POP BP CALL p
RET ADD SP, 2*k ; коррекция SP
P ENDP
б) использовать команду возврата с восстановлением стека, имеющую вид для близкого вызова RET {cnt} где {cnt} – счетчик (константное выражение), размером слово. Команда выполняет следующие действия: IP:= Stack SP:= SP + {cnt} Тогда конец процедуры имеет вид: POP BP RET 2*k p ENDP Для дальнего вызова процедуры команда возврата имеет вид RET {cnt} и выполняет следующие действия: IP:= Stack CS:= Stack SP:= SP + {cnt} При таком возврате из процедуры в вызывающей программе дополнительные действия не требуются.
    Проблема сохранения регистров при обращении к процедуре
Чтобы процедура не портила значения регистров, которые использовались в вызывающей программе, требуется в тексте процедуры перед использованием какого-либо регистра сохранить его «старое» значение в стеке, а в конце процедуры все сохраненные значения восстановить.Например , если в процедуре будет использоваться регистр CH, то его следует сохранить в стеке, но стек запоминает только со слова, поэтому в процедуре будет фрагмент: PUSH CX ; сохранение «старого» CX MOV CX, 0 ; использование CX в процедуре … ; перед выходом из процедуры POP CX ; восстановление «старого» CX Таким образом, получится обобщенная схема близкой (NEAR) процедуры с параметрами, передаваемыми через регистры и через стек

{имя проц} proc

PUSH BP для обслуживания

Mov BP, SP стека

PUSH сохранение регистров,

используемых в процедуре

тело проц.

РОР... восстановление регистров

РОР ВР восстановление BP

Как правило, процедуры и функции располагаются в разделах процедур и функций, то есть являются вложенными внутрь программ или других подпрограмм. При таком вложении описание подпрограммы есть составляющая блока, и сама подпрограмма включает в себя блок, то можно ввести понятия внешний и внутренний блок.

Внешний блок – это блок, в который вложена подпрограмма. Внутренний блок - сама подпрограмма. Все описания, расположенные во внешних для данной подпрограммы блоках, называются глобальными по отношению к блоку, который образует данная подпрограмма. Все описания, расположенные во внутреннем блоке называются локальными. Можно ввести понятие уровень вложенности. Если в разделе описания процедур и функций описаны две или более подпрограмм, то говорят, что эти подпрограммы одного уровня вложенности. По отношению к внешнему блоку они являются внутренними. По отношению между самими подпрограммами мы не можем использовать термины внешняя или внутренняя, так как они одного уровня вложенности. Если в разделе описания процедур и функций внешнего блока вложена подпрограмма, внутри которой в таком же разделе расположена другая подпрограмма, то мы говорим о разном уровне вложенности этих подпрограмм. Для третьего блока, представляющего собой самую внутреннюю подпрограмму, оба блока, в которые она вложена, будут внешними. Уровень вложенности этой подпрограммы 2. Для второго блока третий блок будет внутренним, а первый - внешним. Уровень вложенности второго блока 1. Для первого блока (самого внешнего) второй и третий блоки будут внутренними. Уровень вложенности первого блока 0, т.е. этот блок является основной программой.

Для примера рассмотрим структуру блоков, предложенную автором языка (рис.16.16). Здесь в седьмой раздел программы A вложены две подпрограммы B и C. В подпрограмму В вложена подпрограмма D. В свою очередь в подпрограмму D вложена подпрограмма G. В подпрограмму С вложены две подпрограммы E и F.

Рис. 16.16. - Пример блочной структуры

Разберемся со сферой действия описаний. Описания меток действуют только внутри раздела операторов блока, в котором они описаны. Все остальные описания действуют не только внутри блока, в котором они описаны, но и во всех внутренних блоках, вложенных в данный блок (вне зависимости от глубины вложенности). При этом казалось, что могут возникнуть конфликты между глобальными и локальными описаниями , так как в разных блоках одинаковыми именами могут быть поименованы разные понятия. Для того чтобы таких конфликтов не возникало, принято следующее правило - все имена, определяемые в локальных описаниях, отменяют действия совпадающих имен, описанных в глобальных описаниях. На рис. 16.17 показано расположение блоков из примера по уровням. Здесь линиями со стрелками показано действие глобальных описаний. Так в блоке G действуют описания внешних блоков D, B, A.

Рис. 16.17. - Расположение блоков по уровням и действие глобальных описаний

Особо рассмотрим доступ к подпрограммам. Любая подпрограмма может быть вызвана:

    из раздела операторов блока, в котором она описана;

    из раздела операторов самой себя (прямая рекурсия);

    из раздела операторов любой внутренней подпрограммы по отношению к данной (косвенная рекурсия);

    из раздела операторов любой подпрограммы, описанной ранее в том же блоке, где и данная подпрограмма.

Эти правила можем переформулировать следующим образом – любая подпрограмма может вызывать на исполнение:

    любую подпрограмму, описанную в разделе подпрограмм данной;

    саму себя (прямая рекурсия);

    все внешние подпрограммы по отношению к данной (косвенная рекурсия);

    подпрограммы, описанные ранее на том же уровне вложенности.

Взаимодействие блоков (подпрограмм) из примера показано на рис. 16.18.

Рис. 16.18 - Пример взаимодействия между блоками

Здесь линиями со стрелками показаны возможности вызова подпрограмм на выполнение (стрелки указывают направление вызова). Так, например, из программы А могут быть вызваны только подпрограммы В и С, которые вложены в седьмой раздел. Из подпрограммы F могут быть вызваны сама подпрограмма F (прямая рекурсия), подпрограмма С, в которую она вложена (косвенная рекурсия), и подпрограмма Е (находится на одном уровне и описана ранее). з программы А могут быть вызваны подпрограммы B и С. В таблице 16.9 для перечислены все возможные взаимодействия между блоками. Здесь основной алгоритм – блок, из которого производится вызов подпрограммы, вспомогательный алгоритм – вызываемая подпрограмма.

Таблица 16.9. Пример взаимодействия между блоками



Похожие публикации