Что такое алгоритм
В этом уроке мы узнаем, что такое алгоритм и рассмотрим примеры алгоритмов.
Алгоритм — это набор четко определенных последовательных инструкций для решения задачи.
Принципы хорошего алгоритма
- Входные и выходные данные должны быть точно определены.
- Каждый шаг в алгоритме должен быть четким и недвусмысленным.
- Выбранный алгоритм должен быть наиболее эффективным для решения поставленной задачи.
- Алгоритм должен быть написан таким образом, чтобы его можно было реализовать на разных языках программирования. Реализация алгоритма на определенном языке программирования не то же самое, что алгоритм.
Примеры алгоритмов
Сложить 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Так экономится память