Опять всем привет, сегодня вас ждет увлекательная лекция по алгоритмам (в данном гайде будут предоставлены примеры на C++ и Python чтобы все поняли)
Алгоритм - совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи.
А если описать более простым а не вики языком, алгоритм - это последовательности действий, которые позволяют решить определенную задачу или достичь определенной цели
И так, начнем!
В данной лекции мы расмотрим:
- Виды алгоритмов
- Описание и способы описания алгоритмов
А так же примеры к алгоритмам
Начало:
Существует множество различных видов алгоритмов, каждый из которых имеет свою специфику и применение. Самый близкий для нас всех алгоритм может служить описание процесса готовки еды. В то время как формализованный алгоритм будет представлять из себя программу, которая автоматически выполняет определенные шаги приготовления.
Виды алгоритмов:
Последовательный алгоритм:
Одним из самых распространненых видов алгоритмов является последовательный алгоритм. В таком виде алгоритма инстркуции выполняются в строгом порядке, одна за другой, в порядке их записи, без параллельного выполнения. Он характеризуется линейным потоком выполнения, где каждая следующая инструкция зависит от завершения предыдущей. Подобные алгоритмы наиболее простые в реализации и применяются в большинстве не сложных задачах.
Пример на C++
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
Пример на Python
sum = 0
for i in range(11):
sum += i
Ветвящий алгоритм:
Так же одним из важнейших алгоритмов является ветвящий алгоритм. В этом случае исполнение алгоритма может принимать разные направления в зависимости от данных условий. Этот алгоритм включает в себя условные конструкции позволяющие изменять поток выполнения в зависимости от выполнения определённых условий (if
, else if
, и else
). Ветвящие алгоритмы позволяют решать более сложные задачи, где необходимо принимать решения и выбирать одно из нескольких возможных действий.
Пример на C++
int x = 10;
if (x > 0) {
std::cout << "x положительное";
} else if (x < 0) {
std::cout << "x отрицательное";
} else {
std::cout << "x равно нулю";
}
Пример на Python
x = 10
if x > 0:
print("x положительное")
elif x < 0:
print("x отрицательное")
else:
print("x равно нулю")
Циклический алгоритм:
Еще один вид алгоритмов - циклические алгоритмы. В этом же случае алгоритм может повторять набор инструкций до тех пор пока не достигнет определенного условия. Циклические алгоритмы эффективны при работе с повторяющимися задачами или обработке больших объёмов данных. Он так же как и ветвящий алгоритм включает в себя условные операторы, такие как for
, while
, do-while
.
Цикл for
: Используется, когда количество итераций известно заранее. Этот цикл используется для перебора элементов или выполнения действий фиксированное количество раз.
Пример на C++ с использованием for
for (int i = 0; i < 5; i++) {
std::cout << i << std::endl;
}
Пример на Python с использованием for
for i in range(5):
print(i)
Цикл while
: Используется, когда количество итераций неизвестно и зависит от выполнения условия. Цикл продолжает выполнение действий, пока условие истинно (true).
Пример на C++ с использованием while
int i = 0;
while (i < 5) {
std::cout << i << std::endl;
i++;
}
Пример на Python с использованием while
i = 0
while i < 5:
print(i)
i += 1
Цикл do-while
: Похож на while
, но гарантирует выполнение тела цикла хотя бы один раз, так как условие проверяется после выполнения части цикла.
Пример на C++ с использованием do-while
int i = 0;
do {
std::cout << i << std::endl;
i++;
} while (i < 5);
В Python нет аналога do-while
Рекурсивный алгоритм:
Рекурсивные алгоритмы - это те алгоритмы которые вызывают сами себя для решения задачи. Рекурсия может сделать код более элегантным и компактным, особенно при решении задач, которые естественным образом делятся на подзадачи. Но, такие алгоритмы могут быть сложными для понимания и отладки. Зачастую они используются для решения задач, где есть естественное деление на более простые подзадачи.
Пример на C++
int factorial(int n) {
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
Пример на Python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
Итоги:
Cуществует множество различных видов алгоритмов, каждый из которых имеет свои преимущества и применяется в разнообразных ситуациях. Выбор конкретного вида алгоритма зависит только от требований задачи и особенностей ее решения.
Описание и способы описания алгоритмов:
Введение:
Описание алгоритма - это подробное объяснение каждого шага его выполнения. При этом описание алгоритма является скорее инструкцией чем кодом, которую должен понимать источник, выполняющий алгоритм.
Естественный язык:
Естественный язык позволяет описывать алгоритмы с использованием обычных слов и фраз. Это делает описание понятным для людей, но может быть менее точным и более подверженным неоднозначностям. А так же сложные алгоритмы не всегда легко превращаются в исполнимый код.
Пример
1. Начать
2. Прочитать число от пользователя
3. Если число больше 10, то вывести "Число больше 10"
4. Иначе вывести "Число 10 или меньше"
5. Конец
Блок-схемы:
Блок-схемы представляют алгоритм в виде диаграммы, где различные блоки (прямоугольники, ромбы, эллипсы) обозначают операции, условия и переходы. Мой самый ненавистный тип описания алгоритмов, из-за этого в примере вас ждет картинка с презинтации какого-то учителя информатики 2013 года.
Пример
Псевдокод:
Псевдокод представляет собой смесь естественного языка и структуры программирования, позволяя формально описывать алгоритм, не привязываясь к конкретному языку программирования. Это делает его удобным для проектирования алгоритмов и последующего их перевода на реальный код. А так-же это неотъемлемая часть ваших ответов на экзамене в 9 и 11 классах потому что синтаксис языков вы не знаете, но решили выбрать информатику ведь физмат крута а гумманитарии лошочки конкретные.
Пример
НАЧАЛО
ВВЕСТИ число
ЕСЛИ число > 10 ТО
ВЫВЕСТИ "Число больше 10"
ИНАЧЕ
ВЫВЕСТИ "Число 10 или меньше"
КОНЕЦ ЕСЛИ
КОНЕЦ
(так же псевдокод часто смахивает на луа 😁)
Вот вам табличка:
Конец
Ну вот как бы и всё, лайк подписка и ответ в опросе, а еще можно сюда зайти мой гитхаб, благодарностей сегодня не будет, делал от скуки после домашки по алгебре