Алгоритм – это набор инструкций, описывающих порядок действий исполнителя для достижения некоторого результата.
Алгоритмизация – это описание очередности выполнения различных операций, необходимых для решения какой-либо задачи, в форме алгоритма. То есть, алгоритмизация – это разработка алгоритма.
Термин “алгоритм” происходит от имени узбекского ученого IX века аль-Хорезми́, который изложил правила арифметических действий над числами в десятичной системе счисления. Эти правила и называли алгоритмами.
Таким образом, правила сложения, вычитания, деления, умножения чисел, правила преобразования алгебраических выражений, правила построения геометрических фигур, правила правописания слов и предложений, различные правила и инструкции, представляющие собой подробные указания, годные в однотипных ситуациях – всё это алгоритмы.
Пример (линейного) алгоритма:
Алгоритмизация вычислительного процесса включает следующие действия:
- Последовательная декомпозиция задачи, выделение автономных этапов вычислительного процесса и разделение каждого этапа на отдельные шаги.
- Формализация задачи, перевод задачи на язык математических формул, уравнений, отношений.
- Построение алгоритма, определение общего порядка выполнения этапов и/или шагов.
- Проверка правильности алгоритма.
Далее следует программирование на определенном языке в определенной системе программирования.
Затем перед использованием программы выполняется отладка и тестирование.
Свойства алгоритма:
- Дискретность (прерывность, раздельность) – алгоритм должен состоять из последовательности законченных действий – шагов. Переход к следующему шагу возможен лишь после завершения предыдущего.
- Определенность – каждое правило алгоритма должно быть четким, однозначным.
- Массовость – возможность решения по одному алгоритму множества однотипных задач.
- Результативность – алгоритм должен обеспечивать возможность получения результата после конечного числа шагов.
Способы описания алгоритмов
1. Словесный – это последовательное описание основных этапов обработки данных в произвольном изложении на естественном языке.
Пример словесного способа записи алгоритма нахождения НОД двух чисел:
- Если числа равны, то взять любое из них в качестве ответа, в противном случае – продолжить выполнение алгоритма;
- Определить большее из чисел;
- Заменить большее число разностью большего и меньшего чисел;
- Повторить алгоритм сначала.
2. Графический – это метод блок-схем.
При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.
Для начертания схем алгоритмов используется набор символов, определяемых государственным стандартом:
Блок | Описание |
---|---|
Начало и конец алгоритма (для функций "Вход", "Выход") | |
Блок обработки. Внутри блока записываются формулы, обозначения и функции | |
Блок условия. Внутри блока записываются условия выбора направления действия алгоритма | |
Блок предопределённого процесса (функция / подпрограмма) | |
Блок ввода информации | |
Блок цикла с известным количеством повторений | |
Блок вывода информации на печатающее устройство | |
Соединительный блок |
3. Псевдокод – представляет собой систему обозначений и правил, предназначенную для единообразной записи алгоритмов.
Псевдокод занимает промежуточное место между естественным и формальным языками. Примером псевдокода может являться алгоритмический язык.
Пример:
алг Сумма квадратов (арг цел n, рез цел S)
дано | n > 0
надо | S = 1*1 + 2*2 + 3*3 + ... + n*n
нач
цел i
ввод n;
S:=0
нц для i от 1 до n
S:=S+i*i
кц
вывод "S = ", S
кон
4. Программный способ представления алгоритмов – осуществляется с помощью языков программирования.
Пример:
#include
using namespace std;
int NOD(int x, int y)
{
if (x != 0)
return NOD(y%x,x);
else
return y;
}
int NOK(int x, int y)
{
return (x / NOD(x, y)) * y;
}
int main ()
{
setlocale (LC_ALL, "rus");
int x, y;
cin >> x >> y;
cout << "НОД этих чисел = " << NOD(x, y) << endl;
cout << "НОК этих чисел = " << NOK(x, y) << endl;
return 0;
}
Данные и величины
Величины делятся на константы и переменные.
У каждой переменной или константы есть три основных свойства:
- Имя (например, константа может иметь имя X – икс);
- Значение (например, константа X может иметь значение 1);
- Тип (например, константа X, равная единице, имеет целочисленный тип данных).
Каждая величина занимает определенное место в памяти – ячейку, а значение этой величины определяется двоичным кодом в этой ячейке.
Различные величины, с которыми работает компьютер, принято называть данными. По отношению к программе данные делятся на исходные данные, промежуточные данные и результаты.
Например, при решении квадратного уравнения 𝑎𝑥2 + 𝑏𝑥 + 𝑐 = 0
- исходными данными являются коэффициенты a, b, c
- промежуточными данными является дискриминант D
- результатами являются корни x1 и x2.