Что такое алгоритм? Каковы его основные свойства?
Алгоритм — это точное описание последовательности действий, которые нужно выполнить для решения задачи или достижения результата.
Проще говоря, алгоритм отвечает на вопрос: что нужно сделать и в каком порядке.
Пример простого алгоритма приготовления чая:
1. Налить воду в чайник.
2. Включить чайник.
3. Дождаться кипения.
4. Положить чай в чашку.
5. Залить кипятком.
6. Подождать несколько минут.В информатике алгоритмы используются для обработки данных, вычислений, поиска, сортировки, управления устройствами и выполнения программ.
Основные свойства алгоритма
1. Дискретность
Алгоритм должен состоять из отдельных шагов.
Каждый шаг выполняется отдельно, после чего происходит переход к следующему.
Например:
1. Ввести число.
2. Умножить число на 2.
3. Вывести результат.---
2. Определенность
Каждая команда алгоритма должна быть понятной и однозначной.
Исполнитель не должен гадать, что именно нужно сделать.
Плохая команда:
Сделать число красивым.Хорошая команда:
Округлить число до двух знаков после запятой.---
3. Выполнимость
Каждая команда должна быть такой, чтобы исполнитель мог ее выполнить.
Если алгоритм предназначен для компьютера, команды должны быть выражены в форме, которую можно реализовать программно.
---
4. Конечность
Алгоритм должен завершаться за конечное число шагов.
Если алгоритм никогда не заканчивается, он не решает задачу корректно.
Пример возможной ошибки:
let i = 0;
while (i < 10) {
console.log(i);
}let i = 0;
while (i < 10) {
console.log(i);
}package main
import "fmt"
func main() {
i := 0
for i < 10 {
fmt.Println(i)
}
}public class Example {
public static void main(String[] args) {
var i = 0;
while (i < 10) {
System.out.println(i);
}
}
}i = 0
while i < 10:
print(i)Здесь переменная i не изменяется, поэтому цикл бесконечный.
---
5. Результативность
После завершения алгоритм должен дать результат.
Результатом может быть:
- число;
- текст;
- файл;
- сообщение;
- изменение состояния системы;
- ответ «да» или «нет».
---
6. Массовость
Алгоритм должен решать не только одну конкретную задачу, а целый класс однотипных задач.
Например, алгоритм сложения двух чисел должен работать не только для 2 + 3, но и для любых допустимых чисел.
---
7. Правильность
Алгоритм должен давать верный результат для всех допустимых входных данных.
Например, алгоритм сортировки должен действительно упорядочивать элементы.
Способы записи алгоритмов
Алгоритм можно представить разными способами:
- словесным описанием;
- блок-схемой;
- псевдокодом;
- программным кодом;
- таблицей решений.
Основные алгоритмические конструкции
Большинство алгоритмов строятся из трех базовых конструкций:
1. Следование
Команды выполняются последовательно.
Ввести A
Ввести B
C = A + B
Вывести C2. Ветвление
Действие зависит от условия.
if (age >= 18) {
console.log('Доступ разрешен');
} else {
console.log('Доступ запрещен');
}if (age >= 18) {
console.log('Доступ разрешен');
} else {
console.log('Доступ запрещен');
}package main
import "fmt"
func main() {
if age >= 18 {
fmt.Println("Доступ разрешен")
} else {
fmt.Println("Доступ запрещен")
}
}public class Example {
public static void main(String[] args) {
if (age >= 18) {
System.out.println("Доступ разрешен");
} else {
System.out.println("Доступ запрещен");
}
}
}if age >= 18:
print('Доступ разрешен')
else:
print('Доступ запрещен')3. Цикл
Действие повторяется несколько раз.
for (let i = 1; i <= 5; i++) {
console.log(i);
}for (let i = 1; i <= 5; i++) {
console.log(i);
}package main
import "fmt"
func main() {
for (i := 1; i <= 5; i++) {
fmt.Println(i)
}
}public class Example {
public static void main(String[] args) {
for (var i = 1; i <= 5; i++) {
System.out.println(i);
}
}
}for i in range(1, 6):
print(i)Пример алгоритма нахождения максимального числа
1. Взять первое число как максимум.
2. Сравнить максимум со вторым числом.
3. Если второе число больше максимума, сделать его максимумом.
4. Повторить сравнение для всех чисел.
5. Вывести максимум.Пример на TypeScript:
function findMax(numbers){
if (numbers.length === 0) {
return null;
}
let max = numbers[0];
for (const number of numbers) {
if (number > max) {
max = number;
}
}
return max;
}function findMax(numbers: number[]): number | null {
if (numbers.length === 0) {
return null;
}
let max = numbers[0];
for (const number of numbers) {
if (number > max) {
max = number;
}
}
return max;
}func findMax(numbers []int) (int, bool) {
if len(numbers) == 0 {
return 0, false
}
max := numbers[0]
for _, number := range numbers {
if number > max {
max = number
}
}
return max, true
}public class Example {
static Integer findMax(int[] numbers) {
if (numbers.length == 0) {
return null;
}
int max = numbers[0];
for (int number : numbers) {
if (number > max) {
max = number;
}
}
return max;
}
}def find_max(numbers):
if len(numbers) == 0:
return None
max = numbers[0]
for number in numbers:
if number > max:
max = number
return maxВывод
Алгоритм — это точное и конечное описание действий для решения задачи. Основные свойства алгоритма: дискретность, определенность, выполнимость, конечность, результативность, массовость и правильность.
Источники
- Горбатов В.А., Горбатов А.В., Горбатова М.В. Дискретная математика: Учебник для студентов втузов. - М.: АСТ, 2014. - 448 с.
- Горбатов В.А., Горбатов А.В., Горбатова М.В. Теория автоматов: учебник для втузов. - М.: АСТ, 2008. - 559 с.
- Кузнецов О. П. Дискретная математика для инженера. - Санкт-Петербург [и др.]: Лань, 2009.
- Содержание курса лекций «Языки программирования». Кафедра алгоритмических языков ВМК МГУ, 2018.
- Босова Л.Л. Информатика. Базовый курс: учебник для 10-11 классов. - М.: БИНОМ. Лаборатория знаний, 2021.
- Гладкий Ю.Н. Информатика и информационные технологии: учеб. пособие. - М.: КноРус, 2020.