55,2K подписчиков

Алгоритмы как основа программирования и автоматизации

412 прочитали

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

Для начала предлагаю определиться с понятием алгоритма:

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

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

Но теперь непосредственно к алгоритмам.

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

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

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

Для того, чтобы алгоритм был рабочим и устойчивым необходимо определится с его свойствами:

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

Детерминированность - четкое пошаговое разделение на понятные и однозначные шаги. То есть исключается неопределенность или неоднозначное толкование.

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

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

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

На самом деле эти свойства будут для вас очевидны при начальной работе и создании первых программ.

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

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

Сложно сказать с чего начать построение или просто программирование роботов, но я бы начал с понимания алгоритмов.

2. Словесно-формульный способ. Вариант описания действий в виде простых фраз описывающие действия или вычисления

Сложно сказать с чего начать построение или просто программирование роботов, но я бы начал с понимания алгоритмов.-2

Формулы при этом также могут присутствовать и вычисляться в ходе одного действия

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

Сложно сказать с чего начать построение или просто программирование роботов, но я бы начал с понимания алгоритмов.-3

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

Сложно сказать с чего начать построение или просто программирование роботов, но я бы начал с понимания алгоритмов.-4

Следующая немаловажная темы - это типы алгоритмов. В основном выделяют три типа и каждый мы рассмотрим6

1. Линейный алгоритм. Последовательный набор инструкций следующих друг за другом:

Сложно сказать с чего начать построение или просто программирование роботов, но я бы начал с понимания алгоритмов.-5

2. Алгоритм ветвления или разветвляющего типа. В таких алгоритм используются условия. которые определяют какая из последовательностей команд будет выполняться.

Сложно сказать с чего начать построение или просто программирование роботов, но я бы начал с понимания алгоритмов.-6

3. Циклический тип алгоритма. Содержит в себе возможность повторения нескольких действий. Повторения могут быть ограничены заданным количеством или выполняться по условию.

Сложно сказать с чего начать построение или просто программирование роботов, но я бы начал с понимания алгоритмов.-7

Для начала этого уже достаточно. в следующем мы рассмотрим базовые блоки и начнем знакомство с основными алгоритмами.

У меня всё, благодарю за внимание.