Алгоритмом называется последовательность инструкций, выполнение которой приводит к решению поставленной задачи.
Основные свойства алгоритма:
1. Результативность: В результате работы алгоритма будет получен и выведен результат.
2. Дискретность: Ход решения разбит на элементарные шаги - команды или инструкции, понятные исполнителю.
3. Конечность: решение задачи будет получено за конечное число шагов.
4. Массовость: Алгоритм решает не одну единственную задачу, а некоторый класс задач с различными исходными данными и настройками.
5. Интерактивность: Исходные данные для работы алгоритма задаются человеком в ходе его выполнения или вводятся из датчиков или других внешних устройств.
6. Однозначность: Для одних и тех же исходных данных всегда будет получен один и тот же результат.
7. Корректность: Алгоритм должен для любых допустимых исходных данных давать правильный результат. При вводе недопустимых исходных данных требуется сообщить об этом.
8. Эффективность: При выполнении алгоритма должны использоваться ограниченные ресурсы компьютера (время, объём оперативной памяти и т.д.)
Алгоритм может быть записан на естественном языке или в виде схемы (если его исполнитель – человек) или на одном из языков программирования (если исполнитель – компьютер).
Алгоритм на естественном языке компьютеру анализировать очень сложно[1], т. к. они являются недостаточно строгими. Одно и то же слово может обозначать разные понятия в зависимости от контекста. Поэтому для создания программ (инструкций компьютеру) используются специально разработанные языки программирования (или алгоритмические языки).
Языки низкого уровня (ЯНУ) – машинный язык, ассемблер, - предназначены для обращения к процессору и др. устройствам. Для человека неудобны. Переносимости на другие аппаратные платформы нет. По быстродействию и экономности использования ресурсов ЯНУ являются наиболее эффективными.
Языки высокого уровня (ЯВУ) – ближе к человеку. Используют термины решаемых задач и не требуют знания устройства компьютера. Одна команда ЯВУ выполняет множество команд ЯНУ. Есть переносимость на другие аппаратные и программные платформы. К ЯВУ относятся: Pascal, Delphi, Basic, Fortran, Prolog, Lisp, Java…
Языки среднего уровня (ЯСУ)– сочетают возможности ЯВУ и ЯНУ. Более эффективные, чем ЯВУ, для программиста проще, чем ЯНУ, но сложнее, чем ЯВУ. К ЯСУ относятся: C, C++