
- •1.1. Формальная постановка задачи
- •1.2. Выбор метода решения
- •1.3. Внешняя спецификация программы
- •1.4. Разработка алгоритма
- •1.5. Кодирование алгоритма на языке программирования
- •1.6. Испытания программы на тестах
- •Вопросы для самоконтроля
- •2. Язык для записи алгоритмов
- •2.1. Базовые типы величин
- •2.2. Объявление величин в алгоритме
- •2.3. Базовые операции
- •2.4. Управляющие структуры
- •2.5. Структура алгоритма
- •Вопросы для самоконтроля
Содержание
Содержание 3
1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ 5
1.1. ФОРМАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ 5
1.2. ВЫБОР МЕТОДА РЕШЕНИЯ 8
1.3. ВНЕШНЯЯ СПЕЦИФИКАЦИЯ ПРОГРАММЫ 10
1.4. РАЗРАБОТКА АЛГОРИТМА 13
1.5. КОДИРОВАНИЕ АЛГОРИТМА НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ 15
1.6. ИСПЫТАНИЯ ПРОГРАММЫ НА ТЕСТАХ 16
ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ 16
2. ЯЗЫК ДЛЯ ЗАПИСИ АЛГОРИТМОВ 18
2.1. БАЗОВЫЕ ТИПЫ ВЕЛИЧИН 19
2.2. ОБЪЯВЛЕНИЕ ВЕЛИЧИН В АЛГОРИТМЕ 20
2.3. БАЗОВЫЕ ОПЕРАЦИИ 21
2.4. УПРАВЛЯЮЩИЕ СТРУКТУРЫ 24
2.5. СТРУКТУРА АЛГОРИТМА 28
ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ 30
1. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ
Процесс разработки программы можно разбить на несколько этапов, последовательности выполнения которых рекомендуется строго придерживаться.
Перечислим их:
Постановка задачи
Выбор метода решения
Разработка внешней спецификации программы (или ее сценария)
Разработка алгоритма
Кодирование алгоритма на языке программирования
Испытания программы на тестах и ее отладка.
Результаты должны быть документированы. Минимальная документация на программу должна включать:
Внешнюю спецификацию или сценарий
Систему тестов
Комментарии в тексте программы на языке программирования.
Рассмотрим содержание отдельных этапов.
1.1. Формальная постановка задачи
Любая задача имеет целью получить некоторые результаты в определенных условиях. Для того чтобы решить задачу, необходимо сформулировать ее. Решение задачи всегда оценивается по конечному результату. И если у нас нет четкого понимания, какими должны быть конечные результаты, то можно получить совсем не то, что предполагалось. Отсюда, умение четко поставить задачу служит залогом успеха.
Постановка задачи, в первую очередь должна строго однозначно указать, «что дано?» и «что требуется получить»?
Постановка задачи может быть конкретной или обобщенной. В конкретной задаче исходные условия определяются однозначно, и ее решение состоит в получении конкретных результатов, отвечающих постановке.
Проиллюстрируем сказанное на примере.
Задача: Найти вещественные корни уравнения х2-1001*x+1000=0.
В этой задаче дано конкретное уравнение, и ее решение имеет целью найти пару вещественных чисел, являющихся корнями этого уравнения.
В обобщенной постановке допускается определенная вариация исходных условий, а результаты решений, вообще говоря, зависят от этих условий. Поэтому в обобщенной постановке задачи дополнительно определяется, какими должны быть допустимые входные условия и какова зависимость (связь) требуемых результатов от исходных условий.
Та же самая математическая задача в обобщенном виде может быть записана в следующей форме:
Задача:
найти вещественные корни квадратного
уравнения
a*x2+b*x+c=0
Дано:
a, b, c - коэффициенты уравнения [вещественные
числа].
Требуется:
x1, x2 - корни уравнения [вещественные
числа].
Связь:
a*xi2+b*xi+c=0,
(i=1,2) - тождество.
При:
а ≠ 0.
Задача:
<содержательная-формулировка-задачи>
Дано:
<перечисление-исходных-объектов>
Треб.:
<перечисление-требуемых-объектов>
Связь:
<связи-между-требуемым-и-исходным>
При:
<условия-допустимости-исходных-данных>
М
Угловыми скобками в этой форме выделены переменные части постановки, содержание которых зависит от конкретной проблемы, подлежащей решению.
Прокомментируем содержание составных частей формальной постановки задачи:
<Перечисление-исходных-объектов>- это список исходных данных с разъяснением их содержательной роли и указанием типов принимаемых значений.
Аналогично оформляется <Перечисление-требуемых-объектов>.
Эти части формальной постановки выполняют также роль терминологических словарей.
В разделе <Связи-между-требуемым-и-исходным>фиксируется формальное описание зависимостей между требуемыми результатами и исходными данными. Эти описания должны быть строгими в такой мере, чтобы по любым конкретным исходным данным и конкретным результатам решения задачи можно было бы однозначно определить, являются ли эти результаты правильными (иначе, адекватны ли результаты исходным данным). Для математических задач формальное описание зависимостей представляется в виде систем уравнений, связывающих исходные данные и результаты. Для ряда задач формальное описание связи выразить математически не удается, и в этом случае может использоваться словесное описание.
В разделе <Условия-допустимости-исходных-данных>описываются ограничения на область допустимых значений для исходных данных. Эти ограничения определяют возможность получения решений поставленной задачи.
Вообще, формальная постановка задачи необходима для того, чтобы получить возможность объективно проверить правильности разработанной программы:
Проверка правильности программы должна проводиться только относительно допустимых исходных данных. Программа считается правильной, если при всех допустимых исходных значениях она дает решения. И, с другой стороны, программа неправильная, если существуют ситуации, при которых ее результаты не соответствуют исходным значениям. Следовательно, условия допустимости исходных данных должны быть строго и полно сформулированы в постановке задачи.
Рассмотрим еще один пример - формальную постановку элементарной физической задачи.
Задача: Определить мощность, потребляемую в приведенной ниже электрической цепи (Примечание: любое из сопротивлений может быть равным нулю).
r1
U r2 r3
Дано:
r1,
r2, r3
- сопротивления
цепи,
u - входное напряжение.
Треб.: w - потребляемая мощность.
Связь:
w = u*i1 - определение мощности,
i1 = i2 + i3 - уравнение для токов,
u = i1*r1 - уравнение первого контура
(источник питания, r1 и r2),
0 = i2*r2 - i3*r3 - уравнение второго контура
(замкнутый контур r2 и r3),
Здесь
i1,i2,i3 - величины токов, протекающих через r1, r2 и r3
соответственно.
При:
(r1,r2,r3 >= 0) и (r1+r2 ≠ 0) и (r1+r3 ≠ 0).