Главная страница
Навигация по странице:

  • Этапы решения задач на программной основе

  • Моделирование как процесс упрощения задачи

  • Алгоритм и его основные свойства

  • Методичка. Учебное пособие В. М. Лопатин издание второе, стереотипное 1 17


    Скачать 4.33 Mb.
    НазваниеУчебное пособие В. М. Лопатин издание второе, стереотипное 1 17
    АнкорМетодичка
    Дата10.01.2023
    Размер4.33 Mb.
    Формат файлаpdf
    Имя файлаLopatin_Informatika-dlya-inzhenerov_RuLit_Me_691929.pdf
    ТипУчебное пособие
    #879085
    страница9 из 16
    1   ...   5   6   7   8   9   10   11   12   ...   16
    Системы и технологии программирования
    История развития технологий программирования
    В истории развития языков программирования выделяется несколько этапов
    [12].
    Этап 1 (от появления первых ЭВМ до середины 1960-х) характеризуется пол- ным отсутствием правил программирования. Первые программы имели простую структуру и были написаны на машинном языке (в двоичном коде). Перед програм- мистом возникали большие сложности по формированию двоичных кодов и отсле- живанию порядка выполняемых операций. Дополнительная трудность была свя- зана с определением местонахождения данных. Для упрощения процесса програм- мирования отдельные группы кода были заменены на символические имена, так появился первый язык программирования, который назвали Ассемблер (от англ. assembler– сборщик). Ассемблер относится к машинно-ориентированным языкам низкого уровня и отличается привязкой к системе команд конкретного процессора.
    Дальнейшее снижение трудоемкости процесса программирования произошло после появления языков высокого уровня, первыми из которых были языки
    Fortran и Algol. Языки высокого уровня были построены на основе алгоритмиче- ских конструкций, которые удобны для записи, более универсальны и не связаны с системой команд конкретного процессора. Все это снизило уровень детализа- ции и повысило сложность разрабатываемых программ.
    В языках высокого уровня появилось средство, которое позволяло опериро- вать подпрограммами. Подпрограммы можно было сохранять и использовать при создании других программ. Для поддержки этой технологии были созданы биб- лиотеки расчетных и служебных подпрограмм. Типичная программа того времени состояла из основной программы с набором глобальных данных и ряда подклю- ченных к ней библиотечных подпрограмм. Первоначально все глобальные данные собирались в основной программе, но со временем стало ясно, что более удачным решением будет введение локальных данных для каждой подпрограммы.
    При использовании подпрограмм разработка велась по принципу «снизу – вверх», т. е. сначала проектировали подпрограммы, а потом их использовали для создания сложной программы. Недостатки этого подхода проявлялись в сложно- сти стыковки созданных подпрограмм и в значительном затягивании работ по реализации больших проектов.
    Этап 2 (1960–1970-е гг.) связан с появлением структурного подхода к программированию. В основе структурного подхода лежит разбиение сложных программ на части (декомпозиция) и реализация отдельных частей в виде под- программ. При этом процесс проектирования строился под общей идеей и фор- мировался по принципу «сверху – вниз». Структурный подход позволял предста- вить решаемую задачу в виде иерархии подчиненных задач. Одновременно с этим вводились формальные модели алгоритмов, правила описания алгоритмов, а также метод пошаговой детализации алгоритмов.
    Принципы структурного программирования были реализованы при создании процедурных языков программирования, например языка Pascal. В таких языках
    11 / 17

    80 появились операторы, которые обеспечивали перемещение по структуре, в част- ности, оператор передачи управления.
    В результате развития структурного программирования появилась техноло- гия модульного программирования. Архитектура модульного программиро- вания предполагает создание в составе программы модулей, состоящих из групп подпрограмм, использующих одни и те же глобальные данные. Этот подход поз- волил упростить процесс программирования, поскольку позволял каждому из программистов разрабатывать свои модули независимо от других. Сочетание структурного подхода с модульным программированием позволило получать до- статочно сложные и надежные программы. Но при значительном увеличении числа проектируемых модулей появлялись ошибки, связанные с функциониро- ванием межмодульного интерфейса. Для разработки программного обеспечения с большим числом модулей потребовалось сделать переход к третьему этапу раз- вития программного обеспечения.
    Этап 3 (середина 1980-х – конец 1990-х) характеризуется появлением объ- ектно-ориентированного программирования. Технология объектно-ори- ентированного программирования основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определен-
    ного класса, а классы в свою очередь образуют иерархическую структуру с воз- можностью наследования свойств объектов. При этом взаимодействие между объектами основано на передаче сообщений.
    Выбранный подход обеспечил более полную декомпозицию программного обеспечения и существенно упростил работу, поскольку позволил практически независимо вести разработку отдельных подпрограмм. Дополнительное упроще- ние было достигнуто путем введения новых способов организации программ, ос- нованных на механизмах наследования, полиморфизма, композиции и наполнения, которые позволили конструировать сложные объекты из сравнительно простых.
    В рамках этого подхода был разработан графический интерфейс используемых средств, с помощью которого была реализована технология визуального програм- мирования, в частности, в системах Delphi, Visual C++. Привлечение визуальных средств позволило по упрощенной схеме создавать заготовку будущей программы, что привело к дополнительному уменьшению трудоемкости проектирования.
    Основные недостатки объектного подхода связаны со сложностью компиля- ции (перевод в двоичные коды) созданных объектов и последующей компоновки компилированных блоков-модулей в единое целое. Проблема компоновки в свою очередь связана с недостаточно отработанным механизмом обмена дан- ными между модулями.
    Этап 4 (с середины 1990-х до нашего времени) связан с переходом на ком- понентный подход и возникновением CASE-технологий. Основу компо- нентного подхода составляет построение программного обеспечения из от- дельно существующих частей, взаимодействие между которыми организовано на основе двоичных интерфейсов стандартного типа. Понятие объектов при этом трансформируется в объект-компоненты, которые сохраняются в двоичном коде и могут использоваться в языках программирования, которые поддержи-
    12 / 17

    81 вают эту технологию. Сформированный подход позволяет собирать библиотеки разработанных компонентов и использовать наработанные результаты при раз- работке новых продуктов. На сегодняшний день местом сбора компонентов яв- ляются серверы сети Интернет.
    Компонентный подход лежит в основе двух типов технологий, первая из ко- торых разработана на базе компонентной модели объекта COM (Component Ob- ject Model), а вторая связана с созданием распределенных приложений CORBA
    (Common Object Request Broker Architeture – общая архитектура с посредником обработки запросов объектов). В этих технологиях используются общие прин- ципы компонентного подхода и различаются некоторые детали реализации.
    Современный этап развития программирования характеризуется активным привлечением средств автоматизации разработки, без которых трудно со- здавать сложное программное обеспечение. Комплекс автоматизированных тех- нологий, которые обеспечивают разработку и сопровождение программного обеспечения, называют CASE-технологиями (Computer-Aided Software/Sys- tem Engineering – разработка программного обеспечения программных систем с использованием компьютерной поддержки). Областью применения CASE- технологий в первую очередь являются программы высокой сложности, при раз- работке которых программисты не могут фиксировать все особенности создава- емого продукта и вынуждены использовать средства автоматизации.
    Этапы решения задач на программной основе
    Решение сложной задачи с использованием компьютерных программ предпо- лагает выполнение определенного круга действий. Эти действия можно разло- жить на этапы.
    Этап 1.Определение цели и постановка задачи. На первом этапе определяется основная цель предстоящей работы и переченьзадач, которые необходимо решить для достижения поставленной цели. Здесь же формируются известные исходные данные, а также определяется формат и способ представления конечныхданных.
    Если работа укладывается в рамки технического проекта, то постановка за- дачи формулируется в специальном документе, который называется техниче-
    ским заданием.
    Правильная постановка задачи позволяет последовательно выполнить все по- следующие этапы. Напротив, допущенные ошибки могут привести к тяжелым последствиям с повторным выполнением всей работы.
    Этап 2.Моделирование. Этап выполняется при условии, когда прямое реше- ние задачи невозможно из-за отсутствия реального объекта или по причине эко- номической нецелесообразности известных подходов. В этом случае реальный объект заменяется формальным описанием или моделью, которая сохраняет лишь некоторые свойства реального объекта. Например, для сбора данных о со- стоянии здоровья населения целесообразно от изучения каждого человека пе- рейти к обработке медицинских карт.
    Этап завершается описанием выбранной модели и перечнем свойств модели, которые необходимо учитывать в процессе решения задачи.
    13 / 17

    82
    Этап 3. Построение алгоритма. На этом этапе выстраивается логическая по- следовательность действий, направленных на решение конкретных задач. После- довательность действий выстраивается в форме алгоритма, который задает неко- торый набор предписаний и правил, определяющих процесс преобразования ис- ходных данных в результат решения задачи.
    Сложные алгоритмы строят на основе модельных представлений, заложен- ных на предыдущем этапе.
    Этап 4. Разработка программы. Полученный алгоритм используется для разра- ботки программы, которая позволяет передать дальнейшее решение задачи от чело- века к машине. Запись программы производится на языке программирования. Этап завершается созданием текста программы, которая передается на этап трансляции.
    Этап 5. Трансляция программы. Текст созданной программы подвергается автоматическому преобразованию использованных в программе переменных и операций в машинные команды. Перевод программы на машинный язык осу- ществляется с помощью транслятора, который привязан к конкретному языку программирования. При трансляции программы исходными данными является текст программы, а результатом – запись программы на машинном языке. Для каждого языка программирования существуют свои программы-трансляторы.
    Этап 6. Отладка программы. Цель отладки заключается в выявлении и устранении ошибок, допущенных на предыдущих этапах. Суть отладки сводится к тестированию, которое включает стадии альфа-тестирования (с использова- нием тестов разработчика) и бета-тестирования (в реальных условиях эксплу- атации). При возникновении сложностей отладка по длительности процесса мо- жет значительно превышать этап разработки программы.
    Этап 7. Эксплуатация программы. Этап включает доработку программы по предложениям заказчика, установку программы на аппаратную базу заказчика, обучение пользователей программы, разработку эксплуатационной документа- ции. Для отдельных программ, требующих постоянного контроля и обновления, этап эксплуатации по длительности приближается к продолжительности жизнен- ного цикла созданной программы.
    Моделирование как процесс упрощения задачи
    Моделирование относится к одному из начальных этапов работы по созданию компьютерной программы.
    Моделированиеэто процесс построения модели в целях упрощения за- дачи и последующего изучения оригинала на основе построенной модели.
    Модельматериальный или мысленно представляемый объект (процесс, яв- ление), который в процессе исследования замещает оригинал и сохраняет при этом важные свойства оригинала. Классическим примером модели является географиче- ский глобус, который замещает оригинал, планету Земля, сохраняя ее форму.
    Замена оригинала моделью может быть вызвана разными причинами, в частности:
    − из-за отсутствия или недоступности оригинала;
    − в связи с возможным разрушением оригинала в процессе исследования;
    − по причине высокой стоимости процесса исследования.
    14 / 17

    83
    Модель отличается от оригинала, поэтому содержит не все, а только суще- ственные сведения об объекте.Эти сведения выбираются с учетом цели, для до- стижения которой модель создана. Модель всегда связана с определенным набо- ром упрощений. Если модель при наличии всех упрощений дает удовлетвори- тельные результаты, то говорят, что модель адекватна рассматриваемому объ- екту (процессу или явлению).
    Для создания моделей используют следующие методы.
    1. Предметное моделированиезаключается в созданииматериальной мо- дели, имеющей некоторые свойства оригинала (модели самолетов, кораблей, ав- томобилей).
    2. Физическое моделирование выражается в экспериментальном исследо- вании модели, имеющей общие свойства с оригиналом (изучение молнии как электрического разряда между проводниками).
    3. Аналоговое моделирование основано на аналогии (изоморфизме) различ- ных явлений, для которых можно использовать одинаковое описание (форма са- молета и летящей птицы).
    4. Знаковое моделированиеиспользует для построения модели в форме схемы, графика, чертежа или других знаковых систем (периодическая таблица
    Д.
    И. Менделеева).
    5. Мысленное моделирование – разновидность знакового моделирования, при котором реальное построение заменяется мысленным представлением зна- ков или операций над ними (игра в шахматы вслепую).
    Большое разнообразие моделей позволяет проводить их классификацию по раз- ным признакам. В частности, в классификации по форме представления выделяют:
    − материальные (предметные) – модели, которые воспроизводятся в форме реального объекта и используются в экспериментальных методиках познания окружающей среды; к ним относятся игрушки для детей, учебные пособия, экс- периментальные исследовательские установки;
    − информационные (теоретические) – модели, которые заменяют реальные данные об объекте формальным описанием, например компьютерной программой.
    Информационная модель– совокупность формальных данных, которая характеризует существенные свойства объекта и характер его взаимосвязей с внешней средой (электронная карта местности характеризует только состояние земной поверхности).
    Множество существующих информационных моделей может быть классифи- цировано по видам моделей:
    − вербальные – модели, выраженные с помощью естественных языков в ре- чевой или текстовой форме, например текст компьютерной программы;
    − абстрактные, или мысленные, – модели, которые используют не суще- ствующие в жизни понятия, такие как абсолютно черное тело или идеальный газ;
    − знаковые – модели, которые основаны на записи специальных символов, связанных с системой представления данных в изучаемой области знаний, например запись музыкального произведения с помощью нот на нотном стане;
    15 / 17

    84
    − графические – модели, основанные на представлении объекта в виде схемы, графика, диаграммы, карты, чертежа, таблицы, диаграммы и т. п.
    По способу организации данных выделяются информационные модели:
    − табличные – модели, в которых данные оформляются в виде пересекаю- щихся строк и столбцов (электронные таблицы);
    − иерархические – модели с распределением объектов по разным уровням, сгруппированным в форме дерева (файловая структура);
    − сетевые – модели, в которых объекты взаимодействуют между собой че- рез множество связей (локальная компьютерная сеть); сетевые модели можно представлять в форме графа – математического объекта, состоящего из конеч- ного множества вершин или узлов, связанных между собой ребрами или дугами.
    Моделирование может выступать в качестве отдельного этапа работы в про- цессе создания компьютерной программы или служить средством для получения основного результата. Во втором случае в качестве основной цели выбирается разработка компьютерной модели и проведение на базе созданной модели иссле- довательской работы, которую невозможно провести с реальным объектом. Раз- работка и исследование такой модели выполняется на компьютере, а сама модель в этом случае называется имитационной моделью.
    Имитационное моделирование – это процесс создания модели реальной системы и постановки компьютерного эксперимента на этой модели для изуче- ния и прогнозирования ее поведения в целях улучшения характеристик рассмат- риваемой системы [13].
    Имитационное моделирование применяется к исследованию сложных моде- лей, которые невозможно построить другими способами. При этом создание мо- дели в виде компьютерной системы и проведение исследований на компьютере является обязательным условием.
    Необходимость в проведении имитационного моделирования возникает в случаях, когда известные подходы не позволяют решить поставленную задачу:
    − не существуют аналитические методы решения созданных математиче- ских моделей или эти методы связаны с высокой трудоемкостью;
    − реальные условия, в которых находится объект исследования, трудно или невозможно обеспечить;
    − нет физической возможности для отслеживания параметров процесса, например, в случае быстропротекающих или опасных процессов.
    Имитационное моделирование целесообразно применять при решении чис- ленных задач в области математики и естественных наук или при решении задач организационного управления в разных сферах деятельности, например при про- ектировании производственных систем. Возможной областью применения ими- тационного моделирования является сфера образования, науки и профессио- нальной подготовки. Замена реального эксперимента на исследование модели за- частую дает более глубокие и порой неожиданные результаты.
    Сфера применения имитационных моделей ограничена существующими не- достатками:
    16 / 17

    85
    − на решение задачи требуется много времени, необходимо также привлече- ние высококвалифицированных специалистов;
    − полученные результаты выражаются только в численном виде;
    − возникают трудности с получением исходных данных, необходимых для формирования модели.
    Алгоритм и его основные свойства
    Построение алгоритма относится к этапу работ, предшествующему разра- ботке программы.
    Понятие «алгоритм» связано, как правило, с решением сложных задач, требу- ющих привлечения вычислительной техники. Вместе с тем это понятие можно ис- пользовать и при описании простых операций и решений. Примеры простых ре- шений, в которых используются алгоритмические подходы: рецепты кулинарной книги, порядок автоматической стирки белья, кипячение воды в чайнике.
    Простые подходы связаны с произвольным толкованием последовательности и содержания действий, в вычислительной технике последовательность дей- ствий тесно привязана к исполнителю алгоритма и перечню операций, которые может выполнять исполнитель.
    Алгоритм – определенная последовательность действий, которая описывает порядок перехода объекта из начального состояния в конечный результат с ис- пользованием понятной исполнителю системы команд.
    Из определения следует, что алгоритм можно представить как некоторую со- вокупность предписаний, которая выбирается из набора правил и инструкций конкретного исполнителя и позволяет решать задачу из некоторого класса одно- типных задач.
    Различают процессы создания и реализации алгоритмов.
    Создание алгоритма – творческий процесс, выполняемый специалистом в области разработки алгоритмов.
    Реализация– процесс выполнения предписанных команд формальным ис-
    полнителем, к которым в первую очередь относятся различные автоматические устройства, в том числе вычислительная техника.
    Формальный исполнитель не вникает в смысл того, что он делает, но получает при этом необходимый результат. Строгое выполнение последовательности опера- ций с отвлечением исполнителя от содержания поставленной задачи выражается в особенности, которая называется формальностью алгоритма. Наряду с фор- мальностью алгоритм характеризуется и другими определенными свойствами.
    1. Дискретность. Одно из свойств алгоритма, которое выражается в разбие- нии описываемого процесса на последовательность отдельных шагов или команд.
    Совокупность отдельных шагов образует дискретную структуру алгоритма.
    2. Понятность. Для создания алгоритма могут быть использованы только те команды, которые исполнитель понимает и может выполнить. Другими словами, алгоритм должен состоять из команд, которые имеются в системе команд испол- нителя.
    17 / 17

    86 3. Определенность,или детерминированность. При разработке алго- ритма не могут быть использованы команды, смысл которых воспринимается ис- полнителем неоднозначно. Иначе говоря, алгоритм не должен оставлять места для произвола исполнителя.
    4. Результативность. Процесс, описываемый алгоритмом, должен прекра- титься за конечное число шагов с получением определенного результата.
    5. Массовость. Чаще всего алгоритмы обеспечивают решение не одной кон- кретной задачи, а некоторого класса задач данного типа. Это свойство позволяет выделять область применимости алгоритма.
    Каждый алгоритм формируется из некоторого определенного набора типо- вых действий. Набор этих действий получается довольно наглядным в случае графического описания алгоритма, которое основано на представлении каждого действия в виде геометрической фигуры (блока). Графическое описание позво- ляет представлять алгоритм как систему связанных между собой функциональ- ных блоков.Примеры графического изображения блоков, из которых складыва- ется описание алгоритма, представлены в табл. 28.
    Таблица 28
    Графическая запись алгоритмических действий
    Наименование действия
    Обозначение
    Функция
    Пуск – останов начало или конец дей- ствия
    Ввод – вывод ввод или вывод данных
    Процесс (действие) вычислительное дей- ствие
    Условие (ветвление) проверка условия и вы- бор направления
    Предопределенный про- цесс расчет по подпрограмме
    Модификация начало цикла
    Документ вывод на печать
    Графическое представление алгоритма называют блок-схемой алгоритма.
    1 / 15

    87
    Блок-схема состоит из связанных между собой блоков, которые располага- ются сверху вниз и соединяются между собой стрелками перехода. Взаимное расположение блоков показывает очередность выполнения процесса, а стрелки – направление вычислительного процесса. Внутри каждого блока вводится надпись, которая уточняет функцию блока или описывает математическое дей- ствие.
    Алгоритмы в зависимости от цели, начальных условий, путей решения за- дачи, последовательности действий исполнителя подразделяются на разные типы. К основным наиболее часто используемым типам относятся линейные и
    циклические алгоритмы. Блок-схемы основных типов алгоритмов представлены в табл. 29. Кроме этого выделяют и другие типы, механические или жесткие ал- горитмы, которые описывают работу механизмов, например двигателя внутрен- него сгорания.
    Таблица 29
    Разновидности алгоритмов
    Тип алгоритма
    Блок-схема
    Линейныеалгоритмы состоят из набора команд, которые выполняют последовательно друг за другом
    Циклическиеалгоритмы связаны с многократным заранее определенным количеством повторяемых действий и обновлением расчетных данных на каждом действии
    Циклические с предусловиемалго- ритмы содержат предварительную проверку возможности выполнения цикла
    2 / 15

    88
    Продолжение табл. 29
    Тип алгоритма
    Блок-схема
    Циклические с постусловиемалго- ритмы основаны на проверке резуль- татов циклических вычислений и остановке цикла после выполнения постусловия
    Приведенные в табл. 29 блок-схемы могут использоваться для построения различных алгоритмических конструкций. На рис. 25 в качестве примера пока- зана схема алгоритма для расчета значения функции f(n) = 3
    n
    при n = 5.
    Рис. 25. Циклический алгоритм с предусловием
    Наряду с графическим представлением существуют и другие формы записи алгоритмов. Для сравнения разных подходов рассмотрим пример составления алгоритма в разных формах записи.
    Пример. Составим алгоритм начисления заработной платы, используя следу- ющие правила:
    − если стаж работы менее 1 года, то заработная плата равна А;
    − при стаже от 1 до 3 лет – заработная плата возрастает в два раза;
    − более 3 лет – каждый год идет повышение на величину В.
    Введем обозначения: заработная плата – ZP, стаж работы – ST; запишем ма- тематическую формулировку задачи:
    3 / 15

    89
    =
    2 ∙
    2 ∙ + (
    − 3) ∙
    < 1 1 ≤
    ≤ 3
    > 3 1. Словесно-формульное описаниеосновано на представлении алго- ритма в форме последовательности слов, предложений и формул с использова- нием естественного языка. Решение задачи с использованием этого описания складывается следующим образом.
    1) Ввести ST, перейти к п. 2.
    2) Если ST<1, то ZP=А, перейти к п. 4, иначе перейти к п. 3.
    3) Если ST<=3, то ZP=2*А, иначе ZP=2*А+(ST-3)*В, перейти к п. 4.
    4) Вывести (на печать) значение ZP.
    5) Вычисления прекратить.
    Распространение словесно-формульного описания на практике ограничива- ется отсутствием строгой формализации, наличием многословности, а также неоднозначностью толкования отдельных действий алгоритма.
    2. Графическое представлениеэтого же алгоритмана основе структурной блок-схемы показано на рис. 26.
    Графический подход отличается простотой и наглядностью, дает хорошие ре- зультаты при решении относительно небольших задач, но занимает значительно больше места. Объемная задача раздвигает границы блок-схемы до такой сте- пени, что ее визуальное восприятие становится трудным или невозможным. По этой причине использование графического подхода при всех его преимуществах ограничено относительно небольшими программами.
    3. Описаниенаосновепсевдокодоввыражается в полуформализованном представлении алгоритмов на условном алгоритмическом языке, который содержит элементы языка программирования, фразы естественного языка, общепринятые ма- тематические обозначения. Сочетание естественного языка с математической запи- сью и общепринятыми служебными словами выводит псевдокодна промежуточное место между естественным и формальным языками. Запись алгоритма для начисле- ния заработной платы на псевдокоде производится следующим образом: алг Зарплата (цел ST, вещ ZP) арг ST, рез ZP нач если ST<1 то ZP = А иначе если ST<=3 то ZP=2*А иначе ZP= 2*А+(ST-3)*В все все кон.
    4 / 15

    90
    Рис. 26. Графическое представление алгоритма
    Отсутствие строгих синтаксических правил и определенный произвол в за- писи команд не позволяют поставить псевдокод в один ряд с алгоритмическими языками программирования.
    1   ...   5   6   7   8   9   10   11   12   ...   16


    написать администратору сайта