Что такое алгоритмы и какими они бывают

Алгоритм в информатике - виды, структура и свойства

Примеры простых алгоритмических задач[править]

Здесь мы сформулируем несколько простых алгоритмических задач, которые полезно прорешать, чтобы освоится с понятием алгоритма.

Задача 5

Сколько раз в рекурсивном алгоритме вычисления будет вызвана процедура вычисления ?

Задача 6

Сколько раз в рекурсивном алгоритме вычисления будет вызвана процедура вычисления ?

Задача 7

Продолжите ряд Fn{\displaystyle F_{n}} на отрицательные значения n. Измените рекурсивный алгоритм вычисления так, чтобы он работал и при отрицательных .

Задача 8

Разработайте алгоритм вычисления числа F1000{\displaystyle F_{1000}} и реализуйте его в виде программы на языке Паскаль, Си или любом другом языке программирования. Сколько цифр в десятичной записи этого числа?

Задача 9

Напишите рекурсивный алгоритм вычисления n!=1⋅2⋅⋯⋅n{\displaystyle n!=1\cdot 2\cdot \dots \cdot n} на псевдокоде.

Задача 10

Используя соотношение НОД(a,b)={\displaystyle (a,\;b)=\;}НОД(amodb,b){\displaystyle (a\;{\bmod {\;}}b,b)}, напишите рекурсивный алгоритм, вычисляющий НОД двух чисел a{\displaystyle a} и b{\displaystyle b}.

Задача 11

Напишите алгоритм, который получает на вход чило n{\displaystyle n} и выводит слово «Простое», если это число простое (делится только на себя и на единицу), а иначе — слово «Составное». Попробуйте написать алгоритм, время работы которого ограничено функцией Cn{\displaystyle C{\sqrt {n}}}, где C{\displaystyle C} — некоторая константа.

Задача 12

Дана рекуррентная последовательность an=2⋅an−1−an−2+1{\displaystyle a_{n}=2\cdot a_{n-1}-a_{n-2}+1}, a=a1=1{\displaystyle a_{0}=a_{1}=1}. Напишите рекурсивный и нерекурсивный алгоритмы вычисления n{\displaystyle n}-го элемента этой последовательности. Найдите явную формулу члена этой последовательности (рассмотрите последовательность разностей соседних элементов).

Задача 13

Квадратный бумажный лист сложили пополам по вертикали (так, что изгиб шёл посредине, сверху вниз) (1-я операция), потом по горизонтали (2-я операция), затем снова по вертикали (3-я операция) и так далее, сделав всего n{\displaystyle n} операций. Затем сделали разрез по горизонтали. Напишите рекурсивный алгоритм, вычисляющий
число получившихся бумажек.

Задача 14

Дано множество прямых на плоскости, никакие три из которых не пересекаются в одной точке. Напишите рекурсивный алгоритм (псевдокод) закраски получившихся многоугольников в чёрный и белый цвета так, чтобы многоугольники одного цвета не имели общей стороны.

Задача 15

Рассмотрим следующее рекуррентное соотношение для функции f(n)=an{\displaystyle {f(n)=a^{n}}}:

a=1,an={an−1⋅a,if n is odd(an2)2⋅a,if n is even{\displaystyle a^{0}=1,\;a^{n}=\left\{{\begin{matrix}a^{n-1}\cdot a,&{\mbox{if }}n{\mbox{ is odd}}\\\left(a^{n/2}\right)^{2}\cdot a,&{\mbox{if }}n{\mbox{ is even}}\end{matrix}}\right.}.

Нарисуйте дерево рекурсивных вызовов для f(1000){\displaystyle f(1000)} (подсказка: это дерево не ветвится и выглядит как цепочка вызовов).

Задача 16

Чем отличается алгоритм от функции?

Чем отличается программа от алгоритма?

В чём разница между идеей решения и алгоритмом решения задачи?

Еще несколько терминов

Поначалу алгоритмизация подразумевала выполнение вычислительных действий над десятичными числами. Спустя годы, этот термин стал использоваться при обозначении любой последовательности, позволяющей достигать конкретного результата. Но эти последовательности не являются абстрактными — они разрабатываются для определенного исполнителя:

— человека;

— механизма;

— компьютера;

— роботизированного устройства;

— языка программирования и т. п.

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

Способы представления алгоритмов бывают разные:

Подробнее о способах читайте здесь, а о блок-схемах — тут.

Способы описания алгоритмов

Существуют различные способы описания алгоритмов. Приведем основные из них:

  • словесный (пошаговое описание);
  • табличный и в виде формул;
  • графический (в виде схем);
  • с использованием псевдокода (алгоритмического языка).

Алгоритмический язык является формальным языком, предназначенным для записи алгоритма. В его состав входят набор основных символов (алфавит), система точных правил построения текстов (синтаксис) и система соответствия синтаксически допустимых текстов языка описываемым действиям и объектам (семантика).

Множество языков программирования, используемых при ре¬шении задач на ЭВМ, являются алгоритмическими.

Псевдокод представляет собой способ описания логики программы до начала ее программирования и занимает промежуточное положение между машинным языками и естественными.

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

В соответствии с блок-схемой последовательность действий указывается с по¬мощью стрелок, которые соединяют отдельные блоки и показывают, какой блок и за каким должен быть выполнен.

Какими бывают алгоритмы

Несмотря на слово «последовательность», алгоритм не всегда описывает действия в жестко заданном порядке. Особенно это актуально сейчас, с распространением асинхронности в программировании. В алгоритмах есть место для условий, циклов и других нелинейных конструкций.

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

Ветвящиеся. В этом типе алгоритма появляется ветвление: какие-то действия выполняются, только если верны некоторые условия. Например, если число меньше нуля, то его нужно удалить из структуры данных. Можно добавлять и вторую ветку: что делать, если условие неверно — например, число больше нуля или равно ему. Условий может быть несколько, они могут комбинироваться друг с другом.

Циклические. Такие алгоритмы выполняются в цикле. Когда какой-то блок действий заканчивается, эти действия начинаются снова и повторяются некоторое количество раз. Цикл может включать в себя одно действие или последовательность, а количество повторений может быть фиксированным или зависеть от условия: например, повторять этот блок кода, пока в структуре данных не останется пустых ячеек. В некоторых случаях цикл может быть бесконечным.

Рекурсивные. Рекурсия — это явление, когда какой-то алгоритм вызывает сам себя, но с другими входными данными. Это не цикл: данные другие, но «экземпляров» работающих программ несколько, а не одна. Известный пример рекурсивного алгоритма — расчет чисел Фибоначчи.

Рекурсия позволяет изящно решать некоторые задачи, но с ней надо быть осторожнее: такие алгоритмы могут сильно нагружать ресурсы системы и работать медленнее других.

Вероятностные. Такие алгоритмы упоминаются реже, но это довольно интересный тип: работа алгоритма зависит не только от входных данных, но и от случайных величин. К ним, например, относятся известные алгоритмы Лас-Вегас и Монте-Карло.

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

Станьте дата-сайентистом и решайте амбициозные задачи с помощью нейросетей

Подробнее

Свойства и типы

Для лучшего понимания самой сути понятия алгоритмических процессов выделяют целый ряд свойств. Они характеризуют последовательности действий, направленных на решение задач с помощью вычислительных машин.

Основными свойствами алгоритма являются:

  1. Детерминированность (определённость). Предполагает получение однозначности в итоговом результате компьютерного процесса при конкретных исходных условиях.
  2. Результативность. Показывает наличие таких изначальных данных, для которых вычислительный процесс, что реализуется по алгоритму, обязан остановиться и выдать искомый результат через определённое число шагов.
  3. Массовость. Свойство заключается в предположении, что алгоритм будет пригоден для решения практически всех задач конкретного типа.
  4. Дискретность. Означает разделение алгоритмом процесса вычисления на отдельные этапы, возможность выполнения которых компьютером не может вызывать никаких сомнений.

Благодаря наличию различных подходов в алгоритмизации решений проблем выделяют три основных типа компьютерных процессов: линейный, ветвление и циклический.

Линейный тип — компьютерный процесс, где все этапы выполняются в порядке, согласно их записи.

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

Цикл является повторяемой частью расчёта. Сам процесс, который включает в себя одно или ряд повторений, называется циклическим. В зависимости от количества выполняемых циклических действий, они подразделяются на циклы с заранее заданным числом повторений и циклы, в которых это число не определено изначально.

Рекурсивный алгоритм

Существует так же и отдельный вид алгоритмов называемыми рекурсивными алгоритмами. Сначала введем понятие рекурсия.

Рекурсивным называется способ построения объекта, в котором определение объекта включает в себя аналогичные объекты в виде составных частей.

Рекурсия – метод определения функции через ее предыдущие и раннее определенные значения, а также способ организации вычислений, при котором функция вызывает сама себя с другим аргументом.

Рекурсивная функция – эта функция, которая вызывает саму себя. Это происходит в случае прямой рекурсии.

Существует так же и косвенная рекурсия – когда две и более функций вызывают друг друга. Когда функция вызывает саму себя, в стеке создается копия значений ее параметров после чего управление передается первому исполняемому оператору функции. При повторном вызове процесс повторяется.

Рекурсивные функции являются альтернативой циклам. Примерами рекурсии могут послужить вычисление факториала числа, возведение числа в степень или поиск Чисел Фибоначчи.

Ключевые понятия алгоритмизации

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

Существует несколько ключевых понятий, связанных с алгоритмизацией:

  • Алгоритм: алгоритм представляет собой упорядоченный набор инструкций, выполняемых последовательно, предназначенных для решения задачи или достижения определенного результата. Алгоритм описывает, как именно должны быть выполнены определенные действия, и приводит к желаемому результату.
  • Поток управления: поток управления — это способ, которым инструкции алгоритма выполняются последовательно, одна за другой. Контрольный поток определяет, какие инструкции должны быть выполнены в зависимости от текущего состояния алгоритма.
  • Циклы: циклы позволяют повторять определенные инструкции алгоритма несколько раз. Они часто используются для обработки списков данных или выполнения повторяющихся операций. Циклы могут быть бесконечными или иметь определенное условие выхода.
  • Условные операторы: условные операторы позволяют алгоритму принимать решения на основе определенных условий. Они позволяют выполнять различные инструкции в зависимости от истинности или ложности заданной условной проверки.
  • Переменные: переменные позволяют алгоритму хранить и обрабатывать данные. Они могут сохранять различные типы данных, такие как числа, строки или булевы значения, и предоставлять доступ к этим данным в разных частях алгоритма.

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

Способы записи

Алгоритмы записываются несколькими методами. В информатике используется всего три:

  • словесно-формульный;
  • графический;
  • программный.

В первом случае алгоритм записывается простым языком — словами и математическими формулами, что необходимо для понимания его теории. Здесь учитываются исходные данные, действия с ними и условия получения результата. Второй тип записи — компьютерное описание. Для этого применяются языки программирования и сами программы — форсы представления расчетов для их выполнения машиной.

Графическое описание состоит из связанных между собой географических фигур. Основные элементы блок-схем:

  • прямоугольники;
  • эллипсы;
  • ромбы;
  • шестиугольники;
  • стрелки;
  • пунктирные линии;
  • соединительные фигуры.

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

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

Линии и соединительные фигуры указывают на связи между разными блоками и их последовательность. В схеме есть блоки начала и конца алгоритма, его прерывания, которое может произойти из-за сбоев в программе. Можно также указывать комментарии и пояснения исполнителя, для этого есть отдельные фигуры.

Алгоритм – исполнитель

Детальные инструкции значительно упрощают решение сложных задач для исполнителя. А пошаговые рекомендации позволяют автоматизировать процесс. Каждый такой алгоритм создается для определенного исполнителя. Если им будет маленький ребенок, команды будут одними, если взрослый человек – другими, компьютер или робот – третьими.

Примеры задач из жизни и люди, которые их обычно решают:

  • прием ЕГЭ – члены комиссии;
  • управление поездом, перевозка пассажиров, груза – машинист;
  • написание статей – журналист;
  • забота о детях – родители.

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

Виды исполнителей, их особенности

Одной из основных классификаций является деление исполнителей по отношению к тому, как они выполняют. Одушевленных называют неформальными, потому что они понимают, что делают, могут анализировать и даже видоизменять команды при изменении условий. Неодушевленных – формальными исполнителями, так как они строго выполняют команды, механически, не понимая, что делают, не задумываясь над задачей или промежуточными итогами.

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

Алгоритм пишут, учитывая особенности того, для кого он предназначен. Для некоторых людей сухого набора команд мало, им нужны дополнительные инструменты (изображения, примеры). Инструкция будет разной, если написана она для конкретного Игоря Козакова или для учеников 6-класса. Точно также команды для бездомной собаки Жуля будут одни, а для дрессированных полицейских овчарок – другие.

Характеристики исполнителей

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

Характеристики исполнителей:

  • круг решаемых задач – существует определенных объем заданий по типу и объему, которые под силу конкретному человеку. Это значит, что нет смысла просить собаку прочесть газету, даже если инструкция будет написана с максимальной детализацией. Также не рационально просить ученого физика спеть рок-оперу. Но всегда есть исключения;
  • среда – место, окружение, где исполнитель будет выполнять команды. При написании рабочей инструкции высотнику следует учитывать технику безопасности, правила работы с высотным оборудованием, медицинские аспекты и непосредственно то, что будет делать этот специалист (управлять краном, заниматься отделкой или строительством зданий);
  • режим непосредственного выполнения команд исполнителю или программного управления. В первом случае даются простые единичные указания, которые сразу выполняются (например, команда собаке «Сидеть»). Во втором случае задается множество заданий, выполняемых в определенном порядке, с соблюдением условий, указанных в программе/алгоритме (пошаговый рецепт приготовления борща);
  • СКИ – любой алгоритм рассчитан на конкретного исполнителя, поэтому написан при помощи понятной ему системы команд (СКИ). В случае с живым существом (человек, собака), это будут слова, которые он понимает. Для неживого (робот, ПК) – строгие команды, и правила оформления, которые нельзя изменять (язык программирования).

СКИ – набор простейших команд, понятных данному исполнителю.

Перспективными исполнителями являются роботы, автоматы и компьютеры. Несмотря на формальность работы, их можно запрограммировать и «научить» очень и очень многому. Даже если это светофор, стиральная машинка, не говоря уже о роботах, космических кораблях, персональных или научных компьютерах.

Особенно удивительно выглядит компьютер, ведь он:

  • универсальный – позволяет запрограммировать разные процессы (визуальные, звуковые, текстовые);
  • многозадачный – готов рисовать, писать, считать, рассчитывать и транслировать, даже одновременно;
  • пользовательский – его интерфейс можно сделать «под пользователя».

Пользователи ПК могут использовать готовые приложения, чтобы задать ту или иную команду своему смартфону, компьютеру или другой умной технике. Или же самостоятельно написать «внутренности», программный код, задавая приложению те характеристики и функции, которые нужны.

Алгоритм Евклида[править]

Описание алгоритма:

  1. Если a=b{\displaystyle a=b}, то НОД (наибольший общий делитель) =a=b{\displaystyle =a=b} и заканчиваем вычисления.
  2. Если a>b{\displaystyle a>b}, то из a{\displaystyle a} вычитаем b{\displaystyle b} (a←a−b{\displaystyle a\gets a-b}). Переходим к 1.
  3. Если же b>a{\displaystyle b>a}, то из b{\displaystyle b} вычитаем a{\displaystyle a} (b←b−a{\displaystyle b\gets b-a}). Переходим к 1.

Запишем этот алгоритм с помощью псевдокода.

Псевдокод 1. Алгоритм Евклида

Конструкция псевдокода означает «повторять последовательность операций , записанных в теле оператора , пока выполнено условие ». Тело оператора — это все инструкции между и . Если условие не выполнено в самом начале, то тело оператора не выполняется ни разу. Один шаг выполнения тела цикла называется итерацией цикла.

Конструкция » псевдокода означает «если верно , то выполнить инструкции , иначе выполнить инструкции ».

Инструкция означает «вернуть как результат вычислений объект ».

Покажем, что наш алгоритм нахождения НОДа чисел a{\displaystyle a} и b{\displaystyle b}.

Действительно, НОД(a,b)={\displaystyle (a,\;b)=\;}НОД(a−b,b){\displaystyle (a-b,\;b)} при a>b{\displaystyle a>b}, поэтому, несмотря на то, что на каждом шаге меняется одно из чисел, значение НОД(a,b){\displaystyle (a,\;b)} остаётся неизменным. Максимальное из чисел a{\displaystyle a} и b{\displaystyle b} с каждым шагом уменьшается, и в какой-то момент они становятся равны друг другу и равны искомому значениюЗадача 2

Докажите, что НОД(a,b)={\displaystyle (a,\;b)=\;}НОД(a−b,b){\displaystyle (a-b,\;b)} для любых неотрицательных целых a{\displaystyle a} и b{\displaystyle b}, таких что a>b{\displaystyle a>b}.

Задача 3

Усовершенствуйте вышеприведённый алгоритм, используя то, что НОД(a,b)={\displaystyle (a,\;b)=\;}НОД(amodb,b){\displaystyle (a\;{\bmod {\;}}b,b)} при положительных a{\displaystyle a} и b{\displaystyle b} (выражение amodb{\displaystyle a\;{\bmod {\;}}b} означает остаток при делении a{\displaystyle a} на b{\displaystyle b}).

Исполнитель и разработчик алгоритма

Разрабатывать, придумывать алгоритмы могут только разумные существа (например, человек). А вот формально (не думая и не оценивая) исполнять, могут какие-либо машины (например, компьютеры, бытовые приборы). В чем польза такого разделения труда? Дело в том, что человек освобождается от рутинной деятельности, которая часто может занимать много времени, и поручает ее машинам.

Однако машины не люди: приборы понимают лишь ограниченное число команд и могут обрабатывать данные (объекты) далеко не всех типов. Отсюда следует, что разработчик алгоритма в конечном итоге должен описать алгоритм в допустимых командах определенного исполнителя (той машины, которой будет поручено выполнение алгоритма). Совокупность команд, которые данный исполнитель может выполнять, называется системой команд исполнителя. Объекты (данные), над которыми исполнитель может выполнять действия, формируют среду исполнителя.

Уровень абстракции

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

Программа, с другой стороны, является конкретной реализацией алгоритма. Она представляет собой набор инструкций на определенном языке программирования, который компьютер может понять и выполнить. Код программы — это набор команд, которые выполняются последовательно для достижения требуемого результата.

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

Таким образом, понимание разницы между алгоритмом и программой поможет программистам разрабатывать эффективные решения для задач, основываясь на логическом уровне абстракции и затем транслируя его в конкретный код программы.

Алгоритм: определяет логику решения

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

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

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

Таким образом, алгоритм определяет логику и методику решения задачи, а программа является конкретным кодом, который реализует эту логику, чтобы компьютер мог выполнить нужные операции и получить ожидаемый результат.

Программа: реализует конкретную логику

Логика программы определяется набором инструкций, которые описывают последовательность действий, необходимых для достижения определенного результата. Код программы содержит команды, операторы, функции и объявления переменных, которые определяют логическую структуру и поведение программы.

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

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

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

Свойства алгоритма

  1. Дискретность (в данном случае, разделенность на части) и упорядоченность. Алгоритм должен состоять из отдельных действий, которые выполняются последовательно друг за другом.
  2. Детерминированность (однозначная определенность). Многократное применение одного алгоритма к одному и тому же набору исходных данных всегда дает один и тот же результат.
  3. Формальность. Алгоритм не должен допускать неоднозначности толкования действий для исполнителя.
  4. Результативность и конечность. Работа алгоритма должна завершаться за определенное число шагов, при этом задача должна быть решена.
  5. Массовость. Определенный алгоритм должен быть применим ко всем однотипным задачам.

Понятие алгоритма

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

В информатике алгоритм обладает некоторыми обязательными свойствами:

  • Алгоритм – это структура, состоящая из набора законченных действий, расположенных в строгом порядке.
  • Каждый шаг алгоритма строго определен и должен пониматься однозначно.
  • У алгоритма должна быть цель – в конце его выполнения должен быть конкретный результат.

Хороший пример такого алгоритма – процесс приготовления супчика.

Чем хорош процесс приготовления супчика?Процесс приготовления супчика соответствует всем вышеописанным требованиям:● Каждый шаг важен, причем важен именно на своем месте – нет смысла ждать, пока мы еще даже не порезали овощи.● Каждый шаг алгоритма – четкая команда, которая понимается однозначно и не оставляет неясности.● Итоговый результат есть, и он прекрасен.

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

Условный алгоритм или алгоритм с ветвлением добавляет в структуру какое-то условие, в зависимости от которого будет выполнена какая-то конкретная команда или набор команд.

Теперь у нас появился вариант поперчить суп, но эта команда выполнится, только если на условие будет утвердительный ответ. Если условие не выполнится — мы не придем к этой команде, пропустим ее и пойдем дальше по алгоритму.

В том числе в ветке условия НЕТ могла бы быть какая-то другая команда, например, ПОСОЛИТЕ, которая выполнилась бы, только если бы ответ на условие был соответствующим.

Циклический алгоритм — это команда или набор команд, которые совершаются неоднократно: либо определенное количество раз, либо пока не выполнится какое-то условие.

Здесь мы сразу не знаем, сколько фрикаделек мы хотим, поэтому будем крутить по одной и смотреть, хватит ли. Если нет, мы будем идти назад по алгоритму, чтобы вернуться к предыдущему шагу. Когда фрикаделек будет достаточно – перейдем дальше.

В том числе вместо данного условия могло бы быть конкретное количество, например, «ФРИКАДЕЛЕК РОВНО 20?» Тогда цикл бы выполнился конкретное количество раз.

Какие есть виды алгоритмов?Подведем итог:● Линейный алгоритм — алгоритм, в котором все команды выполняются один раз и друг за другом.● Условный алгоритм или алгоритм с ветвлением подразумевает наличие условия, вариативности, когда при различных вариантах будут выполняться различные конкретные команды или наборы команд.● Циклический алгоритм подразумевает многократное выполнение какой-то команды или набора команд определенное количество раз или до выполнения определенного условия.
Понравилась статья? Поделиться с друзьями:
ГДЗ 8 класс
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: