Ник Морган - JavaScript для детей. Самоучитель по программированию
- Название:JavaScript для детей. Самоучитель по программированию
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:2016
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Ник Морган - JavaScript для детей. Самоучитель по программированию краткое содержание
JavaScript для детей. Самоучитель по программированию - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
на путешествие назад во времени: последним изымается эле-
мент, который был в стеке первым. То же происходит с блинами:
последний блин, который вы съедите, — это первый, который был
приготовлен. На сленге программистов этот способ называется
«последним вошел, первым вышел», английская аббревиатура LIFO
(last in, fi rst out). Есть и альтернативный подход — «первым вошел,
первым вышел», аббревиатура FIFO (fi rst in, fi rst out). Его также
называют очередью, поскольку таким же образом устроены оче-
реди — первый человек, вставший в очередь, будет первым, кото-
рого обслужат.
64 Часть I. Основы
Случайный выбор
Используя массивы, можно написать программу, которая выдает случай-
ные варианты из заданного списка (наподобие «шара судьбы»). Однако
сначала нужно разобраться, откуда нам брать случайные числа.
Использование Math.random()
Случайные числа можно генерировать с помощью специального метода
Math.random(), который при каждом вызове возвращает случайное Math random —
число от 0 до 1:
случайное
число
Math.random();
0.8945409457664937
Math.random();
0.3697543195448816
Math.random();
0.48314980138093233
Важно помнить, что Math.random() всегда возвращает число
меньше 1, то есть никогда не возвращает собственно 1.
Если вам нужно число побольше, просто умножьте полученное из ме-
тода Math.random() значение на подходящий коэффициент. Например,
если нужно случайное число от 0 до 10, умножьте Math.random() на 10:
Math.random() * 10;
7.648027329705656
Math.random() * 10;
9.7565904534421861
Math.random() * 10;
0.21483442978933454
Округление с помощью Math.fl oor()
И все же эти случайные значения нельзя использовать как индексы
в массиве, поскольку индексы должны быть целыми числами, а не деся-
тичными дробями. Чтобы исправить этот недостаток, нужен метод
Math.fl oor(), округляющий число до ближайшего снизу целого значе-
Math floor —
ния (по сути, он просто отбрасывает все знаки после запятой).
целая часть
числа
Math.floor(3.7463463);
3
Math.floor(9.9999);
9
Math.floor(0.793423451963426);
0
3. Массивы 65
Давайте используем оба метода, чтобы получить случайный индекс.
Нужно лишь умножить Math.random() на длину массива и затем округ-
лить полученное число методом Math.fl oor(). Например, если в массиве
четыре элемента, это можно сделать так:
Math.floor(Math.random() * 4);
2 // может выпасть 0, 1, 2 или 3
При каждом запуске этот код будет возвращать случайное число от 0
до 3 (включая 0 и 3). Поскольку Math.random() всегда возвращает значе-
ние меньше 1, Math.random() * 4 никогда не вернет 4 или большее число.
Используя это случайное число как индекс, можно получить случай-
ный элемент массива:
var randomWords = ["Взрыв", "Пещера", "Принцесса", "Карандаш"]; Random
var randomIndex = Math.floor(Math.random() * 4);
words —
randomWords[randomIndex];
случайные
"Пещера"
слова
Random index —
случайный
С помощью Math.fl oor(Math.random() * 4); мы получили случай-
индекс
ное число от 0 до 3. Сохранив это число в переменной randomIndex, мы
использовали его как индекс для получения строки из массива randomWords.
В сущности, можно сделать этот код короче, избавившись от пере-
менной randomIndex:
randomWords[Math.floor(Math.random() * 4)];
"Принцесса"
Программа случайного выбора вариантов
Теперь давайте создадим массив с фразами, чтобы случайным образом
выбирать их с помощью написанного ранее кода. Это и будет наш ком-
пьютерный «шар судьбы»! В комментариях указаны примеры вопросов,
которые можно задать нашей программе.
var phrases = [
Phrases —
"Звучит неплохо",
фразы
"Да, это определенно надо сделать",
"Не думаю, что это хорошая идея",
"Может, не сегодня?",
"Компьютер говорит нет"
];
// Мне выпить еще молочного коктейля?
66 Часть I. Основы
phrases[Math.floor(Math.random() * 5)];
"Не думаю, что это хорошая идея"
// Мне пора делать домашнюю работу?
phrases[Math.floor(Math.random() * 5)];
"Может, не сегодня?”
Мы создали массив phrases, в котором хранятся различные советы.
Теперь, придумав вопрос, можно запросить случайный элемент из мас-
сива phrases, и полученный совет поможет принять решение!
Обратите внимание: поскольку в массиве с советами пять элементов,
мы умножаем Math.random() на 5. Таким образом, мы всегда получим
одно из пяти значений индекса: 0, 1, 2, 3 или 4.
Генератор случайных дразнилок
Можно усовершенствовать код выбора вариантов, создав программу,
которая при каждом запуске генерирует случайную дразнилку!
var randomBodyParts = ["глаз", "нос", "череп"];
Random
var randomAdjectives = ["вонючая", "унылая", "дурацкая"];
body part —
var randomWords = ["муха", "выдра", "дубина", "мартышка", "крыса"]; случайная
// Выбор случайной части тела из массива randomBodyParts:
часть тела
var randomBodyPart = randomBodyParts[Math.floor(Math.random() * 3)];
// Выбор случайного прилагательного из массива randomAdjectives:
Random
var randomAdjective = randomAdjectives[Math.floor(Math.random() * 3)];
adjective —
// Выбор случайного слова из массива randomWords:
случайное
прилагатель-
var randomWord = randomWords[Math.floor(Math.random() * 5)];
ное
// Соединяем случайные строки в предложение:
var randomInsult = "У тебя " + randomBodyPart + " словно " +
Random
randomAdjective + " " + randomWord + "!!!";
insult —
randomInsult;
случайная
"У тебя нос словно дурацкая выдра!!!"
дразнилка
У нас есть три массива со словами, и в стро-
ках , и мы с помощью трех индек-
сов берем из каждого массива по случай-
ному слову. Затем мы склеиваем их, помещая
результат в переменную randomInsult, —
это и есть готовая дразнилка. В строках
и мы используем множитель 3, поскольку
и в randomAdjective, и в randomBodyPart
по три элемента. Аналогично в строке мы
умножаем на 5, ведь в randomWords пять
элементов. Обратите внимание, что мы доба-
вили между randomAdjective и randomWord
3. Массивы 67
строку с единственным пробелом. Запустите этот код несколько раз —
при каждом запуске получится новая случайная дразнилка!
ПОПР ОБУ ЙТЕ !
Если хотите сделать все действительно по-умному, замените строку
на вот такую:
var randomWord = randomWords[Math.floor(Math.random() *
randomWords.length)];
В этой программе всегда нужно умножать Math.random() на длину
массива; использование randomWords.length как множителя означает,
что нам не понадобится менять этот код, если длина массива изменится.
Вот еще один способ составления случайной дразнилки:
var randomInsult = ["У тебя", randomBodyPart, "словно",
randomAdjective, randomWord + "!!!"].join(" ");
"У тебя череп словно дурацкая дубина!!!"
В этом варианте каждое слово дразнилки — это отдельный эле-
мент массива, и мы соединяем все эти элементы методом join с раз-
делителем-пробелом. Лишь в одном случае пробел не нужен — между
randomWord и «!!!». В этом случае мы используем оператор +, чтобы сое-
динить строки без пробела.
Что мы узнали
Как мы теперь знаем, массивы JavaScript предназначены для хранения
Читать дальшеИнтервал:
Закладка: