Главные понятия -алгоритм

Главные понятия -алгоритм

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

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

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

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

 Сложным программирование делают учителя, которые пробуют преподавать его как теоретический школьный предмет. Мы с вами пойдём другим оковём.

 Пожалуй, уже хватит лить воду, давайте перейдём к практическим вещам.Пройдёмся по верхамАлгоритмыПостараюсь обходиться без «собачек», «кошечек» и иной мути, присущей другим учебникам по программированию. Возьмём более реальный пример метода: допустим, вы желаете посидеть во ВКонтактике (это не призыв к действию, не отвлекайтесь от исследования материала).

Каким будет порядок ваших действий для входа в соцсеть? Приблизительно таким:

Эта картина – метод ваших действий, другими словами представленная в графическом виде последовательность шагов.

Просто, не так ли? И ну и нет.

С одной стороны, представленный алгоритм может быть реализован всего 4-мя строчками кода, по одной на каждый блок действия (прямоугольник). С другой стороны, очень много вещей, которые могут пойти не так.Что если отключен веб?

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

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

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

Можно хранить имя юзера и пароль не на бумажке, а в файле либо базе данных. Мы можем скооперировать блоки «Сработал автовход?» и «Вошли удачно?», в один, потому что они инспектируют одно и то же.

Можем демонстрировать более информативное сообщение об ошибке. Давайте дорисуем ещё несколько блоков:

Продолжать до бесконечности.

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

…это вся логика нашего предшествующего метода, упакованная в один отдельный «кирпичик».Конкретно из таких «кирпичиков» строятся в конечном итоге готовые проекты.

К примеру, кто-то пишет злобного бота. Ах так он может работать:

Главные понятия -алгоритм

Видите?

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

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

УровниВидите?

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

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

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

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

источник: {https://artstroy.net/osnovnie-ponyatia-algoritm/|Основные понятия -алгоритм|ArtStroy.net}