Что такое алгоритм? Назовите основные способы описания алгоритмов.

Алгоритм — это точное конечное описание действий, выполнение которых приводит к решению задачи для допустимых входных данных.

Алгоритм можно рассматривать как инструкцию для исполнителя: человека, компьютера, робота или другой системы.

Основные свойства алгоритма

Дискретность

Алгоритм состоит из отдельных шагов. Каждый шаг выполняется в определенный момент.

Определенность

Каждая команда должна быть понятной и однозначной. Исполнитель не должен угадывать, что делать.

Конечность

Алгоритм должен завершаться за конечное число шагов.

Результативность

После завершения алгоритм должен дать результат: число, текст, файл, решение, состояние системы или ответ да/нет.

Массовость

Алгоритм должен решать не одну частную задачу, а класс однотипных задач.

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

Способы описания алгоритмов

1. Словесное описание

Алгоритм записывается обычным языком.

Пример:

1. Ввести два числа.
2. Сложить их.
3. Вывести результат.

Плюс — понятно человеку. Минус — возможна неоднозначность.

2. Блок-схема

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

Блок-схема хорошо показывает структуру ветвлений и циклов.

3. Псевдокод

Псевдокод похож на программу, но не привязан строго к синтаксису конкретного языка.

ввести A, B
если A > B
  вывести A
иначе
  вывести B

Он удобен для проектирования алгоритмов.

4. Программный код

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

function max(a, b) {
  return a > b ? a : b;
}
function max(a: number, b: number): number {
  return a > b ? a : b;
}
func max(a int, b int) int {
  if a > b {
    return a
  }

  return b
}
public class Example {
  static int max(int a, int b) {
    return a > b ? a : b;
  }
}
def max(a, b):
  return a if a > b else b

Этот способ точен, но требует знания синтаксиса языка.

5. Таблица решений

Таблица используется, если результат зависит от комбинации условий.

Она удобна для описания правил, например проверки доступа или выбора тарифа.

6. Формулы

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

Базовые алгоритмические конструкции

Большинство алгоритмов строится из трех конструкций:

Вывод

алгоритм — точная последовательность действий для решения задачи. Его можно описывать словесно, блок-схемой, псевдокодом, программным кодом, таблицами решений и формулами.

Источники

  • Семакин И.Г. Основы программирования и баз данных. Учебник. - М.: Академия, 2014. - 224 с.
  • Симонова Е.В. Структуры данных в C#. Линейные и нелинейные динамические структуры. - Лань, 2018. - 152 с.
  • Бертран Мейер. Почувствуй класс. Учимся программировать хорошо с объектами и контрактами. - М.: Национальный Открытый Университет "ИНТУИТ": БИНОМ. Лаборатория знаний, 2011. - 775 с.
  • Мэтт Вайсфельд. Объектно-ориентированное мышление. - СПб.: Питер, 2014. - 304 с.
  • Ривест Р., Штайн К., Лейзерсон Ч., Кормен Т. Алгоритмы: построение и анализ. - М.: Вильямс, 2007. - 1296 с.
  • Стивенс Род. Алгоритмы. Теория и практическое применение. - М.: Эксмо, 2017. - 544 с.
  • Рублев В.С. Основы теории алгоритмов. - 2-е издание, исправленное. - М.: Научный мир, 2008. - 128 с.
  • Гольдберг Г.Л. Основы алгоритмизации и программирования. - М.: Академия, 2012. - 384 с.
  • Лаврищева И.В. Технология программирования. - М.: Горячая линия - Телеком, 2011. - 400 с.
  • Сергеев И.С., Сухоруков А.И., Шестаков А.А. Программирование: учебник для вузов. - М.: БИНОМ. Лаборатория знаний, 2013. - 512 с.