Алгоритмы

Что такое Алгоритм?

   Что это такое? Конечно, некоторым может быть интуитивно понятно это слово. Все же дам определение, сначала из старой доброй Википедии : 
   Алгори́тм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий.
   А если проще, то алгоритм, это как рецепт какого-то блюда, который описывает, что вы должны сделать с ингредиентами, чтобы приготовить это блюдо. То есть, в каком порядке класть овощи, сколько их жарить. Думаю, что понятно. И если так, то давайте что нибудь "приготовим"! :)
   Для начала что-то очень простое, например.. алгоритм покупки семечек.

Алгоритм покупки семечек

   Давайте предположим, что вы собрались пойти за семечками (если не любите их, как я, то пусть это будет что-то другое, не важно).
   Что вам нужно? Прежде всего, это деньги. Итак, напишем: 


   Дальше что? Нужно припомнить где находится ближайший магазин, и пойти туда. Пишем:



   Ну и теперь их надо купить.




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



   Вроде бы получше.. Такой вид алгоритма называется разветвляющимся
   Но предположим, что вам эти семечки позарез нужны :) Что вы обычно делаете, если не находите семечки в магазине? Думаю, что стоит пойти в другой магазин, вдруг они там будут? Хорошее решение.
   Однако давайте не спешить, и подумаем, а что если их и во втором магазине не будет? Допустим, что у вас есть 7 магазинов. Конечно, можно, используя знакомый нам разветвляющийся алгоритм просто сделать 7 раз на ветке "Нет" продолжение с пункта "2". Но это будет нерационально.
   Поэтому, давайте сделаем по-умному. Вместо действия "Печаль" в 4 пункте, напишем "Вернуться в пункт : 2".
   И тогда нам не придется писать лишнего. В этом и заключается суть качественных алгоритмов. Чтоб быть максимально простыми, и лаконичными.


   Вот что получилось. Такой вид алгоритма называется циклическим, а само действие, когда мы возвращаемся в другую часть алгоритма, называется итерацией цикла.
   После составления алгоритма, нужно всегда проверять его. Давайте проверим наш алгоритм.
   Допустим дело было так : мы взяли деньги, вышли из дома, пошли в ближайший магазин, семечек не нашли, пошли в еще один, но и там их не оказалось. Мы пошли в третий магазин и нашли там семечки. Купили! Довольные как слон, идем домой :)
   А вот другой пример : мы обошли все 7 магазинов и нигде не нашли семечек. Что нормальный человек сделает? Конечно пойдет домой. Но мы проверяем алгоритм, поэтому.. согласно плану, пойдем в ближайший магазин. В один из тех, что мы уже посещали. Естественно, что семечек там нет! И мы снова идем в ближайший магазин. Глупо, да? Вот этот процесс называется зацикливанием. Все потому, что мы не предусмотрели, что во всех магазинах может не оказаться семечек. 
   Давайте думать, как это исправить. В этот раз вы попробуйте сначала сами сделать. А потом посмотрите, как я это реализовал. Если вы сделали не так как я, ничего страшного, это не обязательно значит, что вы ошиблись. Если вы проверили алгоритм, и зацикливания не происходит, значит все верно! :)
   Ну а я предлагаю свое решение:

   
   Вот так. Здесь все нормально будет :)
   Можете в качестве домашнего задания написать несколько своих алгоритмов. А я предлагаю такие:
  • Алгоритм мойки посуды.
  • Алгоритм поведения комара. (Вредного такого) :)
  • Алгоритм заваривания кофе/чая.
  • Алгоритм приготовления бутерброда.
   Вот и все пока что. Спасибо за прочтение. Если вам понравилось, ставьте большие пальцы вверх. Пока :)
Cледующая статья--->

1 комментарий: