Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК инфс лек.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.37 Mб
Скачать

Алгоритмизация и основные этапы решения инженерных задач

Алгоритм - это

  1. описание последовательности действий для решения задачи или достижения поставленной цели;

  2. правила выполнения основных операций обработки данных;

  3. описание вычислений по математическим формулам.

Технология решения задач на компьютере Этапы решения задач на компьютере

Решение задач на компьютере можно разделить на несколько основных этапов:

  • На первом этапе обычно строится описательная информационная модель объекта или процесса.

  • На втором этапе описательная информационная модель формализуется (записывается с помощью какого-либо формального языка), то есть создается формализованная модель.

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

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

  • построение алгоритма решения задачи и его кодирование на одном из языков программирования;

  • построение компьютерной модели с использованием одного из приложений (электронных таблиц, СУБД. MathCAD и т.д.).

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

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

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

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

Основы структурного программирования Алгоритмы

Основной принцип структурного программирования

Структурное программирование — это метод программирования, опирающийся на структурную организацию программы.

Структурное программирование сосредоточивается на одном из наиболее подверженных ошибкам факторов программирования – логике программы – и включает три главные составляющие:

  • проектирование сверху вниз;

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

  • структурное кодирование.

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

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

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

Структурированная (разбитая на части) задача имеет следующие достоинства:

  1. легче читается- становится понятней

  2. легче отлаживается( отдельными небольшими частями)-сокращается вероятность ошибок

  3. одну задачу могут разрабатывать несколько программистов одновременно (при неиспользовании глобальных величин)

Основной принцип структурного программирования - обеспечить максимальное соответствие структуры текста программы логике решаемой проблемы.

Способы реализации основного принципа структурного программирования:

1) Структурируемости и читаемости текста программы – отступы, обозначения, группировка частей текста.

2) Отлаживаемость программы – пригодность конструкций языка к отладке. В значительной степени связана с особенностями типизации данных. Наличие жесткого контроля типов с диагностикой ошибок при трансляции программы. Другая важная часть – наличие интегрированной среды разработки.

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

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

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

Примеры неструктурных языков: Ассемблер; FORTRAN;

Примеры структурных языков: С; C++; PASCAL; Object Pascal; Java; JavaScript/Jscript.

Основные задачи структурного программирования

Структурное программирование предназначено для решения трех основных задач:

  1. Повышение эффективности разработки программ: а) увеличение скорости написания программ; б) увеличение качества их сопровождения (внесения усовершенствований, исправления ошибок); в) уменьшение стоимости разработки; г) обеспечение возможности групповой работы с проектом; д) обеспечение возможности проектирования ПО (software engineering).

  2. Повышение надежности работы программ. Никому не нужна дешевая, мгновенно написанная и занимающая мало ресурсов программа, которая работает очень быстро, но с ошибками. Из программистского фольклора: “Беремся написать вам ПО : 1. Бысро 2.дешево 3.надежно. – Два из трех.

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

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

Понятие "алгоритм" так же, как и понятие "информация" относится к фундаментальным неопределяемым понятиям информатики, а также математики. Свое происхождение термин "алгоритм" берет от имени узбекского ученого, жившего в XII веке в Ташкенте – Абу Мухаммед ибн Муса аль-Маджус аль-Хорезми, который разработал правила письменных арифметических вычислений для чисел, записанных в позиционной десятичной системе счисления. В процессе перевода его научного труда на латинский язык имя автора было усечено до последней компоненты и трансформировано (в силу фонетических особенностей латиницы) в слово "Algorithmi", которым долгое время обозначались изобретенные им методы вычислений.

В наши дни этот термин имеет другое смысловое наполнение:

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

Исполнитель алгоритма – это некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом.

К числу основных свойств алгоритма относятся следующие:

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

  • Дискретность (раздельность) – выполнение каждого очередного шага алгоритма должно начинаться только после полного завершения предыдущего шага; Преобразование исходных данных в результат осуществляется во времени дискретно.

  • Детерминированность (определенность) – выполнение алгоритма исполнителем носит механический характер, т.е. выбор каждого очередного шага алгоритма зависит не от предпочтений исполнителя, а от результатов, достигнутых им на предыдущем шаге; Это свойство состоит в том, что каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола

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

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

На практике используются следующие формы представления алгоритмов:

  • Словесная запись (неформализованная запись алгоритма на естественном языке, например, рецепт приготовления манной каши);

  • Блок-схема (наиболее наглядная графическая форма представления алгоритмов, используемая профессионалами особенно в тех случаях, когда алгоритм обладает изощренной логикой исполнения);

  • Псевдокоды (язык программирования для бедных, когда нет возможности преподавать основы алгоритмизации с использованием ЭВМ – полуформализованные описания алгоритмов, включающий в себя как элементы "птичьего" языка программирования);

  • Компьютерная программа (жестко формализованная запись алгоритма, ориентированная на исполнителя – ЭВМ). Для разработки компьютерных программ используются инструментальные средства, называемые языками программирования.

Алгоритмы будем представлять в виде структурных схем, т.е. графически. При выполнении схем алгоритмов и программ (с учетом их детализации) отображаются в виде условных графических обозначений – символов (ГОСТ 19.701-90). В таблице 1 приведены основные символы, используемые в схемах алгоритмов.

Порядковый номер символа проставляют слева в верхней части символа в разрыве его контура. Символы соединяются прямыми линиями (линиями потока).

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

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

УСЛОВНЫЕ ГРАФИЧЕСКИЕ ОБОЗНАЧЕНИЯ СИМВОЛОВ, ИСПОЛЬЗУЕМЫХ ДЛЯ СОСТАВЛЕНИЯ БЛОК-СХЕМЫ АЛГОРИТМА по ГОСТ 19.701-90

Таблица 1

СИМВОЛ

СОДЕРЖАНИЕ

ОБОЗНАЧЕНИЕ

ПРАВИЛА ПРИМЕНЕНИЯ

R =0,5a

ПУСК-ОСТАНОВ

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

ПРОЦЕСС

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

РЕШЕНИЕ

Выбор направления выполнения алгоритма или программы в зависимости от некоторых переменных условий.

Предопределенный

процесс

Использование ранее созданных и отдельно описанных алгоритмов и программ.

ВВОД – ВЫВОД

Ввод данных или их вывод на любой носитель (например, монитор)

0 ,5a

СОЕДИНИТЕЛЬ

Указание связи между прерванными линиями потока, связывающими символами.

5 мм

КОММЕНТАРИЙ

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

(компьютером не исполняется)

МОДИФИКАЦИЯ

Выполнение операций, меняющих команды или группы команд, изменяющих программу.

ЛИНИИ ПЕРЕХОДА

Стрелки устанавливаются в конце пути.

а = 10; 15; 20 . . . мм;

b = 1,5а или 2а

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

Блок "решение" используется для обозначения переходов управления по условию. В каждом блоке "решение" должны быть указаны вопрос, условие или сравнение, которые он определяет.

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

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

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

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

Ветвление – эта конструкция служит для выбора одного из двух возможных функциональных блоков в зависимости от выполнения (или невыполнения) некоторого условия

Повторение(цикл) – используется для обозначения многократного повторения какого-либо действия.

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