Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пол курс информатики_4.doc
Скачиваний:
19
Добавлен:
26.11.2019
Размер:
4.36 Mб
Скачать

3.3. Определение алгоритма и основные требования

Мы подошли к более точному определению понятия «алгоритм обработки данных». Это набор правил или действий, направленных на решение задачи преобразования данных. Алгоритм должен отвечать определенным требованиям, прежде всего, конечность процесса преобразования исходных данных в выходные (за конечное число шагов). Кроме того, алгоритм должен характеризоваться массивностью, определенностью, однозначностью.

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

Свойство определенности предполагает высокие требования к точности формулировок во избежание различных толкований отдельных действий и алгоритма в целом. Например, чтобы обеспечить определенность исходного алгоритма в примере, необходимо выбрать способ реализации третьего пункта «задание значений …», объявить переменную n цикла (чтобы ввод не продолжался бесконечно), необходимо отразить, что каждой станции соответствует только одно значение осадков.

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

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

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

n – целое, 0<n<&

xi – действительное число с точностью до m знаков после запятой,

х>0, 0 < i < n

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

Первый вариант – число станций n известно заранее и задано.

  1. процедура А: начало

  2. присвоение начальных значений: n=… , REZ=0

  3. цикл ввода n значений: начало

    1. ввод значений в переменную х

    2. если х > 0, то округлить х с точностью до m; REZ=REZ+x

  4. конец цикла

  5. конец процедуры А

Второй вариант – число станций n неизвестно и ввод продолжается до тех пор, пока не будет введено «пустое значение» (пробел).

  1. процедура А: начало

  2. присвоение начальных значений: i=1, REZ=0

  3. цикл ввода: начало

    1. ввод значения в переменную х

    2. если х=пусто, то выход из цикла

    3. если х>0, то округлить х с точностью до m; REZ=REZ+x

    4. i=i+1

    5. если i=1000, то вывод сообщения о превышении ограничения на число станций и выход из программы

  1. конец цикла ввода

  2. конец процедуры А

Область допустимых значений исходных данных обеспечивается и контролируется в пунктах 3.3 и 3.5. На первый взгляд пункт 3.3 может показаться лишним. Он необходим для обеспечения конечности процесса обработки данных, т.к. позволяет принять решение, если результат не может быть получен за конечное число шагов.

Чтобы подчеркнуть роль требований конечности алгоритма и определенности ОДЗ, изменим условия задачи: допустим, что данные о среднем слое атмосферных осадков по всем метеостанциям региона где-то накапливаются и хранятся. Периодически вводятся новые данные, но не по всем, а только по некоторым станциям. Соответственно, следует определить средний слой атмосферных осадков по поступившим данным за текущий период и по накопленным и скорректированным данным на текущую дату. Такая постановка более соответствует реальным условиям, когда информация поступает на обработку нерегулярно.

  1. начало

  2. объявление переменных:

n – число станций в регионе

Y – величина осадков на станциях за текущий период

X[n] – массив осадков на станциях за предыдущий период

REZ1 – результат по поступившим данным за текущий период

REZ2 – результат по накопленным и скорректированным данным на текущий период

  1. выполнить процедуру ввода начальных значений в массив x[n]

  2. если n=0 и массив пуст, то выход из программы

  3. присвоение начальных значений: i=1, REZ1=0, REZ2=0

  4. цикл ввода значений осадков за текущий период: начало

    1. ввод значения в переменную Y

    1. если Y=пусто, то выход из цикла

    2. если Y <>0, X[i] = Y; REZ1=REZ1+Y

    3. i=i+1

    4. если i>n, то вывод сообщения об ошибке (число введенных значений превышает число станций) и выход из программы

  1. конец цикла ввода

  2. если REZ>0, то REZ1=REZ1 / i

  3. цикл суммирования осадков на текущую дату, i=1,n: начало

    1. REZ2=REZ2 + X[i]

    2. если X[i] <> 0,то i=i+1

  4. конец цикла

  5. REZ2=REZ2 / i

  6. вывод результатов

  7. конец

ОДЗ обеспечивается и контролируется в пунктах 4; 5; 6.3; 6.5; 9.1. Пункт 6.5, в частности, гарантирует конечность процесса обработки данных.

Описанные пять требований – массовость, определенность, однозначность, конечность, контроль ОДЗ – являются основными при оценке алгоритма. Не менее важно, хоть и очевидно, требование «читабельности». Алгоритм должен содержать точное описание переменных и необходимые пояснения ко всем действиям. Из описания переменной должно явствовать ее назначение, не следует использовать одну переменную в разных целях. Действия должны быть также четко сформулированы. Если действие не является элементарным, рекомендуется представлять его в виде процедуры. Как же выделяются процедуры?