Этапы решения задачи

В традиционных курсах программирования обычно выделяют следующие этапы решения задачи на ЭВМ:

• постановка задачи;

• разработка алгоритма;

• написание по алгоритму машинной программы;

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

Рассмотрим эти этапы подробнее.

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

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

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

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

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

- достаточное количество исходных данных;

- соответствие алгоритма ситуации.

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

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

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

1. Положить покупку на весы.

2. Считать с индикатора весов вес покупки в тех единицах, стоимость которых известна.

3. Получить стоимость покупки, умножив ее вес на стоимость единицы веса.

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

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

- Записывать каждое предложение на отдельной строке.

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: