Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Лекций «программирование На Языке Высокого Уровня Си» По Информатике (Попов Д. И.).pdf
Скачиваний:
179
Добавлен:
07.10.2014
Размер:
1.31 Mб
Скачать

построение математической модели решения задачи – это самостоятельная научная проблема.

Любую математическую задачу можно решить двумя способами: аналитически (точно); численно (приближённо). При решении аналитическим методом исходные зависимости преобразуются так, чтобы получить математические зависимости (формулы) для точного определения результата решения. По полученным формулам можно с помощью ЭВМ получать почти точное решение. Пример такой задачи: решение квадратного уравнения. Однако большинство реальных задач нельзя решить аналитическим методом. В этом случае применяют численные методы, которые позволяют получить приближённое решение с помощью простых вычислительных действий. Пример: нахождение корня уравнения методом половинного деления (метод дихотомии). Численные методы позволяют получить приближённые решения большинства реальных задач. Разработкой численных методов занимается специальный раздел математики – вычислительная математика.

Разработка алгоритма

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

1.Завершаемость (конечность) – при корректно заданных исходных данных алгоритм должен приводить к получению нужного результата за конечное число шагов.

9

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

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

4.Эффективность – алгоритм должен быть эффективен по времени выполнения и по емкости требуемой памяти.

5.Массовость – алгоритм должен быть применим к любым допустимым наборам исходных данных.

6.Вход – алгоритм всегда имеет некоторое (иногда равное нулю) количество входных данных, то есть величин, передаваемых ему до начала работы.

7.Выход – алгоритм всегда обязан иметь одну или несколько выходных величин.

Различают следующие простейшие виды алгоритмов:

1.Линейный – команды алгоритма выполняются шаг за шагом точно в той последовательности, в которой они представлены в алгоритме.

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

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

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

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

10

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

Пример 1. Приведем словесное описание алгоритма, который вычисляет значение функции f (x) =sin x2 x на интервале [a,b] с шагом h > 0. Такая задача называется задачей табулирования функции на указанном интервале с определенным шагом.

1.Начало.

2.Задать значения а, b, h.

3.Начиная со значения x, равного a, делать следующее.

4.Вычислить f (a) =sin a2 a .

5.Вывести значения а и f (a) .

6.Увеличить значение x на шаг и вычислить f (a + h) = sin( a + h)2 −(a + h) .

7.Вывести значения а+h и f (a +h) .

8.Увеличить значение x на шаг и вычислить f (a + 2h) = sin( a + 2h)2 −(a + 2h) .

9.Вывести значения а+2h и f (a +2h) .

10.И так далее продолжать вычислять f, увеличивая x, до тех пор, пока х

все еще меньше или равен b, т.е. последнее вычисление такое

f(b) =sin b2 b .

11.Вывести значения b и f (b) . 12.Конец.

11

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

Пример 2. Построим блок-схему алгоритма для решения задачи табулирования функции (рис.1).

Начало

a, b, h

 

ввести a, b, h

 

 

 

x a

 

 

 

 

 

 

 

 

 

вычислить f(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

х, f

 

 

 

 

 

 

 

 

 

 

 

 

вывести х и f(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x x + h

 

s i n ( −*x ) x

x

нет

x > b f

да

Конец

Рис.1. Блок-схема алгоритма для решения задачи табулирования функции

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

12