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

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

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
Область видимости переменных
Глобальные переменные – это переменные, объявлен­ные вне функции. Глобальные переменные видны в любой ча­сти программы, включая функции. Локальные переменные – это переменные, объявленные внутри функции. Локальные переменные видны только внутри тела функции. Если имя ло­кальной переменной совпадает с именем глобальной перемен­ной, то все операции внутри функции осуществляются с ло­кальной переменной, а значение глобальной не изменяется. Механизм, регулирующий такое поведение, называется обла­стью видимости переменных.
var v= "Глобальная переменная";
function f() {
var v = "Локальная переменная";
document.write(v + "<br/>"); //Локальная переменная
}
f();
document.write(v); // Глобальная переменная
Упражнения
Задание 1
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число (то есть ближай­шее простое число, большее данного, – параметр функции). Например, если дано число 11, то значение функции должно быть 13, если дано 23, то значение 29. Если входное данное не является простым числом, то есть не выполняется условие, то значение функции считать равным нулю.
Задание 2
Составить функцию, значением которой было бы наименьшее общее кратное всех натуральных чисел от 1 до n включительно (n – параметр функции).
61
Задание 3
Составить функцию, значением которой было бы наименьшее натуральное число, которое можно представить в виде суммы кубов двух натуральных чисел не единственным способом.
Задание 4
Создать функцию, которая подсчитывает среднюю раз­ницу в возрасте между матерями и их детьми. Подумать, как оптимально задать исходные данные.
Задание 5
Целые числа a1, a2, …, ak, k > 2, называются взаимно про­стыми, если наибольший общий делитель этих чисел равен единице.
А. Составить функцию, которая определяет, являются ли данные два натуральных числа взаимно простыми.
В. Составьте функцию, которая проверяла бы, являются ли три числа взаимно простыми.
Задание 6
Составить функцию, значением которой было бы наименьшее общее кратное всех нечетных натуральных чисел от 1 до n включительно (n – параметр функции).
Задание 7
Числа Мерсенна – числа вида Mn = 2n – 1, где n – нату­ральное число. Составить функцию, которая находит первые n чисел Мерсенна.
62
Задание 8
Запись вида: 𝑛𝑝
𝑝
…𝑝
, где 𝑝– простые числа,
𝑘 – натуральные числа, i = 1; 2; 3; ...; m – называется канони-
ческим разложением натурального числа «n».
Составить функцию, которая находит каноническое раз­ложение данного натурального числа.
Задание 9
Составить функцию, которая проверяет, можно ли за­данное натуральное число представить в виде произведения двух простых чисел.
Задание 10
Составить функцию, которая проверяет, можно ли за­данное натуральное число представить в виде произведения трех простых чисел.
Задание 11
Составить функцию, которая проверяет, можно ли за­данное натуральное число представить в виде квадрата (куба) какого-либо простого числа.
Задание 12
Создать функцию, которая принимает параметром число от 1 до 7, а возвращает день недели на русском языке.
Задание 13
Дан массив чисел. Создать из него новый массив, где останутся только положительные числа. Для этого создать вспомогательную функцию isPositive(), которая параметром будет принимать число и возвращать true, если число положи­тельное, и false – если отрицательное.
63
Задание 14
Создать функцию arrayFill(), которая будет заполнять массив заданными значениями. Первым параметром функция принимает значение, которым заполнять массив, а вторым ­сколько элементов должно быть в массиве. Например, arrayFill('x', 5) сделает массив ['x', 'x', 'x', 'x', 'x'].
Задание 15.
Написать две функции, reverseArray() и reverseArrayInPlace(). Первая получает массив как аргумент и выдает новый массив с обратным порядком элементов. Вторая меняет порядок элементов на обратный в том массиве, кото­рый был ей передан в качестве аргумента.
2.6. Cтроки в JavaScript
Создать строку можно с помощью двойных или одинар­ных кавычек:
var Str1 = "Строка 1";
var Str2 = 'Строка 2';
Эти переменные имеют тип String. Кроме того, в JavaScript есть класс String. Объекты этого класса, как обычно, созда­ются с помощью операции new.
var Str3= new String(“Строка3”);
Переменная Str3 имеет тип Object. Однажды созданную строку нельзя изменить. Для изменения строковой перемен­ной применяется присваивание измененной строки. Ко всем переменным, объявленным выше, можно применять методы встроенного класса String.
Методы класса String
charAt(индекс) извлекает символ с указанным индексом:
var Str = "Hello, world";
var c=Str.charAt(0)); // "Н"
64
charCodeAt(индекс) возвращает код символа с указан-
ным индексом:
var Str = "Hello, world";
window.alert(Str.charCodeAt(0)); // 72
fromCharCode(код1,…,кодn) возвращает строку, состо-
ящую из символов с указанными кодами:
var Str = String.fromCharCode(72,69,76,76,79);
document.write(Str); // "НELLO"
indexOf(подстрока [,индекс]) возвращает номер пози-
ции первого вхождения подстроки в текущей строке с пози­ции, указанной параметром индекс. Если второй параметр не задан, то поиск начинается с начала строки. Если подстрока не найдена, возвращается значение −1:
var Str = "Hello, world";
document.write(Str.indexOf("ll")); // 2
document.write(Str.indexOf("ll", 5)); // -1
lastIndexOf(подстрока [,индекс]) работает аналогично
предыдущему методу, возвращая при этом номер позиции по­следнего вхождения подстроки:
var Str = "Hello, world";
document.write(Str.lastIndexOf("o")); // 8
toUpperCase() преобразует символы строки в символы
верхнего регистра:
var Str = "Hello, world";
Str = Str.toUpperCase(); // "HELLO, WORLD"
toLowerCase() преобразует символы строки в символы
нижнего регистра:
var Str = "Hello, world";
Str = Str.toLowerCase(); // "hello, world"
substr(индекс[,длина]) в новую строку записывает фраг-
мент исходной строки заданной длины, начиная с символа с
65
указанным индексом. Если длина не указана, то фрагмент бе­рется до конца исходной строки:
var Str = "Hello, world";
var st=Str.substr(0, 5); // "Hello"
substring(индекс1, индекс2) в новую строку записывает
фрагмент исходной строки, начиная с символа с индексом1 и заканчивая символом, предшествующим символу с индек­сом2:
var Str = "Hello, world";
var str1=Str.substring(2,4); document.write(str1); // "ll"
split(разделитель [,размер]) возвращает массив. Строка
разбивается по разделителю на отдельные элементы массива:
arr = "a,b,c".split(',') ; // массив ["a", "b", "c"] Второй параметр ограничивает его размер:
var str ="a b с d";
str.split(' ',2) ; // ["a", "b"] Кроме того, строки поддерживают три метода, использующие регулярные выражения.
search(регулярное выражение) определяет номер пози-
ции первого вхождения подстроки, совпадающей с регуляр­ным выражением; если соответствие не найдено, возвращает -1:
var res = "JavaScript".search(/scr/i); // 4
match(регулярное выражение[,флаг]) возвращает мас-
сив с результатами поиска в строке, совпадающими с регуляр­ным выражением:
var p = new RegExp("200[14]");
var Str = "2000, 2001, 2002, 2003, 2004";
var Mass = [];
Mass = Str.match(p);
for (var i=0, c=Mass.length; i<c; i++)
document.write(Mass[i] + "<br>");// 2001
Если создать регулярное выражение с флагом g
66
var p = new RegExp("200[14]", "g"); то результатом этого кода будет
2001
2004
replace(строка1|регулярное выражение, строка2) воз-
вращает новую строку, которая является результатом замены строка1 на строка2:
var str = "тест еще тест";
var str1=str.replace("тест","прошел") ;
document.write(str1); // "прошел еще тест"
Для указанной замены по всей исходной строке исполь­зуют регулярное выражение c флагом "g":
var str1=str.replace(new RegExp("тест",'g'),"прошел”); //
"прошел еще прошел"
Упражнения
Задание 1
С помощью цикла for сформировать строку '123456789' и записать ее в переменную str.
Задание 2
С помощью цикла for сформировать строку '987654321' и записать ее в переменную str.
Задание 3
С помощью цикла for сформировать строку '-1-2-3-4-5­6-7-8-9-' и записать ее в переменную str.
Задание 4
Дана строка 'aaa@bbb@ccc'. Заменить все @ на '!' с по­мощью стандартных функций класса String.
67
Задание 5
Дана строка 'aaa bbb ccc'. Вырезать из нее слово 'bbb' тремя разными способами (использовать substr, substring, slice).
Задание 6
В переменной date лежит дата в формате '2025-12-31'. Преобразовать эту дату в формат '31/12/2025'.
Задание 7
В переменной date лежит дата в формате '2025-12-31'. Преобразовать эту дату в формат '31.12.2025'.
Задание 8
Дана строка 'я изучаю javascript!'. Используя стандарт­ные функции класса String, решить следующие задачи:
А. Найти количество символов в этой строке.
B. Вырезать из нее слово 'изучаю' всеми возможными способами.
C. Найти позицию подстроки 'изучаю'.
Задание 9
Дана строка 'Я-изучаю-javascript!'. Заменить все дефисы на '!'.
Задание 10
Дана строка 'я изучаю javascript!'. Используя метод split, решить следующие задачи:
A. Записать каждое слово этой строки в отдельный эле­мент массива.
B. Записать каждый символ этой строки в отдельный элемент массива.
Задание 11
Преобразуйте первую букву строки в верхний регистр.
68
Задание 12
Преобразуйте первую букву каждого слова строки в верхний регистр.
Задание 13
Дана строка, например '123456'. Сделайте из нее '214365'.
Задание 14
Дана переменная str, в которой хранится какой-либо текст. Если количество символов этого текста больше n, то в переменную res записать первые n символов строки str и в ко­нец добавить троеточие '...'. В противном случае в перемен­ную res записать содержимое переменной str.
Задание 15
Ввести строку с помощью метода prompt(). Во введен­ной строке подсчитать количество гласных букв.
Задание 16
Подсчитать количество слов во введенной строке, найти длину максимального слова, минимального слова и среднюю длину слов. Предусмотреть возможность присутствия в тексте нескольких пробелов и знаков препинания.
Задание 17
Слова строки разбить по двум массивам по принципу четного или нечетного количества букв в слове, используя пробел в качестве разделителя между словами.
Задание 18
Дана строка символов, например, 'abcde'. Проверить, что первым символом этой строки является буква 'a'. Если это так – вывести 'да', в противном случае – 'нет'.
69
Задание 19
Дана строка. Она может начинаться с http:// или не начи­наться. Пример такой строки 'http://phphtml.net'. Проверить то, что строка начинается с http://. Если это так – вывести 'да', в
противном случае – 'нет'.
2.7. Регулярные выражения
Регулярные выражения представляют собой шаблон, ко­торый используется для поиска или модификации строк.
Простейшее регулярное выражение можно определить двумя способами:
1) литералы регулярных выражений задаются в виде
символов, заключенных между двумя косыми чертами, кото­рые называются ограничителями регулярных выражений:
var myExp = /hello/;
2) представляются объектами класса RegExp и могут
быть созданы посредством конструктора RegExp():
var myExp = new RegExp("hello");
Ограничители в регулярных выражениях нужны для того, чтобы после них писать модификаторы, определяющие способы поиска шаблона по строке. В случае создания регу­лярного выражения как объекта класса RegExp используют конструктор с двумя параметрами, второй из них является мо­дификатором.
Модификаторы
g – включает режим глобального поиска и замены по всему тексту. Без указания этого свойства выбирается только первая подстрока. Создание такого регулярного выражения выглядит следующим образом:
var exp = /hello/g;
var exp = new RegExp("hello", 'g');
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]