Разветвляющийся алгоритм: основы, структура и примеры

0
0

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

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

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

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

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

Если алгоритм повторяется в процессе достижения цели - это спираль. Алгоритм линейный или циклический - нонсенс, придуманный теоретиками в математике.

Динамичный алгоритм

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

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

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

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

Простые примеры алгоритмов

Выйти на улицу - алгоритм. Выполнить работу - алгоритм. Лечь спать - тоже алгоритм.

Посчитать квадратное уравнение на калькуляторе или написать программу - набор алгоритмов.

Алгоритм в действии

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

Математики и программисты

Математики решили, что алгоритмы - это их стихия и предложили множество умных формулировок:

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

Все это частности. Когда появились первые программисты, процесс применения слова алгоритм усложнился. Программисты решили отобрать пальму властвования над алгоритмом у математиков.

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

Алгоритм и начала программирования

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

Простые алгоритмы

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

разветвленный алгоритм

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

циклический алгоритм

Команда ветвления, столь популярная в языках программирования, содержит условие и каждый раз оно проверяется. В алгоритме нет условий ни в синтаксисе if, ни в синтаксисе switch. Алгоритм - это последовательность действий, а не проверок для выбора, куда идти дальше.

линейный алгоритм

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

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

Рекурсия и алгоритм

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

Алгоритм в программировании

Основные синтаксические конструкции в программировании - это середина 80-х годов прошлого века. До этого момента шли искания, после этого пошла оптимизация. В конечном итоге уже к концу 90-х годов сформировалась когорта востребованных языков программирования, а остальная масса языков приняла статус теоретически и практически бесполезных.

Характерная черта программирования прошлого века - катастрофическая медлительность.

Характерная черта программирования этого века в том, что пропали различия между словами:

  • алгоритм;
  • программа;
  • код;
  • скрипт;
  • сырки.

В программировании накопилось много фольклора, но «сырки» являются самым показательным фактором общего прогресса в информационных технологиях.

У программистов уже давно нет времени рисовать картинки, даже техническое задание на разработку написать они не успевают.

Source code («сырки») - это набор кодов (программ, модулей, библиотек, скриптов), который можно оптом применить при первой возможности. Не думая и не изменяя, просто применить.

Сырки в программировании

О каком алгоритме можно говорить, когда в деле участвуют «сырки»? Алгоритм включает в себя действия, а не то, что кто-то когда-то написал! Все действия алгоритма взаимосвязаны, основаны на последовательном стремлении к конкретной цели. Чужому действию в алгоритме нет места.

Авторитетный алгоритм

Обычно слово программист ассимилировалось со словом разработчик, хотя многие «авторитетные» IT-компании по сей день декларируют различия не только между программистами и разработчиками, но и вводят по каждой позиции уровни компетенции (начальный, средний, продвинутый).

Особенно интересны экзотические переменные в «авторитетных» алгоритмах:

  • coder;
  • frontend;
  • backend;
  • full-stack.

«Разветвляющийся» алгоритм такого рода действий «авторитетных» IT-компаний имеет под собой серьезные цели. Программа, написанная кодером (coder) - это 1 рубль. А продукт работы специалиста с полным стеком знаний (full-stack) - это 1000 рублей.

Специалист с полным стеком

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

Алгоритмы, программы, скрипты

Что такое алгоритм и программа в первозданном значении вроде, как ясно. Что такое скрипт, не ясно вовсе. Вероятно, это связано с тегом script в HTML-коде, может слово скрипт обязано языку JavaScript. В реальности все это одно и тоже.

Как не назови программиста, как не именуй программу, а результат один - последовательность действий. Есть исходные данные, есть цель получить результат. Для достижения ее нужно что-то сделать = алгоритм = программа = скрипт.

Команда ветвления - самая древняя в синтаксисе языка программирования и самая странная. Синтаксис языка программирования порой поражает воображение своей оригинальностью.

  • if (выражение) {набор инструкций, если выражение истинно} {набор инструкций, если выражение ложно}

Для записи выражения используется либо «==», либо «===». Использование «=» будет ошибкой (это оператор присваивания).

Странность состоит в том, что всегда выражение записано в скобках. Следовательно, использование в этих скобках «=» позволяет достоверно определить: здесь «=» - это не присваивание, а условный оператор равенства такой же как оператор меньше или больше.

If - не единственный в своем роде оригинал. Есть еще циклы в широком ассортименте и массивы в реляционном многообразии. Философия синтаксиса языка программирования, рожденная в 80-х годах прошлого века, в своем первозданном виде обросла множеством идей и уверенно смотрит в будущее.

Программирование - зеркало интеллекта

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

Программирование - зеркало интеллекта

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

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