Что такое алгоритм

В этом уроке мы узнаем, что такое алгоритм и рассмотрим примеры алгоритмов.

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

Принципы хорошего алгоритма

  1. Входные и выходные данные должны быть точно определены.
  2. Каждый шаг в алгоритме должен быть четким и недвусмысленным.
  3. Выбранный алгоритм должен быть наиболее эффективным для решения поставленной задачи.
  4. Алгоритм должен быть написан таким образом, чтобы его можно было реализовать на разных языках программирования. Реализация алгоритма на определенном языке программирования не то же самое, что алгоритм.

Примеры алгоритмов

Сложить 2 числа

Шаг 1: Старт
Шаг 2: Объявить переменные num1, num2 и sum.
Шаг 3: Прочитать значения num1 и num2.
Шаг 4: Сложить значения num1 и num2 и сохранить результат в sum.
           sum←num1+num2 
Шаг 5: Вывести sum
Шаг 6: Стоп

Найти наибольшее среди 3-х чисел

Шаг 1: Старт
Шаг 2: Объявить переменные a, b и c
Шаг 3: Прочитать переменные a, b и c
Шаг 4: Если a > b
               Если a > c
                    Вывести а —­ наибольшее число
               Иначе
                    Вывести с — наибольшее число
           Иначе
               Если b > c
                    Вывести b —  наибольшее число
               Иначе
                    Вывести с — наибольшее число
Шаг 5: Стоп

Найти корни квадратного уравнения

Шаг 1: Старт
Шаг 2: Объявить переменные a, b, c, D, x1, x2, rp и ip;
Шаг 3: Вычислить дискриминант
             D ← b2-4ac
Шаг 4: Если D ≥ 0
             r1 ← (-b+√D)/2a
             r2 ← (-b-√D)/2a 
             Вывести корни r1 и r2.
       Иначе     
             Вычислить действительную и мнимую части
             rp ← -b/2a
             ip ← √(-D)/2a
             Вывести корни rp+j(ip) и rp-j(ip)
Шаг 5: Стоп        

Найти факториал числа n

Шаг 1: Старт
Шаг 2: Объявить переменные n, factorial и i.
Шаг 3: Задать начальные значения переменным
               factorial ← 1
               i ← 1
Шаг 4: Прочитать значение n
Шаг 5: Повторять шаги до тех пор, пока не выполнится i > n
     5.1: factorial ← factorial*i

    5.2: i ← i+1
Шаг 6: Вывести значение factorial
Шаг 7: Стоп

А теперь оживим этот алгоритм. Ниже — та же логика в виде интерактивной блок-схемы: запустите её, введите число и пошагово проследите, как переменные factorial и i меняются на каждом витке цикла.

n = int(input())
factorial = 1
i = 1
while i <= n:
    factorial = factorial * i
    i = i + 1
print(factorial)

Обратите внимание: блок-схема повторяет шаги 1–7 из текстового описания выше. Одно и то же решение можно записать словами, схемой или кодом — сам алгоритм от этого не меняется.

Проверить, является ли число простым

Шаг 1: Старт
Шаг 2: Объявить переменные n, i, flag.
Шаг 3: Задать начальные значения переменным
          flag ← 1
          i ← 2  
Шаг 4: Получить значение n от пользователя.
Шаг 5: Повторять шаги до тех пор, пока не выполнится i=(n/2)
    5.1 Если остаток от n÷i равен 0
              flag ← 0
              Перейти к шагу 6
    5.2 i ← i+1
Шаг 6: Если flag = 0
               Вывести n – не простое число
           Иначе
               Вывести n – простое число
Шаг 7: Стоп

Найти последовательность Фиббоначи до члена ≤ 1000.

Шаг 1: Старт 
Шаг 2: Объявить переменные first_term,second_term и temp.
Шаг 3: Задать начальные значения переменным first_term ← 0 second_term ← 1
Шаг 4: Вывести first_term и second_term
Шаг 5: Повторять шаги до тех пор, пока second_term ≤ 1000
    5.1: temp ← second_term 
    5.2: second_term ← second_term + first_term 
    5.3: first_term ← temp 
    5.4: Вывести second_term 
Шаг 6: Стоп

Проверьте себя
1. Что лучше всего описывает алгоритм?
AПрограмма, написанная на конкретном языке программирования
BСтруктура данных для хранения информации
CКомпилятор, переводящий код в машинные команды
DНабор чётко определённых последовательных инструкций для решения задачи
2. Один из принципов хорошего алгоритма гласит, что он должен быть:
AНаписан только на одном конкретном языке программирования
BОптимальным по использованию памяти при любых условиях
CМаксимально коротким по числу шагов
DРеализуемым на разных языках программирования
3. В алгоритме вычисления факториала числа n переменной factorial изначально присваивается значение 1, а i = 1. Сколько итераций цикла выполнится при n = 4?
A3
B4
C5
D24
4. Для проверки числа n на простоту цикл идёт до i = n/2, а не до i = n. Почему?
AЭто случайный выбор, оба варианта одинаково корректны
BЧисла больше n/2 всегда простые
CДелители числа, большие n/2, не могут быть меньше n, поэтому их проверять бессмысленно
DТак экономится память