Будущему программисту или как мыслит программист?

Хочешь стать программистом, но не знаешь с чего начать? Начни с пульта для телевизора! Пойди и возьми его прямо сейчас, не читай дальше, пока у тебя в руках не будет пульта. Отлично, а теперь на мгновение попытайся представить себя программистом и далее, читая эту статью, старайся вникнуть в свойственный ему образ мышления. Да, именно так! Программист - это, прежде всего специфический образ мышления, который кстати может быть очень полезным и людям других профессий. А теперь взгляни на пульт, подумай немного про телевизор и о том, как связаны между собой эти два предмета. Внимательно проведи свой взгляд по кнопкам, которые ты используешь для переключения телеканалов (цифры 0-9, кнопки вперед-назад и кнопка для быстрого перехода на двухзначный канал). Замечательно, а теперь давай вместе рассмотрим несколько ситуаций, и ты ответишь сам себе на простые вопросы:

  1. Представь, что в памяти телевизора хранятся ровно 9 каналов. Сколько потребуется нажатий на пульт, чтобы перейти на любой из девяти каналов?
  2. Мысленно добавь 10-ый канал. Телевизор включен на 9-ом канале. Сколько потребуется нажатий на пульт, чтобы оказаться на 10-ом канале? А если телевизор включен на 2-ом или на 4-ом каналах?
  3. Возьми листочек и попытайся описать порядок действий, к которому ты прибегнешь, чтобы переключиться с произвольного канала на любой другой, если в памяти телевизора хранятся 20 каналов. Постарайся перебрать всевозможные варианты и сделать все максимально рационально - это крайне важная черта для будущего программиста!

И наконец, сравни свои мысли с тем, как должно быть:

  1. На пульт необходимо будет нажать ровно один раз. Так как каналов девять и все их порядковые номера однозначные, то ты можешь элементарно воспользоваться кнопками с цифрами от 1 до 9.
  2. Для того чтобы перейти с 9-ого канала на десятый достаточно лишь одного нажатия - кнопка вперед. Чтобы оказаться на 10-ом канале, стартуя со 2-ого, тебе хватит двух нажатий на кнопку назад. Надеюсь, ты не забыл о том, что клацать вперед или назад можно бесконечно, так как при клацанье вперед за последним каналом следует первый и при клацанье назад - наоборот. А уже чтобы с 4-ого канала максимально быстро оказаться на 10-ом твоим пальцам хватит трех операций: кнопка для быстрого перехода на двухзначный канал и затем кнопки 1 и 0.
  3. Да, эта задачка уже посложнее. Сравни то, что ты написал на листике с тем, как должно быть. Рекомендуем не читать дальше, если ты еще не испытал свои силы сам. Это крайне важно для тебя, а теперь непосредственно пошаговое описание порядка действий:
    1. Для начала необходимо определить на каком же канале ты находишься? Пусть номер этого канала будет N. Помни, что значение N может колебаться от 1 до 20 включительно - по условию в памяти телевизора хранятся 20 каналов.
    2. На втором шаге ты должен решить, на какой телеканал ты хочешь переключиться. Пусть номер данного канала будет K. Значение K также колеблется от 1 до 20, но оно не может равняться значению N. Если K=N, то нет нужды в использовании пульта.
    3. И теперь самое интересное - перебор всех возможных вариантов значений N и K:
      1. Если K - однозначный канал, то нажимаем кнопку с соответствующей цифрой от 1 до 9. Например, K=3. Независимо от N, достаточно просто нажать на кнопку 3.
      2. Иначе, если K - двухзначный канал, то тебе нужно сравнить его со значением канала N и здесь может быть снова несколько вариантов:
        • K-N=1. Если номер желаемого канала K на единицу больше номера канала N, на котором ты находишься, то нажимаем кнопочку вперед.
        • K-N=2. В этом случае соответственно жмем кнопку вперед дважды.
        • N-K=1 либо (N=1 и К=20) жмем назад. Каналы телевизора цикличны, поэтому одним нажатием можно перескочить с первого канала на последний.
        • N-K=2 либо (N=2 и K=20) либо (N=1 и K=19) жмем назад дважды. Здесь все аналогично.
        • Во всех остальных случаях нужно будет нажимать кнопки пульта трижды, и задействовать кнопку для быстрого перехода на двухзначный канал.

Поздравляем! Ты добрался до конца и если уловил суть написанного, то ты большой молодец. Не расстраивайся, если твое описание порядка действий немного не совпало с авторским. Со временем обязательно все получится. Главное запомни, что такие порядки действий программисты называют алгоритмами, а работа самого программиста заключается в переводе алгоритма на понятный компьютеру язык программирования. Это знание очень важно для тебя. Быть программистом - мыслить по-особенному. Желаем удачи в составлении будущих алгоритмов и их непосредственной реализации! А сейчас немножко отдохни, спокойно все обдумай и не забудь отнести пульт на место. Успехов!