- •Отображает данные, вводимые в ручную, во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штрих кодом и т.д.).
- •Символ отображает хранимые данные в виде, пригодном для обработки. Носитель данных не определен. В схемах алгоритмов он предназначен для обозначения ввода-вывода данных в случае использования запоминающего устройства, управляемого процесса.
- •Тема 1. Основные этапы решения задач на ЭВМ
- •Постановка задачи разработки программного обеспечения
- •Анализ формальной постановки задачи
- •Выбор или разработка математической модели и метода решения
- •Разработка алгоритма
- •Базовые структуры алгоритма
- •Тема 2. Жизненный цикл программы. Критерии качества программы.
- •Техническое задание и спецификация программы
- •Разработка проекта программной системы
- •Программирование (кодирование) или программная реализация алгоритмов
- •Тестирование и отладка
- •Эксплуатация и сопровождение
- •Критерии качества программного обеспечения
- •Тема 3. Схемы алгоритмов, данных, программ
- •Символы данных
- •Символы процесса
- •Символы линий
- •Специальные символы
- •Правила применения символов в схемах
- •Правила выполнения соединений
- •Специальные условные обозначения
- •Тема 4. Язык программирования высокого уровня Си
- •Общие сведения о языке Си
- •Алфавит языка Си
- •Грамматика для описания языка, синтаксические диаграммы
- •Структура программы на языке Си
- •Имена объектов в программе
- •Выражения, операции и приоритеты
- •Тема 5. Стандартные типы данных
- •Тема 6. Составные типы данных
- •Данные регулярного типа (массивы)
- •Строки
- •Данные комбинированного типа (структуры)
- •Перечисления
- •Объединения
- •Указатели
- •Тема 7. Представление основных управляющих структур программирования
- •Оператор присваивания
- •Составной оператор
- •Оператор перехода Goto
- •Условный оператор If
- •Оператор выбора switch
- •Операторы цикла while, do – while, for
- •Операторы прерывания циклов
- •Форматированный ввод данных
- •Форматированный вывод данных
- •Преобразование типов
- •Инициализация данных
- •Тема 8. Функции
- •Определение функций в языке Си
- •Вызов функций в языке Си
- •Рекурсивные функции
- •Тема 9. Файлы
- •Тема 10. Приемы программирования. Примеры алгоритмов
- •Алгоритмы сортировки
- •Алгоритмы поиска
- •Динамические структуры данных
- •Линейные списки
- •Стек, очередь, дек
- •Деревья
- •Приложение 1. Стандартные библиотеки языка Си
- •Приложение 2. Примеры реализации алгоритмов
- •Не рекурсивный алгоритм решения задачи Ханойская башня.
- •Рекурсивный алгоритм решения задачи Ханойская башня.
- •Приложение 3. Лабораторные работы
- •Лабораторная работа №1
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №10
- •Лабораторная работа №11
- •Лабораторная работа №12
- •Список литературы
построение математической модели решения задачи – это самостоятельная научная проблема.
Любую математическую задачу можно решить двумя способами: аналитически (точно); численно (приближённо). При решении аналитическим методом исходные зависимости преобразуются так, чтобы получить математические зависимости (формулы) для точного определения результата решения. По полученным формулам можно с помощью ЭВМ получать почти точное решение. Пример такой задачи: решение квадратного уравнения. Однако большинство реальных задач нельзя решить аналитическим методом. В этом случае применяют численные методы, которые позволяют получить приближённое решение с помощью простых вычислительных действий. Пример: нахождение корня уравнения методом половинного деления (метод дихотомии). Численные методы позволяют получить приближённые решения большинства реальных задач. Разработкой численных методов занимается специальный раздел математики – вычислительная математика.
Разработка алгоритма
Алгоритм – это точный набор инструкций (команд), описывающих последовательность (порядок) действий некоторого исполнителя для достижения результата, решения некоторой задачи за конечное время. Строго говоря, понятие алгоритма необязательно относится к компьютерным программам, так, например, чётко описанный рецепт приготовления блюда также является алгоритмом, в таком случае исполнителем является человек. Однако далее в качестве исполнителя будем рассматривать ЭВМ или компьютер. В определении алгоритма под командой понимается элементарное действие, которое может выполнить исполнитель (ЭВМ), под системой команд – совокупность команд, которую может выполнить конкретный исполнитель (ЭВМ). Алгоритм должен обладать следующими важными свойствами:
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
