Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГАК-2026.docx
Скачиваний:
1
Добавлен:
16.06.2026
Размер:
2.66 Mб
Скачать

5. Углубленная связь: Алгоритм и Программа

Главное различие лежит в плоскости "сущность — явление" или "план — действие".

  • Алгоритм существует в абстрактном пространстве. Мы можем обсуждать эффективность алгоритма сортировки, не написав ни строчки кода. Мы говорим о его вычислительной сложности «в вакууме», на бумаге.

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

Аналогия для запоминания: Представь, что тебе нужно построить дом.

  • Алгоритм — это архитектурный план и техническое задание: «Сначала фундамент, потом стены, потом крыша. Использовать кирпич. Высота потолков — 3 метра».

  • Программа — это сам процесс стройки и готовый дом. Ты можешь следовать плану (алгоритму), но использовать бетон (язык C++), дерево (Python) или стальные конструкции (Java). В итоге дома будут выглядеть по-разному, но оба соответствуют плану.

6. Пример для кристальной ясности

Задача: Найти максимальное число в списке.

  • Алгоритм (идея):

    1. Взять первый элемент списка и считать его текущим максимумом.

    2. Взять следующий элемент списка.

    3. Если этот элемент больше текущего максимума, то обновить текущий максимум этим элементом.

    4. Повторять шаги 2-3, пока элементы не закончатся.

    5. Выдать текущий максимум как результат.

  • Программа (реализация на разных языках):

На Python:

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

2. Базовые алгоритмические конструкции (линейная, разветвляющаяся, циклическая)

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

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

Разветвляющаяся конструкция используется в случаях, когда выполнение алгоритма зависит от некоторого условия. В зависимости от того, выполняется условие или нет, программа выбирает один из нескольких возможных путей выполнения. В языках программирования это реализуется с помощью операторов условного перехода, например if – else.

Циклическая конструкция применяется тогда, когда необходимо многократно повторять определённую группу действий. Повторение выполняется до тех пор, пока выполняется заданное условие или пока не будет достигнуто определённое количество повторений. Для этого используются циклы for, while или do-while.

Использование этих трёх конструкций позволяет создавать алгоритмы любой сложности.

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

1. Теоретическая основа: структурное программирование

Чтобы понять базовые конструкции, нужно знать теорему Бёма-Якопини (структурной теоремы). В 1966 году математики доказали: любой алгоритм можно реализовать с помощью всего трёх базовых конструкций:

  • следование (последовательное выполнение);

  • ветвление (выбор по условию);

  • цикл (повторение).

Это открытие стало фундаментом структурного программирования — подхода, который делает код понятным, читаемым и доказуемо правильным. До этого программисты писали с помощью goto (безусловных переходов), и код превращался в «спагетти», где невозможно было проследить логику.

Теперь разберём каждую конструкцию глубоко.