К концу этого поста вы узнаете некоторые из основных принципов логики, которые помогут нам решить проблему, на которую пока не может ответить даже Google.
К сведению, все следующие коды написаны на JavaScript, потому что вы можете легко написать код прямо в браузере. Я с жадностью прошу вас писать код вместе со мной, потому что нет лучшего способа учиться, чем практический.
Советую использовать консоль вашего браузера для написания кодов. В Chrome вы можете получить доступ с помощью Ctrl + shift + J, но если это не сработает, вы можете быстро найти это в Google.

Логика программирования
Думайте о логике программирования как о строительных блоках чего-то большего. Представьте себе LEGO или головоломку, которая представляет собой группу из нескольких маленьких частей, которые помогают создать один конечный объект. У каждой из этих маленьких частей в программировании есть название, и я покажу вам каждую из них, которая нам понадобится для разработки нашей задачи кода, в конце поста.

Комментарии
Комментарии - это коды, которые не выполняются программой. Это форма, в которой мы можем передавать сообщения нам, людям, не нарушая выполнение нашего кода. В JavaScript самый простой способ объявить комментарий - использовать «//» в каждой строке. Например:
// this is a comment
// this is another comment
Переменные
Переменные помогают нам хранить некоторые данные, которые нам могут понадобиться в будущем. Это могут быть числа, тексты, функции и несколько других типов значений. Самая простая форма объявления переменной - использование оператора «var». Также следует отметить, что мы не можем допускать пробелов между именами переменных, поэтому мы группируем слова с заглавной буквы. Например:
// for texts we need to use '' or "" around the text var myName = "Alison Cassis"var internetCostByMonth = 100 // set a value of 100 to our variable// but how much does it cost in a whole year?internetCostByMonth * 12// the console should print 1200 to you
Операторы отношения
Это помогает проверить связь между двумя значениями.

Условия
Это помогает проверить, является ли утверждение истинным или ложным. Чаще всего используются «if» и «else»,, и их область действия ограничена символы «{« и «}». Вот пример использования операторов отношения, которые мы только что видели:
var myAge = 24
var myBrotherAge = 10
if (myAge < myBrotherAge) {
// "I'm younger than my brother"
} else {
// "I'm older than my brother"
}
Повторение петель
Это поможет вам выполнить один и тот же код N раз. Как и условия, их область действия также ограничивается символами «{« и «}» . Примером циклов является «для», которому для работы требуются 3 значения в следующем порядке: базовое значение, условие остановки цикла, и новое базовое значение для следующего выполнения цикла.
var minutesInADay = 0
for (var hourOfTheDay = 0; hourOfTheDay < 24; hourOfTheDay = hourOfTheDay + 1) {
minutesInADay = minutesInADay + 60
//for each hour in a day we want to sum 60 in our variable
}
minutesInADay
// the console should print 1440 to you
Списки
Это помогает сгруппировать несколько значений в одну переменную. Особенность в том, что списки начинаются с 0. Элементы списка хранятся внутри символов «[» и «]» и разделяются запятая. Например:
var monthsFromFirstSemester = ['January', 'February', 'March', 'April', 'May', 'June']monthsFromFirstSemester[0]// the console should print "January" to you
Функции
Это форма для группировки частей вашего кода в блок, который мы можем выполнить в другой момент. Чтобы объявить эту функцию, мы должны использовать оператор «function ()». Как и условия, их область действия также ограничена символами «{« и «}» . Когда мы решаем выполнить нашу функцию, мы должны ввести ее имя и затем « () », иначе она не будет выполнена. Например:
var willNotBeExecuted = function () {
return 'some text'
}
var willBeExecuted = function () {
return 'It works'
}
willBeExecuted()
// the console should print 'It works' to you
// take a look how we did not execute the first function, only the second one
Теперь, когда мы знаем основы программирования, давайте приступим к нашей задаче:

Сколько у нас было пятницы 13-го в 2000 году?
Я знаю, это кажется глупым и простым, но я посоветовал вам найти простой ответ на этот вопрос. При поиске в Google вы можете найти несколько связанных ссылок, но ничего слишком простого или очень надежного. Итак, я предлагаю:
Давайте создадим код, который ответит на этот вопрос.
Итак, давайте начнем наш код с создания функций, которые мы собираемся использовать.
var calculateTotal = function () {
var total = 0
var initialYear = 2000
var currentYear = new Date().getFullYear() // should get your current year
}
Мы будем выполнять одну и ту же логику для каждого года, начиная с 2000 года, поэтому мы можем использовать для этого цикл.
var calculateTotal = function () { var total = 0 var initialYear = 2000 var currentYear = new Date().getFullYear() // should get your current year for (var baseYear = initialYear; baseYear <= currentYear; baseYear = baseYear + 1) {//here comes our next code }}
Теперь, когда мы выполняем цикл для каждого года, пришло время проверить, есть ли в каждом из месяцев пятница, 13-е, и мы можем добиться этого с помощью другого цикла, но на этот раз для месяцев каждого года. Особенность заключается в том, что данные типа «даты» обрабатываются как списки, например [«Январь», «Фев»,…, «Декабрь»], поэтому нам нужно использовать переменную месяца как 0 в нашем цикле.
var calculateTotal = function () { var total = 0 var initialYear = 2000 var currentYear = new Date().getFullYear() // should get your current year for (var baseYear = initialYear; baseYear <= currentYear; baseYear = baseYear + 1) {for (var month = 0; month < 12; month = month + 1) { // here we have access to each month in a year }}}
Поскольку мы зацикливаемся на каждом месяце в году, нам просто нужно проверить, является ли 13-й день пятницей, и для этого мы будем использовать оператор Дата, который поможет нам справиться со всеми аспекты переменных даты. Мы можем создать дату, передав 3 параметра в Дата в следующем порядке: год, месяц и день. После этого мы можем использовать getDay, чтобы узнать, какому дню недели соответствует это значение даты. Проверить это:
var calculateTotal = function () { var total = 0 var initialYear = 2000 var currentYear = new Date().getFullYear() // should get your current year for (var baseYear = initialYear; baseYear <= currentYear; baseYear = baseYear + 1) {for (var month = 0; month < 12; month = month + 1) { var dayOfTheWeek = new Date(baseYear, month, 13).getDay() }}}
Теперь нам просто нужно проверить, равна ли переменная dayOfTheWeek пятнице. Но здесь есть еще одна особенность. getDay возвращает нам номер этого конкретного дня в неделе с учетом недели, начинающейся с воскресенья, поскольку это был список с воскресенья по понедельник, а поскольку это список, мы уже знаем, что он начинается в 0. Итак, если воскресенье равно 0, нам нужно проверить, будет ли результат getDay равен 5, потому что для нас это будет означать пятницу. После этого нам просто нужно увеличить нашу переменную total и выполнить нашу функцию. Нравится:
var calculateTotal = function () { var total = 0 var initialYear = 2000 var currentYear = new Date().getFullYear() // should get your current year for (var baseYear = initialYear; baseYear <= currentYear; baseYear = baseYear + 1) {for (var month = 0; month < 12; month = month + 1) { var dayOfTheWeek = new Date(baseYear, month, 13).getDay() if(dayOfTheWeek == 5) { total = total + 1 } }} return total} calculateTotal()
Вот и все!
Вы просто использовали свои самые последние навыки программирования, чтобы создать что-то, что поможет вам решить проблему. Вот что такое программирование - инструмент, который помогает нам делать больше за меньшее время.
Я рекомендую вам попробовать код с другими значениями переменной initialYear, а затем написать комментарий со своим результатом, и я надеюсь, что этот пост поможет вам как-то на вашем пути через программирование.
Увидимся в следующий раз!