Сообщение на тему конструирование программ

Обновлено: 08.07.2024

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

Практическое занятие №15.

Тема: Конструирование программ на основе разработки алгоритмов процессов различной природы.

Цель: получить представление о моделировании как методе научного познания. Исследование информационных моделей на компьютере.

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

Краткие теоретические сведения.

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

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

Характерные черты модели:

объективное соответствие с моделируемым объектом;

способность замещать познаваемый объект на определенных этапах познания;

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

наличие некоторых достаточно четких правил перехода от модельной информации (т. е. информации, полученной при изучении модели) к информации о самом моделируемом объекте.

Требования, предъявляемые к моделям:

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

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

Процесс моделирования состоит из следующих этапов:

Постановка задачи на моделирование объекта. Содержит:

ясное изложение цели предполагаемого исследования;

перечень зависимостей, подлежащих оценке по результатам моделирования;

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

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

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

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

При делении моделей по способу их реализации выделяют материальные и идеальные модели.

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

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

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

hello_html_m4af0e6e2.jpg

Вариант 1. Создайте проект размещения мебели и техники (если таковая необходима) в гостиной площадью 18 кв.м.

Вариант 2. Создайте проект размещения мебели и техники (если таковая необходима) в детской комнате площадью 16,8 кв.м. (для 2 детей с рабочими местами для каждого)

Вариант 3. Создайте проект размещения мебели и техники (если таковая необходима) в спальне площадью 16,4 кв.м.

Вариант 4. Создайте проект размещения мебели и техники (если таковая необходима) на кухне площадью 13,4 кв.м.

т. е. разделение системы в целом на совокупность взаимосвязанных элементов. При декомпозиции последовательно меняется уровень детализации системы.

По направлению процесса декомпозиции принято выделять три основных метода проектирования.

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

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

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

Абстрагирование — выделения абстракций (abstraction), под которыми понимаются существенные характеристики объекта, которые отличают его от всех других объектов и четко определяют его концептуальные границы для наблюдателя.

Инкапсуляция (encapsulation) — разделение элементов абстракции, которые образуют ее структуру и поведение.

Модульность (modularity) — разделение системы на модули (module), под которыми понимаются единицы кода, служащие блоками физической структуры системы.

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

Для ООП характерны понятия наследования и полиморфизма.

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




Лекция 5. Конструирование программ. Структурное программирование

Одной из основных задач проектирования является декомпозиция системы,

т. е. разделение системы в целом на совокупность взаимосвязанных элементов. При декомпозиции последовательно меняется уровень детализации системы.

По направлению процесса декомпозиции принято выделять три основных метода проектирования.

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

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

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

Абстрагирование — выделения абстракций (abstraction), под которыми понимаются существенные характеристики объекта, которые отличают его от всех других объектов и четко определяют его концептуальные границы для наблюдателя.

Инкапсуляция (encapsulation) — разделение элементов абстракции, которые образуют ее структуру и поведение.

Модульность (modularity) — разделение системы на модули (module), под которыми понимаются единицы кода, служащие блоками физической структуры системы.

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

Для ООП характерны понятия наследования и полиморфизма.

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

Выделяют следующие основные способы записи алгоритмов:

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

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

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

Схема алгоритма


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

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

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

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

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

Жизненый цикл программы


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

Проектирование структуры — алгоритмизация процесса обработки данных, детализация функций, разработка архитектурного проекта, выбор методов и средств создания программ.

Программирование, тестирование и отладка — основной этап работы по разработке программного средства. Часто отдельные работы этого этапа ведутся параллельно, что позволяет сократить общее время разработки.

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

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

Снятие программного продукта с продажи и отказ от его сопровождения происходит, как правило, в случае изменения технической политики фирмы-изготовителя, неэффективности работы программного продукта, наличия в нём неустранимых ошибок, отсутствие спроса.

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

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

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

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

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

3))) Стандартные типы данных Они включают: целые, действительные, символьный, логический, адресный типы.

ЦЕЛЫЕ ТИПЫ ДАННЫХТип Диапазон значений Требуемая память

Shortint -128 .. 127 1 байт

Integer -32768 .. 32767 2 байта

Longint -2147483648 .. 2147483647 4 байта

Byte 0 .. 255 1 байт

Word 0 .. 65535 2 байта

ДЕЙСТВИТЕЛЬНЫЕ ТИПЫ ДАННЫХТип Диапазон значений Требуемая память Количество цифр мантиссы

Real 2.9e-39 .. 1.7e+38 6 байт 11

Single 1.5e-45 .. 3.4e+38 4 байта 7




Duble 5.0e-324 .. 1.7e+308 8 байт 15

Extended 3.4e-4932 .. 1.1e+4932 10 байт 19

Comp -9.2e+18 .. 9.2e+18 8 байт 19

СИМВОЛЬНЫЙ ТИП ДАННЫХ Символьный тип Char занимает объем памяти равный 1 байту и может иметь значение одного символа из допустимого набора.

ЛОГИЧЕСКИЙ ТИП ДАННЫХ

Логический тип Boolean определяет те данные, которые могут принимать логические значения TRUE (истинна) и FALSE (ложь). Логический тип определен таким образом, что FALSE

Одной из основных задач проектирования является декомпозиция системы, т. е. разделение системы в целом на совокупность взаимосвязанных элементов. При декомпозиции последовательно меняется уровень детализации системы.

По направлению процесса декомпозиции принято выделять три основных метода проектирования.

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

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

Объектно-ориентированное программирование

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

Абстрагирование — выделения абстракций (abstraction), под которыми понимаются существенные характеристики объекта, которые отличают его от всех других объектов и четко определяют его концептуальные границы для наблюдателя.

Инкапсуляция (encapsulation) — разделение элементов абстракции, которые образуют ее структуру и поведение.

Модульность (modularity) — разделение системы на модули (module), под которыми понимаются единицы кода, служащие блоками физической структуры системы.

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

Для ООП характерны понятия наследования и полиморфизма.

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

Модульное программирование

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

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

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

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

Рутинность модуля  это его независимость от предыстории обращений к нему. Модуль будем называть рутинным, если результат (эффект) обращения к нему зависит только от значений его параметров (и не зависит от предыстории обращений к нему). Модуль будем называть зависящим от предыстории, если результат (эффект) обращения к нему зависит от внутреннего состояния этого модуля, изменяемого в результате предыдущих обращений к нему.

Насколько возможно, все модули:

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

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

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

должны иметь четко выраженное функциональное назначение;

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

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

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

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

Проектирование интерфейса пользователя

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

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

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

Читайте также: