Технология разработки программного обеспечения измерительных процессов. Методичка. Учебное пособие для направления Приборостроение Нижневартовск 2016 удк к63 Одобрено
Скачать 179.76 Kb.
|
Технология разработки программного обеспечения измерительных процессов Учебное пособие для направления «Приборостроение» Нижневартовск 2016 УДК К-63 Одобрено редакционно-издательским советом филиала (протокол № 3 от 17 ноября .2016) Технология разработки программного обеспечения измерительных процессов: учебное пособие для направления «Приборостроение» / Д.В. Топольский, И.Г. Топольская – Нижневартовск, 2016. –25с. Учебное пособие разработано в соответствии с ФГОС-3+ по направлению обучения «Приборостроение» и предназначены для организации самостоятельной работы студента в рамках реализации компетентностного подхода в образовании. Пособие содержит теоретические сведения и примеры программ по дисциплине «Программное обеспечение измерительных процессов». Утверждено на заседании кафедры Протокол № « 3» ноября 2016 год ВВЕДЕНИЕ Широкое внедрение вычислительной техники во все сферы человеческой деятельности, эффективность этого процесса неразрывно связаны как с развитием многочисленных сложных технических разработок, так и с уровнем подготовки в этой области специалистов самого разного профиля. Соответствие функциональных возможностей вычислительных систем и технологического назначения, связанных с ними объектов, обуславливает необходимость соответствующей подготовки специалистов. Решение этой задачи связано как с организацией учебного процесса на всех уровнях, включая и систему повышения квалификации специалистов, так и с его учебно-методическим обеспечением. Все современные технические специалисты, в том числе и в области электроэнергетики, должны обладать знаниями как об аппаратной, так и программной частях вычислительной техники. Вычислительная техника развивается такими быстрыми темпами, что сейчас принято говорить о поколениях вычислительных машин, отличающихся элементной базой, характеристиками и назначением. Однако практически все вычислительные устройства имеют общие арифметические и логические основы, а также основы их программирования. Именно эти вопросы рассматриваются в данном учебном пособии. 1. АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ. ОСНОВНЫЕ ПОЛОЖЕНИЯ Несмотря на свою высокую технологичность и производительность, процессор ЭВМ способен выполнять только самые простейшие команды. Поэтому для решения сложнейших задач обработки информации программист должен составить пошаговое описание последовательности действий, которые должен выполнить центральный процессор. Для понимания этого необходимо усвоить ряд основных понятий. Алгоритмизация — это процесс создания пошагового описания решения задачи, процесс создания алгоритма. Алгоритмизация является обязательным промежуточным этапом между постановкой задачи и программированием. Алгоритмизация учитывает особенности постановки задачи, конкретизирует основные параметры её реализации, определяет источники и структуру входной и выходной информации. Алгоритм — система точно сформулированных правил, определяющая процесс преобразования допустимых исходных правил (входной информации) в желаемый результат (выходную информацию) за конечное число шагов. Алгоритм должен отвечать ряду требований. Прежде всего, он должен предусматривать правильное решение конкретной задачи, а также предусматривать все ситуации, которые могут возникнуть при решении задач подобного класса в целом. Возможности компьютера как технической системы обработки данных связаны с используемым программным обеспечением. Программа — упорядоченная последовательность команд (инструкций) компьютера для решения задачи. Программное обеспечение — совокупность программ обработки данных и необходимых для их эксплуатации документов. Программа — результат интеллектуального труда, для которого характерно творчество, индивидуальность разработчиков. Вместе с тем программирование предполагает и рутинные работы, которые могут и должны иметь строгий регламент выполнения и соответствовать стандартам. Программирование — теоретическая и практическая деятельность, связанная с созданием программы. Программирование базируется на комплексе научных дисциплин, направленных на исследование, разработку и применение методов и средств разработки программ (специального инструментария создания программы). Основы программирования изучаются в рамках специальной дисциплины. 2. ПОНЯТИЕ АЛГОРИТМА. СВОЙСТВА АЛГОРИТМА Несмотря на то, что понятие «алгоритм» уже давно вошло в употребление, его определения различаются от сферы деятельности, где оно используется. Своей спецификой отличается и программирование. Рассмотрим некоторые определения, помимо приведенного ранее. Определение 1 (Колмогоров). Алгоритм — это всякая система вычислений, выполняемых по строго определенным правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи. Определение 2 (Марков). Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату. Определение 3. В школьном курсе информатики часто используют следующее определение: алгоритм — это понятное и точное указание исполнителю совершить последовательность действий, направленных на решение задачи. Для того чтобы описание последовательности действий стало алгоритмом с точки зрения программирования, то оно должно обладать следующими свойствами: 1. Наличие ввода исходных данных. 2. Наличие вывода результата выполнения. 3. Дискретность — возможность разбиения алгоритма на отдельные элементарные действия (шаги), которые можно реализовать на ЭВМ и результат выполнения которых определен и понятен. 4. Детерминированность (определенность, однозначность) — каждая команда алгоритма (предписание, выдаваемое на каждом шагу) должна быть понятна исполнителю, не оставлять места для ее неоднозначного толкования и неопределенного исполнения. 5. Результативность (конечность) алгоритма означает, что для любого допустимого набора исходных данных он должен через определенное число шагов завершить работу. 6. Массовость (общность) алгоритма предполагает возможность изменения исходных данных в определенных пределах. Свойство определяет пригодность алгоритма для решения множества задач данного класса. 7. Корректность — алгоритм должен давать правильное решение задачи. 8. Эффективность — для решения задачи должны использоваться ограниченные ресурсы компьютера (процессорное время, объем памяти и т. д.). Все эти требования, которым должны удовлетворять алгоритмы при программировании, ориентированы на то, что при написании программ для ЭВМ исполнителем является процессор. Упрощенная модель процессора содержит арифметико-логическое устройство (АЛУ), позволяющее производить арифметическую и логическую обработку данных, а также устройство управления (УУ), управляющего работой АЛУ, позволяющего считывать и размещать в памяти данные. В ЭВМ классического (фон-неймановского) типа АЛУ и УУ совместно образуют центральный процессор ЭВМ. 3. СПОСОБЫ ЗАПИСИ АЛГОРИТМОВ Алгоритмы можно записывать разными способами. Наиболее распространены следующие: 1. Графический; 2. На естественном языке; 3. В виде блок-схемы. Примером графической записи алгоритма является инструкция по сбору мебели. Кулинарный рецепт является примером записи алгоритма на естественном языке. Однако для разработки структуры программы удобнее воспользоваться записью алгоритма в виде блок-схемы. Для изображения основных алгоритмических структур на блок-схемах используются условные графические обозначения, представленные на рис. 1.
Рис. 1. Обозначения, используемые в блок-схемах алгоритмов 4. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ Одним из основных этапов программирования является разработка алгоритма. При изучении основ программирования целесообразно не привязываться сразу к какому-либо языку, а разрабатывать алгоритмы без записи на языке программирования, используя при этом их запись на естественном языке и с помощью блок-схем. Для проверки работоспособности алгоритмов рекомендуется использовать трассировочные таблицы, содержащие пошаговую запись выполнения алгоритма. Любой алгоритм можно составить из отдельных частей — алгоритмических конструкций. Различают несколько алгоритмических конструкций. Наиболее распространенными являются следующие три: 1. Следование. 2. Ветвление. 3. Цикл. Алгоритмическая конструкция «следование» является основой для линейных алгоритмов, применяемых для решения простейших задач. Линейными называются алгоритмы, в которых все действия совершаются одно за другим, независимо от исходных данных и результатов промежуточных вычислений. Характерная форма линейных алгоритмов — последовательное выполнение команд. Блок-схема линейного алгоритма представлена на рис. 2. Рис. 2. Блок-схема линейного алгоритма На самом деле в жизни регулярно приходится принимать решения в зависимости от создавшейся ситуации. Если идет дождь, то мы берем зонт. Если жарко, то мы идем купаться. Разумеется, встречаются и более сложные положения, когда надо сделать выбор. Появляется несколько направлений для продолжения. Алгоритм как бы раздваивается, разветвляется. В этом случае говорят, что алгоритм содержит ветвление. Блок-схемы разветвляющихся алгоритмов представлены на рис. 3. Различают неполное (рис. 3, а) и полное ветвление (рис. 3, б). На естественном языке неполное ветвление можно сформулировать так: если условие выполняется, то запустить вычислительный процесс. Для полного ветвления подходит следующее описание на естественном языке: если условие выполняется, то запустить вычислительный процесс 1, иначе запустить вычислительный процесс 2.
Рис. 3. Блок-схемы разветвляющихся алгоритмов Разветвляющимся называют алгоритм, в котором в зависимости от исходных данных и результатов промежуточных вычислений осуществляется выбор по одному из возможных вариантов. Варианты (направления вычислений), по которым может реализоваться вычислительный процесс, называют ветвями. Выбор ветви зависит от результатов проверки некоторого условия. Если условие выполняется, то выбирается одна ветвь, иначе — другая ветвь. Часто встречаются инструкции, в которых требуется один и тот же набор действий выполнять много раз подряд (Иди, пока не придешь; закручивай гайку, пока не завернешь до отказа и т.д.). Для этого нужна новая форма организации действий — цикл. Цикл — многократно повторяющийся участок вычислительного процесса. Циклическим называют алгоритм, в котором получение результата обеспечивается многократным выполнением одних и тех же операций. В цикле всегда имеется четыре действия: 1. подготовка — задание начального значения параметру цикла; 2. основные действия (тело цикла) — реализация необходимых вычислений; 3. подготовка к следующему циклу (модификация) — изменение параметра цикла; 4. проверка условия — проверка условия окончания цикла. Все эти действия присутствуют в каждом цикле, но порядок их следования может быть различный. Блок-схема циклического алгоритма представлена на рис. 4. Поэтому различают циклы: — с постусловием (рис. 4, а), при этом программа выполняется до тех пор, пока не будет удовлетворено условие выхода из цикла; — с предусловием (рис. 4, б) — условие проверяется сразу же после подготовки.
Рис. 4. Блок-схемы циклических алгоритмов Основное различие циклов с постусловием от циклических алгоритмов с предусловием заключается в том, что в первом случае тело цикла выполняется, по крайней мере, один раз, а во втором может получиться, что цикл вообще не будет выполняться. Примеры математических вычислений в силу своей формальности не всегда точно дают представление об особенностях алгоритмов. Рассмотрим примеры циклические алгоритмов, применяемых в простейших технологических процессах. Примером цикла с постусловием может являться процесс забивания гвоздя: 1. Подготовка: «наживить» гвоздь в нужном месте и приподнять молоток (замахнуться). 2. Тело: нанести удар молотком по гвоздю. 3. Модификация: снова замахнуться. 4. Условие: если гвоздь забит, то выйти из цикла, иначе перейти к шагу 2. Примером цикла с предусловием может являться процесс накачивания колеса: 1. Подготовка: Подсоединить к колесу насос с манометром и замерить давление в шине. 2. Условие: если давление в норме, то выйти из цикла, иначе перейти к телу. 3. Тело: произвести прямой ход поршня (качок). 4. Модификация: вернуть поршень в исходное положение (обратный ход поршня) и перейти к шагу 2. На этих примерах можно отчетливо увидеть разницу между циклом с предусловием и постусловием, так как чтобы забить гвоздь надо хотя бы один раз по нему ударить молотком, а вот при подготовке автомобиля к поездке подкачивать шину может оказаться необязательным, если давление в ней в норме. Способ организации цикла зависит от условия задачи. Иногда указывается количество повторений цикла. Это так называемые циклы со счетчиками (или арифметические циклы). Блок-схема цикла со счетчиком приведена на рис. 5. Примером технологических процессов, где используются циклы со счетчиками, являются процессы автоматической упаковки или фасовки продукции, когда заранее известно количество изделий, помещаемых в одну упаковку. Рис. 5. Блок-схема цикла со счетчиком 5. ОСНОВНЫЕ ЭЛЕМЕНТЫ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ Языки программирования — это формальные языки, специально созданные для общения человека с компьютером. Как правило, при освоении основ программирования, изучаются языки программирования высокого уровня. Каждый язык программирования, равно как и естественный язык (русский, английский и т. д.), имеет алфавит, словарный запас, свои грамматику и синтаксис, а также семантику. Алфавит — фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке. Синтаксис — система правил, определяющих допустимые конструкции языка программирования из букв алфавита. Семантика — система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных. При описании языка и его применении используют понятия языка. Понятие языка — некоторая синтаксическая конструкция и определяемые ею свойства программных объектов или процесса обработки данных. Взаимодействие синтаксических и семантических правил определяют те или иные понятия языка, например, операторы, идентификаторы, переменные, функции и процедуры, модули и т. д. В отличие от естественных языков правила грамматики и семантики для языков программирования, как и для всех формальных языков, должны быть явно, однозначно и четко сформулированы. Языки программирования служат различным целям, и их выбор определяется удобностью пользователя, пригодностью для данного компьютера и данной задачи. А задачи для компьютера бывают самые разнообразные: вычислительные, экономические, графические, экспертные и т. д. Такая разнотипность решаемых задач и определяет многообразие языков программирования. Например, Бейсик широко употребляется при написании простых программ, Фортран — классический язык для решения математических и инженерных задач. Кобол ориентирован на деловые задачи, ЛОГО для детей, которые решают задачи управления черепашкой. Пролог — язык программирования для создания систем искусственного интеллекта. Паскаль (развитие идеи Алгол) — учебный язык для обучения программированию в школах и ВУЗах, АДА — прямой наследник Паскаля — предназначен для создания больших программных систем, Си — сочетает в себе черты языка программирования высокого уровня и машинно-ориентированного языка, допуская программиста ко всем машинным ресурсам, чего не обеспечивает Бейсик и Паскаль. Языки программирования, имитирующие естественные языки, обладающие укрупненными командами, ориентированные на решение прикладных содержательных задач, называют языками «высокого уровня». В настоящее время насчитывается несколько сотен таких языков, а если считать и их диалекты, то это число возрастает до нескольких тысяч. Языки программирования высокого уровня существенно отличаются от машинно-ориентированных (низкого уровня) языков. Во-первых, машинная программа, в конечном счете, записывается с помощью лишь двух символов: 0 и 1. Во-вторых, каждая ЭВМ имеет неограниченный набор машинных операций, ориентированных на структуру процесса. Как правило, этот набор состоит из сравнительно небольшого числа простейших операций, типа: переслать число в ячейку; считать число из ячейки; увеличить содержимое ячейки на + 1 и т. п. Команда на машинном языке содержит очень ограниченный объем информации, поэтому она обычно определяет простейший обмен содержимого ячеек памяти, элементарные арифметические и логические операции. Команда содержит код и адреса ячеек, с содержимым которой выполняется закодированное действие. Языки программирования высокого уровня имеют следующие достоинства: 1. алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста, 2. набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса, 3. конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде, 4. используется аппарат переменных и действия с ними, 5. поддерживается широкий набор типов данных. Таким образом, языки программирования высокого уровня являются машинно-независимыми и требуют использования соответствующих программ- переводчиков (трансляторов) для представления программы на языке машины, на которой она будет исполняться. Интерпретация конструкций языка программирования должна быть абсолютно однозначной, так как фраза на языке программирования превращается в машинный код автоматически, с помощью программы-транслятора, и любой намек на неоднозначность либо делает эту фразу непереводимой, либо приводит к ошибке. Для строгого и точного описания синтаксиса языка программирования, как правило, используют специальные метаязыки (языки описания других языков). Металингвистические формулы в некотором виде заложены в трансляторы. С их помощью ведется проверка конструкций, используемых программистом, на формальное соответствие какой-нибудь из конструкций, синтаксически допустимых в этом языке (синтаксический контроль). Транслятором называют программу, производящую трансляцию (от лат. translatio — перенесение) — процесс преобразования с одного языка программирования в другой. Как правило, трансляция — это создание программы в машинных кодах, которую можно выполнить. Трансляция обеспечивает включение библиотечных подпрограмм, модулей, процедур в итоговую программу на машинном языке. Различают два вида трансляции: 1. компиляцию(от лат. сompilatio — присваивать), при которой результат получается в виде готовой программы, выполняемой независимо от исходного текста программы, 2. интерпретацию, при которой трансляция и выполнение программы происходит покомандно. При компиляции результатом является объектный файл, который представляет собой часть программы на машинном языке с необходимыми внешними ссылками для компоновщика, а также с таблицей перемещений для загрузчика операционной системы. Интерпретация (от лат. Interpretatio — толкование) — это единый процесс, в котором происходит «понимание» команды и получение результата ее работы, в отличие от компиляции, когда процесс трансляции и выполнения разъединены. Описанию грамматики языка предшествует описание его алфавита. Алфавит любого языка состоит из фиксированного набора однозначно трактуемых символов. Алфавит языков программирования, как правило, связан с литерами клавиатуры печатной машинки. Клавиатуры персональных компьютеров близки к ним по наличию литер. Алфавиты большинства языков программирования близки друг к другу и основываются на буквах латинского алфавита, арабских цифрах и общепринятых спецсимволах, таких как знаки препинания, математических операций, сравнений и обозначений. Большинство популярных языков программирования в своем алфавите содержат следующие элементы: буквы, цифры, знаки арифметических операций, разделители, служебные слова, специальные символы. Несмотря на значительные различия между языками программирования, ряд фундаментальных понятий в большинстве из них схожи. Приведем часть из них. Оператор — одно из ведущих понятий всех языков программирования (теоретически, за исключением чисто декларативных; но в действительности и они используют родственное понятие). Операторпредставляет собой законченную фразу языка и однозначно трактуемый этап обработки данных. В соответствии с теорией алгоритмов выделяют основные (базисные) операторы языка: присвоения, условный и безусловный переход, пустой оператор. К производным не основным, относят составной оператор, оператор выбора, оператор цикла и оператор присоединения. Все операторы языка в тексте программы отделяются друг от друга явными или неявными разделителями, например: S1; S2;…; Sn. Операторы выполняются в порядке их следования в тексте программы. Лишь с помощью операторов перехода этот естественный порядок может быть нарушен. Большая часть операторов ведет обработку величин. Величины могут быть постояннымии переменными. Значения постоянных величин не изменяются в ходе выполнения программы. Величина характеризуется типом, именеми значением. Наиболее распространенные типы величин — числовые (целые и вещественные), символьные, логические. Тип величины определяется ее значением. Другая важная классификация величин — простыеи структурированные. Простая величина в каждый момент может иметь не более одного значения. Ей соответствует одна ячейка памяти (поскольку термин «ячейка» несколько устарел, часто говорят «машинное слово») или ее эквивалент во внешней памяти компьютера. Структурированная величина, имея одно имя, может иметь разом несколько значений. Эти значения представляют собой элементы (компоненты) величины. Самый широко известный пример — массив, у которого элементы различаются по индексам (номерам). Вопрос о структурировании величин — входных, выходных и промежуточных — для успеха решения прикладной задачи не менее важен, чем вопрос о правильном написании последовательности операторов. Важнейшие характеристики структурированной величины таковы: — упорядоченность (да или нет), — однородность (да или нет), — способ доступа к элементам, — фиксированность числа элементов. Так, массив является упорядоченной однородной структурой с прямым доступом к элементам и фиксированным их количеством. Всем программным объектам в языках даются индивидуальные имена. Идентификатор — имя программного объекта (от слова «идентифицировать»). Чаще всего идентификатором является любая конечная последовательность букв и цифр, начинающаяся с буквы. Как правило, в большинстве языков программирования в качестве идентификатора запрещается использовать служебные слова языка. Многим слово «идентификатор» не нравится, и в настоящее время чаще употребляют слово «имя». Программисты выбирают имена по своему усмотрению. Принципы выбора и назначения имен программным объектам естественны. Следует избегать мало выразительных обозначений, не гоняться за краткими именами. Имена должны быть понятны, наглядны, отображать суть обозначаемого объекта. Например, Summa, Time, I, j ,integral, initи т. д. Некоторым идентификаторам заранее предписан определенный смысл и их называют стандартными, например, sin — имя известной математической функции. Описанияили объявленияпрограммных объектов связаны с правилами обработки данных. Данные бывают разные, и необходимо для каждого из них определить свойства. Например, если в качестве данных выступает массив, то необходимо задать его размерность, границы индексов, тип элементов массива. Описательная часть языков программирования является необходимой как для системных программистов — разработчиков трансляторов, которые должны, в частности, проводить синтаксическую и семантическую диагностику программ, — так и для «прикладного» программиста, которому объявления программных объектов часто облегчают процесс разработки и отладки программ. В некоторых языках стандартные описания простых числовых и символьных данных опускают (описания по умолчанию), или в них задаются правила описания по имени объекта. Особый интерес представляют описания нестандартных структур данных, таких как запись, файл, объект, список, дерево и т. д. Наиболее употребимые обозначения типов данных, используемых в описаниях: Целый — Integer, Вещественный — Real, Логический — Boolean, Символьный — Char, Строковый — String, Массив — Array, Множество — Set Файл — File, Запись — Record, Объект — object. Переменныеиграют важнейшую роль в системах программирования. Понятие «переменная» в языках программирования отличается от общепринятого в математике. Переменная — это программный объект, способный принимать некоторое значение с помощью оператора присваивания. В ходе выполнения программы значения переменной могут неоднократно изменяться. Каждая переменная после ее описания отождествляется с некоторой ячейкой памяти, содержимое которой является ее значением. Семантический смысл переменной заключается в хранении некоторого значения, соответствующего ее типу (например, переменная целого типа может принимать значение произвольного целого числа), а также в выполнении с ней операций пересылки в нее и извлечения из нее этого значения. Функция — это программный объект, задающий вычислительную процедуру определенного значения, зависимого от некоторых аргументов. Вводится в языки программирования для задания программистом необходимых ему функциональных зависимостей. В каждом языке высокого уровня имеется в наличии библиотека стандартных функций: арифметических, логических, символьных, файловых и т. п. Функции — стандартные и задаваемые программистом — используются в программе в выражениях. Выражениястроятся из величин — постоянных и переменных, функций, скобок, знаков операций и т. д. Выражение имеет определенный тип, определяемый типом принимаемых в итоге его вычисления значений. Возможны выражения арифметические, принимающие числовые значения, логические, символьные, строковые и т. д. Выражение «2 + 3» является, несомненно, арифметическим, выражение «X + Y» может иметь разный смысл — в зависимости от того, что стоит за идентификаторами X и Y. Процедура — это программный объект, представляющий некоторый самостоятельный этап обработки данных. По сути, процедуры явились преемниками подпрограмм, которые были введены для облегчения разработки программ еще на ранних стадиях формирования алгоритмических языков. Процедура имеет входные и выходные параметры, называемые формальными. При использовании процедуры формальные параметры заменяются на фактические. Модуль(Unit) — это специальная программная единица, предназначенная для создания библиотек и разделения больших программ на логически связанные блоки. По сути, модуль — это набор констант, типов данных, переменных, процедур и функций. В состав модуля входят разделы: — Заголовок (необходим для ссылок на модуль); — Интерфейс (содержит объявления, включая процедуры и функции); — Реализация (содержит тела процедур и функций, перечисленных в интерфейсной части); — Инициализация (содержит операторы, необходимые для инициализации модуля. Каждый модуль компилируется отдельно, и каждый элемент модуля можно использовать в программе без дополнительного объявления). 6. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ Технология программирования является предметом специальной дисциплины. Однако с точки зрения основ программирования необходимо знать, что в процессе создания любой программы можно выделить несколько этапов. Они могут быть различными по затратам труда и времени на их выполнение для разных программ. Некоторые из них могут быть заданы неявно, но почти всегда приходится проходить нижеприведенные этапы при разработке программы. 1. Постановка задачи. На этом этапе задача, которую требуется решить путём составления программы для компьютера, формулируется на естественном языке. Постановка задачи осуществляется заказчиком, в качестве которого может выступать сторонняя организация, начальник программиста, преподаватель или сам программист. 2. Анализ и формализованное описание задачи. Этот этап включает определение входных и выходных данных и выявление возможных ограничений на их значения. Он заканчивается формализованным описанием задачи, которое обычно содержит её математическую формулировку. При моделировании каких-либо процессов или явлений на этом этапе происходит разработка математической модели этого процесса или явления, а затем определяются факторы, играющие решающую роль, и отбрасываются факторы, влиянием которых можно пренебречь. 3. Выбор или разработка алгоритма решения задачи Этот этап является особенно важным, т.к. тщательно проработанный алгоритм является необходимым условием эффективной работы над программой. 4. Проектирование структуры программы Здесь составляется блок-схема алгоритма, определяются те части алгоритма, которые целесообразно оформить в виде подпрограмм. Также определяется способ хранения информации: набор простых переменных, массив и др. 5. Кодирование. На этом этапе осуществляется запись алгоритма на языке программирования. В том случае, если алгоритм, структура программы и структура данных тщательно продуманы и корректно записаны, то затраты времени на кодирование уменьшаются, а вероятность ошибок на этом этапе снижается. 6. Отладка и тестирование программы. Отладка заключается в устранении ошибок программирования и кодирования. Тестирование (верификация) — это доказательство того, что программа работает правильно. Для этого разрабатывается система тестов, которые могут представлять собой специально подобранные наборы параметров, для которых задача может быть решена точно. 7. Интерпретация результатов расчета. После получения результата его необходимо проанализировать. Например, при моделировании какого–либо природного явления, надо сравнить результаты, полученные с помощью программы, с результатами наблюдений. Процесс такого анализа называется интерпретацией результатов расчета. Если результат будет отличаться от требуемого, то необходимо вернуться к этапу 2 и постараться скорректировать формализованное описание задачи, сделав его более точным и реалистичным. 8. Передача программы заказчику. Очень ответственный этап, так как программа считается готовой, если программист смог доказать заказчику, что разработанная программа позволяет решать поставленную задачу. В научных исследованиях первостепенное значение имеет не сама программа, а результаты её работы, результаты моделирования. В этом том случае результаты публикуются в научных журналах. 9. Сопровождение программы На заключительном этапе программист консультирует заказчика по работе программы, обучает пользователей работе с программой, а также устраняет замеченные в процессе эксплуатации программы недостатки (а возможно, и ошибки). Особое значение этот этап имеет для больших и сложных программ. 7. ПРОГРАММИРОВАНИЕ ОСНОВНЫХ АЛГОРИТМИЧЕСКИХ КОНСТРУКЦИЙ Для иллюстрации теоретического материала приведем несколько конкретных примеров программирования основных алгоритмических конструкций на языке Паскаль, который широко распространен, относительно прост в изучении и, как правило, является первым изучаемым языком программирования. Также следует отметить, что Паскаль приучает к хорошему стилю и воспитывает дисциплину программирования лучше, чем другие языки программирования, такие, как, например, БЕЙСИК. Пример 1. Вычислить сумму трех целых чисел А, В и С. Этот пример демонстрирует использование линейного алгоритма для решения простой задачи. При кодировании данного алгоритма на языке Паскаль ключевыми операторами являются операторы ввода (read) и вывода (write), а также операция присваивания ( := ), используемая во всех вычислениях. Для хранения и ввода слагаемых используются переменные целого типа a, b и c. Для хранения и вывода суммы используется переменная d.
Пример 2. Найти наибольшее из трех чисел А, В и С, не равных друг другу. В этом примере продемонстрировано использование операторов Паcкаля if...then... и if...then...else для программирования алгоритмических конструкций неполного и полного ветвления соответственно. Для хранения и ввода сравниваемых чисел используются переменные вещественного типа a, b и c. Для хранения и вывода наибольшего числа используется переменная d.
Пример 3. Вычислить сумму натурального ряда чисел от 1 до N. Данный пример иллюстрирует реализацию циклических алгоритмов. Задача будет решена тремя способами. В каждом из них будут использованы различные операторы, реализующие основные алгоритмические конструкции. В первом случае будет использован оператор repeat (цикл с постусловием), во втором — оператор while (цикл с предусловием), в третьем — оператор for (цикл со счетчиком). Очевидно, что все три результата будут одинаковыми. Способ 1. Цикл с постусловием
Способ 2. Цикл с предусловием.
Способ 3. Цикл со счетчиком
В большинстве задач вычислительный процесс, реализующий алгоритм, является комбинированным, т.е. он содержит линейные участки, ветвления и циклы одновременно. Знание основных алгоритмических конструкций и особенности их реализации на конкретном языке программирования значительно упрощает процесс написания программ и делает его более качественным, эффективным и продуктивным. БИБЛИОГРАФИЧЕСКИЙ СПИСОК Немнюгин, С.А. TurboPascal. Программирование на языке высокого уровня / С.А. Немнюгин. — СПб.: Питер, 2012. — 544 с. Немнюгин, С.А. Изучаем TurboPascal / С. Немнюгин, Л. Перколаб. — СПб.: Питер, 2012. — 309 с. Культин, Н.Б. Программирование в TurboPascal 7.0 и Delphi / Н.Б. Культин. — СПб.: БХВ–Петербург, 2012. — 390 с. Культин, Н.Б. TurboPascal в задачах и примерах / Н.Б. Культин. — СПб.: БХВ–Петербург, 2012. — 256 с. Немнюгин, С.А. TurboPascal. Практикум / С.А. Немнюгин. — СПб.: Питер, 2012. — 267 с. Юркин, А.Г. Задачник по программированию / А.Г. Юркин. — СПб.: Питер, 2014. — 192 с. ОГЛАВЛЕНИЕ |