Дмитрий Елисеев Мастер

Можно ли начать программировать за 5 минут? Учимся на ребусах и датах

Продолжим изучение основ программирования на примере языка Javascript. Как говорилось в первой части, основной плюс такого подхода — в отсутствии необходимости устанавливать на компьютер какие-либо программы, достаточно Блокнота и браузера Internet Explorer.

STILLFX, Shutterstock.com

Любую из программ, приводимых в тексте, можно набрать в редакторе Блокнот, сохранить в виде файла с расширением HTML, далее нужно запустить браузер двойным кликом по сохраненному файлу. Все, этого достаточно!

Итак, продолжим.

Математические ребусы

В первой части рассматривался «магический квадрат», точнее способ его получения с помощью компьютера. Рассмотрим пример другой числовой задачи, показанной на первом скриншоте. Нужно решить ребус «МУХА/ХА = УХА», в котором каждая буква соответствует одной цифре. Требуется найти такие цифры, при подстановке которых вместо букв выражение становится верным.

Способ решения с помощью компьютера весьма прост: с помощью циклов for переберем все 9999 вариантов для каждой из 4-х цифр, входящих в слово «МУХА». Используем 4 переменные М, У, Х и, А для хранения цифр от 0 до 9, тогда математически первое число можно записать как 1000*М + 100*У + 10*Х + А. Числа Х А и УХА кодируются аналогично, после чего проверить результат достаточно одним сравнением. Код программы показан на рисунке, ответ ребуса приводить не будем, читатели смогут найти его самостоятельно, выполнив программу.

Использование строк

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

Воспользуемся функциями length и charAt, возвращающими длину строки и символ с нужным индексом. Для начала выведем строку посимвольно, для чего используем цикл for, который пройдет диапазон значений от 0 до length (для тех, кто совсем незнаком с программированием, напомним, что как и в языке «С», нумерация многих объектов в Javascript идет с нуля, т. е. str. charAt (0) вернет первый символ в строке). Код для вывода показан на втором рисунке.

Казалось бы, никакой пользы в этом нет, строку можно вывести и обычным, более простым способом. Однако, усложнив код, мы можем сделать вывод более разнообразным, например, раскрасить каждую букву в отдельный цвет. Для этого воспользуемся HTML-кодом «font color="#aabbcc»", где aabbcc — это компоненты цвета, вычисляемые случайным образом (поскольку Javascript выполняется в браузере, мы можем для оформления текста использовать тэги HTML). Для получения случайного числа мы воспользуемся функцией Math. random, возвращающей значение в диапазоне от 0 до 1. После запуска программы мы увидим строку, в которой каждая буква раскрашена в свой цвет, как показано на следующем скриншоте.

И наконец, третий способ вывода, который мы используем — вывод строки в обратном порядке. Код отличается от первого варианта всего лишь одной строкой, предлагаем читателям понять разницу самостоятельно.

Использование дат

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

1) var d1 = new Date (1979, 1, 6); - создает объект с указанным годом, днем и месяцем;

2) var d2 = new Date (); - создает объект с текущей датой и временем.

Внутри класс Date хранит время в миллисекундах, воспользуемся этим и напишем простую программу, с помощью которой можно будет узнать количество дней до Нового года. Функция getTime возвращает время в миллисекундах, соответственно, чтобы получить разницу дат, нужно вычесть одно число из другого и результат разделить на 1000*60*60*24 (количество миллисекунд в сутках). Код программы и результаты ее выполнения показаны на рисунке.

В качестве дополнения читателям предлагается модифицировать код так, чтобы он мог работать для любого Нового года, для чего следует в переменную d2 заносить значение года, взятое из переменной d1, справочник по функциям класса javascript: Date можно найти в Интернете.

На этом мы закончим вторую часть. В качестве домашнего задания предлагается решить следующий математический ребус, опубликованный на одном из сайтов — найти числа, спрятанные под символами *, для которых выполняется следующее условие умножения: *** х *2* = **9*2*.

Еще раз напомним, что если при выполнении программы экран браузера пуст, значит, в программе ошибка, и следует проверить текст еще раз.

Обновлено 16.02.2012
Статья размещена на сайте 12.02.2012

Комментарии (13):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • Олег Антонов
    С часами даже прикольней, но из унитаза легче рукою достать. Вот ежели это выгребная яма, то тогда ДА УЖ...

  • Олег Антонов

    Может быть, может быть…"интеграл от х по dx равен икс в квадрате пополам".
    Математики в моем профпредмете немного, да и по жизни как-то не понадобилась… Так что неточности (вплоть до ошибок) при изложении «навеянного» вполне могут быть.

    Кстати, о математике:
    Встречает профессор своего любимого (лет 10 тому назад выпущенного) студента и спрашивает:
    - Вот высшая математика, которую я Вам читал, – предмет такой абстрактный – по жизни взрослой Вам хоть пригодился?
    Бывший студент задумавшись:
    - А знаете, профессор, ПРИГОДИЛСЯ ! Правда, всего 1 раз. Выхожу я как-то из своего офиса, иду к своему мерсу, а тут порыв ветра срывает мне шляпу и та закатывается за заборчик. Так я взял проволоку, изогнул ее в виде интеграла и шляпу таки достал…

  • Марианна Власова
    читать дальше →

  • НАВЕЯНО:
    Два математика в ресторане поспорил насколько хорошо знают математику большинство людей. Один (пессимист утверждал, что большинство ее вообще не знает, а другой (оптимист) - что хоть не много, но знают. Когда пессимист отошел в туалет, оптимист подозвал симпатичную официантку-блондинку и говорит
    - Когда мой коллега вернется, я задам вам вопрос. Суть не важна. Все, что вы должны сделать - это сказать «Треть икс куб».
    - Как-как? Третий скуп? - переспрашивает официантка.
    - Да нет, треть икс куб, понятно?
    - А-а! Третик скуп? - повторяет официант ка.
    - Да, да. Это все, о чем я вас прошу. Официантка уходит, твердя про себя, ка заклинание фразу «Третик скуп».Тут возвращается пессимист. Оптимист говорит - Давай спросим у нашей официантки, чему равен какой-нибудь простенький интеграл Пессимист со смехом соглашается. Оптимист вызывает официантку и спрашивает
    - Извините, вы не помните, чему равен интеграл от х по dx?
    - Треть икс куб... - отвечает официантка. Пессимист сильно удивлен, оптимист весело смеется.
    Официантка отходит на несколько шагов, и, обернувшись через плечо, добавляет:
    - ...Плюс константа.
    Немая сцена.

    • Василий Россихин, навеяно комментарием - Два математика в ресторане поспорили насколько хорошо знают математику большинство людей.
      Насколько я помню, интеграл от х по dx равен икс в квадрате пополам. Ну и плюс константа...

    • Марианна Власова Марианна Власова Бывший главный редактор 18 февраля 2012 в 18:20 отредактирован 18 февраля 2012 в 18:31

      читать дальше →

  • Статья интересная, но смысла особого не увидел в ней. Т.к. по ним действительно программировать не научишься, хотя просто как для развития своего ума и кругозора вполне подойдет. Возможно это всего лишь мое мнение, как профессионального программиста, увлеченного своим делом и профессией, который творит (именно творит) программы на работе и дома занимается своими интересными проектами (кто-то пишет программы для мобильных приложений, кто-то создает интересные сайты).
    Главное, чтобы было интересно и полезно!

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

  • Для кого написано? Действительно начинающий по такой статье ничему не научится, ничего не объясняется толком же.

    • Написано для тех, кто давно хотел попробовать, но то влом то некогда и пр.

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

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

      • Дмитрий Елисеев, почитал первую статью и понял, что статьи неплохие, если их рассматривать именно как пример программирования без специализированных сред, для людей, которые владели хотя бы бейсиком.
        P.S.: Поностальгировал, нашел старое свое баловство, игру "15" на Javascript, запустил, она работает под ChromePlus и Windows 7. А писалась для IE 3.0 и Windows 95. Игрушка с меняющимися фишками, можно вместо фишек голых девушек собирать.

  • !

    Оценка статьи: 5