JavaScript для детей. Самоучитель по программированию



Pdf көрінісі
бет27/43
Дата20.07.2022
өлшемі6,41 Mb.
#37806
1   ...   23   24   25   26   27   28   29   30   ...   43

Часть I. Основы
landmarks.pop();
"
Дом подруги
"
landmarks.pop();
"
Моя бывшая школа
"
landmarks.pop();
"
Приют для кошек
"
landmarks.pop();
"
Пожарная станция
"
landmarks.pop();
"
Протекающий гидрант
"
landmarks.pop();
"
Мигающий фонарь
"
landmarks.pop();
"
Дорожка к дому
"
landmarks.pop();
"
Мой дом
"
Вот вы и дома!
Заметили, что первый ориентир, который вы поместили 
в массив методом 
push, оказался также последним, который 
вы извлекли методом 
pop? А последний добавленный ориентир 
оказался первым извлеченным? Может показаться, что лучше 
бы первый добавленный элемент и извлекался всегда первым, 
однако извлекать элементы в обратном порядке в некоторых 
случаях удобно.
Такой подход нередко используется в больших програм-
мах — именно поэтому 
push и pop в JavaScript всегда под 
рукой.
!
Среди программистов такой способ работы с элементами называ-
ется «стек». Представьте, что стек — это стопка блинов. Всякий 
раз, когда готов новый блин, его кладут сверху стопки (как метод 
push), и, когда вы берете блин, чтобы его съесть, вы тоже берете 
его сверху (как метод pop). Снятие элементов со стека похоже 
на путешествие назад во времени: последним изымается эле-
мент, который был в стеке первым. То же происходит с блинами: 
последний блин, который вы съедите, — это первый, который был 
приготовлен. На сленге программистов этот способ называется 
«последним вошел, первым вышел», английская аббревиатура LIFO 
(last in, fi rst out). Есть и альтернативный подход — «первым вошел, 
первым вышел», аббревиатура FIFO (fi rst in, fi rst out). Его также 
называют очередью, поскольку таким же образом устроены оче-
реди — первый человек, вставший в очередь, будет первым, кото-
рого обслужат.


3. Массивы
65
Случайный выбор
Используя массивы, можно написать программу, которая выдает случай-
ные варианты из заданного списка (наподобие «шара судьбы»). Однако 
сначала нужно разобраться, откуда нам брать случайные числа.
Использование 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(3.7463463);
3
Math.floor(9.9999);
9
Math.floor(0.793423451963426);
0
Math random
— 
случайное 
число
Math floor
— 
целая часть 
числа


66
Часть I. Основы
Давайте используем оба метода, чтобы получить случайный индекс. 
Нужно лишь умножить 
Math.random() на длину массива и затем округ-
лить полученное число методом 
Math.fl oor(). Например, если в массиве 
четыре элемента, это можно сделать так:
Math.floor(Math.random() * 4);

// может выпасть 0, 1, 2 или 3
При каждом запуске этот код будет возвращать случайное число от 0 
до 3 (включая 0 и 3). Поскольку 
Math.random() всегда возвращает значе-
ние меньше 1, 
Math.random() * 4 никогда не вернет 4 или большее число.
Используя это случайное число как индекс, можно получить случай-
ный элемент массива:
var randomWords = ["Взрыв", "Пещера", "Принцесса", "Карандаш"];
var randomIndex = Math.floor(Math.random() * 4);
randomWords[randomIndex];
"
Пещера
"
С помощью 
Math.fl oor(Math.random() * 4); мы получили случай-
ное число от 0 до 3. Сохранив это число в переменной 
randomIndex, мы 
использовали его как индекс для получения строки из массива 
randomWords.
В сущности, можно сделать этот код короче, избавившись от пере-
менной 
randomIndex:
randomWords[Math.floor(Math.random() * 4)];
"
Принцесса
"
Программа случайного выбора вариантов
Теперь давайте создадим массив с фразами, чтобы случайным образом 
выбирать их с помощью написанного ранее кода. Это и будет наш ком-
пьютерный «шар судьбы»! В комментариях указаны примеры вопросов, 
которые можно задать нашей программе. 
var phrases = [
"Звучит неплохо",
"Да, это определенно надо сделать",
"Не думаю, что это хорошая идея",
"Может, не сегодня?",
"Компьютер говорит нет"
];
// Мне выпить еще молочного коктейля?
Random 
words 
— 
случайные 
слова 
Random index
— 
случайный 
индекс
Phrases 
— 
фразы


3. Массивы
67
phrases[Math.floor(Math.random() * 5)];
"
Не думаю, что это хорошая идея
"
// Мне пора делать домашнюю работу?
phrases[Math.floor(Math.random() * 5)];
"
Может, не сегодня?

Мы создали массив 
phrases, в котором хранятся различные советы
Теперь, придумав вопрос, можно запросить случайный элемент из мас-
сива 
phrases, и полученный совет поможет принять решение!
Обратите внимание: поскольку в массиве с советами пять элементов, 
мы умножаем 
Math.random() на 5. Таким образом, мы всегда получим 
одно из пяти значений индекса: 0, 1, 2, 3 или 4.
Генератор случайных дразнилок
Можно усовершенствовать код выбора вариантов, создав программу, 
которая при каждом запуске генерирует случайную дразнилку!
var randomBodyParts = ["глаз", "нос", "череп"];
var randomAdjectives = ["вонючая", "унылая", "дурацкая"];
var randomWords = ["муха", "выдра", "дубина", "мартышка", "крыса"];
// Выбор случайной части тела из массива randomBodyParts:

var randomBodyPart = randomBodyParts[Math.floor(Math.random() * 3)];
// Выбор случайного прилагательного из массива randomAdjectives:

var randomAdjective = randomAdjectives[Math.floor(Math.random() * 3)];
// Выбор случайного слова из массива randomWords:

var randomWord = randomWords[Math.floor(Math.random() * 5)];
// Соединяем случайные строки в предложение:
var randomInsult = "У тебя " + randomBodyPart + " словно " + 

randomAdjective + " " + randomWord + "!!!";
randomInsult;
"
У тебя нос словно дурацкая выдра!!!
"
У нас есть три массива со словами, и в стро-
ках 

,
 

и 

мы с помощью трех индек-
сов берем из каждого массива по случай-
ному слову. Затем мы склеиваем их, помещая 
результат в переменную 
randomInsult, — 
это и есть готовая дразнилка. В строках 



Достарыңызбен бөлісу:
1   ...   23   24   25   26   27   28   29   30   ...   43




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет