Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задачи и упражнения по JavaScript. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
Операторы
1. Условные выражения определяют, какое действие должно быть выполнено в зависимости от условий, установ­ленных в сценарии. В JavaScript существует три способа со­здания условных выражений:
if используется для выполнения сценария, если опреде-
ленное условие истинно;
if…else используется для выполнения одного сцена-
рия, если условие истинно, и другого, если условие ложно;
switch используется для выполнения одного из не-
скольких сценариев. В общем виде оператор switch записыва­ется следующим образом:
switch(variable) { case value_1: { //блок операторов_1 break; } case value_2: { //блок операторов_2 break; } case value_n: { //блок операторов_n break; } default: { //блок операторов по умолчанию } }
2. JavaScript поддерживает три вида циклов:
while – проверка условия перед каждым выполнением; do..while – проверка условия после каждого выполне-
ния;
41
for – проверка условия перед каждым выполнением, а
также осуществляет дополнительные настройки;
JavaScript использует директивы break и continue для
прерывания циклов.
Специальные значения
В JavaScript, как и в других языках программирования, существуют ключевые слова для некоторых специальных зна­чений. Вот они: undefined, null, NaN, Infinity, -Infinity.
undefined обозначает неопределенность.
var a; alert(a); // undefined
null обозначает 'ничего':
var a=null; alert(a); // null
NaN обозначает не число:
alert(0/0); // NaN
Infinity и -Infinity обозначают соответственно беско- нечность и минус бесконечность:
alert(10/0); // Infinity alert(-10/0); // -Infinity
Все значения в JavaScript, за исключением специальных, содержат набор вспомогательных функций, доступных «через точку». Функции работы со строками описаны в соответству­ющем разделе. Есть методы и у чисел.
number(строка) преобразует переменную (которая пе-
редается через параметр) в число:
var num = Number("321.5");
Чаще всего используется после получения данных с по­мощью функции prompt();
42
toFixed(n) округляет число до n знаков после запятой,
при необходимости добавляет нули до данной длины:
var n = 12.345;
alert( n.toFixed(2) ); // 12.35
alert( n.toFixed(0) ); // 12
alert( n.toFixed(5) ); // 12.34500
alert(12..toFixed(2) ); // 12.00
Целый набор математических функций содержится в классе Math. Одна из самых частых операций с числом – округление действительных чисел. В JavaScript существует целых три функции для этого.
round() округляет число до ближайшего целого:
x=Math.round(20.5) // 21
x=Math.round(-20.5) // -20
floor() возвращает наибольшее целое, меньшее или рав-
ное аргументу:
Math.floor(7.8) //7
Math.floor(-7.8) //-8
ceil() возвращает наименьшее целое, большее или рав-
ное аргументу:
alert( Math.ceil(7.8) ); //8
alert(Math.ceil(-7.8)) ;//-7
Часто используется функция random(), которая генери-
рует случайное число от 0 (включительно) до 1 (не включа­ется).
43
Упражнения
Задание 1
В переменной min лежит число от 0 до 59. Определить, в какую четверть часа попадает это число (в первую, вторую, третью или четвертую).
Задание 2
Переменная num может принимать 4 значения: 1, 2, 3 или 4. Если она имеет значение '1', то в переменную res запи­сать 'зима', если имеет значение '2' – 'весна' и т.д. Решить за­дачу, используя оператор switch.
Задание 3
В переменной day лежит какое-то число из интервала от 1 до 31. Определить, в какую декаду месяца попадает это число (в первую, вторую или третью).
Задание 4
В переменной month лежит какое-то число из интервала от 1 до 12. Определить, в какую пору года попадает этот ме­сяц (зима, лето, весна, осень).
Задание 5
В переменной year хранится год. Определить, является ли он високосным (в таком году есть 29 февраля). Год будет високосным в двух случаях: либо он делится на 4, но при этом не делится на 100, либо делится на 400. Так, годы 1700, 1800 и 1900 не являются високосными, так как они делятся на 100 и не делятся на 400. Годы 1600 и 2000 – високосные, так как они делятся на 400.
44
Задание 6
Создать страницу, которая предлагает пользователю ввести число, а затем выводит кубы всех чисел от 1 до введен­ного числа при условии, что они не превосходят 1000. Вос­пользоваться ꞏ
циклом for; циклом while; циклом do while.
Задание 7
Создать страницу, которая предлагает пользователю ввести число, а затем выводит информацию о четности числа на страницу документа. Для выяснения четности воспользо­ваться оператором:
if … else; оператором ? : оператором switch.
Задание 8
Задать некоторое число, например, 12345. Проверить, что первой цифрой в этом числе являются 1, 2 или 3. Если это так – вывести 'да', в противном случае вывести 'нет'.
Задание 9
Дана строка из 6 цифр. Проверьте, что сумма первых трех цифр равняется сумме вторых трех цифр. Если это так – выведите 'да', в противном случае выведите 'нет'.
Задание 10
Дано число n=1000. Делить его на 2 столько раз, пока ре­зультат деления не станет меньше 50. Какое число получится? Посчитать количество итераций, необходимых для этого, и за­писать его в переменную num.
45
Задание 11
Найти квадратный корень из 379. Результат округлить до целых, до десятых, до сотых.
Задание 12
Найти квадратный корень из 587. Округлить результат в большую и меньшую стороны, записать результаты округ­ления в объект с ключами 'floor' и 'ceil'.
Задание 13
Написать скрипт, который генерирует случайное число между min и max.
Задание 14
Написать скрипт, который генерирует случайное целое между min и max.
Задание 15
Написать скрипт, который выводит на страницу 10 слу­чайных целых чисел.
Задание 16
Вывести на экран таблицу умножения (как в школьной тетради).
Задание 17
Даны три числа. Определить, можно ли из отрезков с та­кими длинами составить треугольник. Определить вид тре­угольника (прямоугольный, тупоугольный, остроугольный), если он существует.
Задание 18
Даны числа min и max. Найти все треугольники с цело­численными длинами сторон от min до max включительно.
46
Задание 19
Треугольники, у которых длины сторон и площадь явля­ются натуральными числами, называются треугольниками Ге­рона. Например, площадь треугольника со сторонами 13, 14 и 15 равна 84.
A. Найти n треугольников Герона.
B. Найти n треугольников Герона, длины сторон каж­дого из которых являются последовательными числами (например, 13, 14, 15).
C. Найти n треугольников Герона, у которых площадь равна периметру.
Задание 20
Написать программу, которая определяет, можно ли из четырех отрезков с данными длинами a, b, c и d составить пря­моугольник.
Задание 21
Дан прямоугольник, длины сторон которого выража­ются целыми числами. Найти количество квадратов (длины сторон каждого квадрата целые), на которые можно разрезать данный прямоугольник при условии, что при разрезании каж­дый раз отрезается квадрат наибольшей площади со стороной, общей стороне текущего прямоугольника.
Задание 22
Найти все прямоугольники с целыми длинами сторон данной целочисленной площади. Например, для площади, равной 12, подходят три прямоугольника 1 × 12, 2 × 6, 3 × 4.
Задание 23
Написать программу для нахождения всех различных прямоугольных параллелепипедов, объем которых равен V, а ребра выражены натуральными числами. Параллелепипеды,
47
получающиеся один из другого, если поменять ребра местами, считаются одинаковыми.
Задание 24
Нарисовать пирамиду, как показано на рисунке, у кото­рой должно быть 20 рядов.
x xx xxx xxxx xxxxx
Задание 25
Нарисовать пирамиду, как показано на рисунке, вос­пользовавшись циклом for.
xx xxxx xxxxxx xxxxxxxx xxxxxxxxxx
Задание 26
С помощью двух вложенных циклов нарисовать следу­ющую пирамидку:
1 22 333 4444 55555 666666 7777777 88888888 999999999
48
Задание 27
Три натуральных числа a, b и c образуют пифагорову тройку, если са𝑏. Пифагорова тройка называется ос­новной, если наибольший общий делитель ее чисел равен еди­нице. Например, 3, 4, 5 – основная тройка, 6, 8, 10 – производ­ная тройка. Найти все основные пифагоровы тройки, числа в которых не превышают данное число max.
Задание 28
Написать программу нахождения всех решений на от­резке [2;100] уравнения 𝑥𝑦𝑧, n – известное натураль­ное число.
Придумать решение, которое работает за O(n2), а лучше за O(n) операций.
2.4. Массивы
Массив – это упорядоченная коллекция значений. Мас­сивы в языке JavaScript являются нетипизированными, а эле­менты одного и того же массива могут иметь разные типы, в том числе могут быть объектами или другими массивами.
Массивы в JavaScript являются динамическими: они мо­гут менять размер по мере необходимости.
Многомерный массив – это массив, значениями кото­рого являются другие массивы.
Создание массивов
var empty = []; // Пустой массив
var misc = [ 1.1, true, "a"]; // 3 элемента разных типов var arr = [ [1,2,3], [4,5,6], [7,8,9] ]; //3 массива внутри внеш-
него массива var arrObj = [[1,{x:1, y:2}], [2, {x:3, y:4}]]; // 2 массива внутри,
содержащие объекты
49
var мass = new Array(new Array("Один", "Два", "Три"), new Array("Четыре", "Пять", "Шесть"));
Другой способ создания массива состоит в вызове кон­структора Array(). Вызвать конструктор можно тремя раз­ными способами:
var arr = new Array(); // Пустой массивvar arr = new Array(10); // Пустой массив указанной
длины.
var arr = new Array(5, 4, 3, 2, 1, "тест"); // Аргументы
конструктора являются элементами нового массива. Число-
вых элементов должно быть два или более или возможен
один нечисловой элемент.
var мass = new Array(new Array("Один", "Два", "Три"),
new Array("Четыре", "Пять", "Шесть"));
Методы класса Array:
join([разделитель]) преобразует все элементы массива
в строку:
var arr = [1,2,3]; arr.join(); // '1,2,3’
reverse() меняет порядок следования элементов в мас-
сиве на обратный:
var x=[1,2,3,true,100,-6]; x.reverse(); //-6,100,true,3,2,1
sort([функция]) сортирует элементы в исходном мас-
сиве. Если не передать функцию сравнения – сортирует эле­менты как строки:
var x=[99,-6,205,1];
x.sort(); //-6,1,205,99
Функция, передаваемая sort, должна иметь два аргу­мента. Она должна возвращать: положительное значение,
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]