Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Задачи и упражнения по JavaScript. Учебное пособие
.pdf
Операторы
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
