русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

if (условие) действие_1 else действие_2


Дата добавления: 2015-07-09; просмотров: 720; Нарушение авторских прав


if (условие_1) действие_1 else if (условие_2) действие_2… else действие_n

Оконечную часть оператора, начиная с else можно опустить. Если при значении условия true или false требуется выполнить несколько действий, то следует использовать фигурные скобки.

Примеры:

· if (a==5) b=20;

· if (a==5) b=20 else b=10;

· if (a==5) {b=20; c=20}else {b=30; c=40}

· if (a==5) b=10 else
{if (a==6) b=20 else {if (a==7) b=30 else b=40}}.

Другой возможностью построения ветвления программы является опе­ратор switch, имеющий формат, показанный на рис. 3.20,а.

  switch (имя_переменной) { case значение_1: некоторый_код_1 break; . . . case значение_n: некоторый_код_n break; default: код_по_умолчанию break; } а)   switch (a) { case 5: b=20; c=20; break; . . . case 6: b=30; c=40; break; case 7: b=40; c=50; break; default: b=50; c=60 break; } б)

Рис. 3.20. Формат оператора switch (а) и пример применения оператора (б)

В этом коде в заголовке switch задано им переменной любого типа. В строках с заголовками case перечислены возможные значения переменной, указанной в заголовке switch. Если значение переменной совпадает с одним из возможных, то выполняется соответствующий код, если не совпадает ни с одним из них, то выполняется код по умолчанию. Слово break является окончанием исполняемых кодов и означает завершение кода и выход из оператора switch.

На рис. 3.20,б показан пример применения оператора. Проверяемой переменной является переменная a, для которой предусмотрены значения 5, 6 и 7. В первом случае переменные b и c принимают значения 20, во втором – 30 и 40, в третьем – 40 и 50 соответственно. Во всех остальных случаях они принимают значения 50 и 60 соответственно. В случае необходимости задать список значений проверяемой переменной, для которых исполняется один и тот же код, несколько строк с заголовками case могут следовать непосредственно друг за другом.



 

3.2.5.4. Построение циклов

Циклические операторы обеспечивают повторение выполнения множества операторов, называющихся телом цикла. В каждом правильно построенном цикле присутствует тест завершения цикла, а в теле цикла должен быть оператор, который обеспечивает получения положительного результата теста, т.е. сигнал завершения цикла. В зависимости от взаимного расположения теста завершения и тела цикла различают циклы с претестом и посттестом. Кроме того различают циклы с известным и неизвестным числом повторений.

Для построения циклов с известным числом повторений используется оператор for, формат которого показан на рис. 3.21,а. Счётчик – это любая переменная, которая предназначена для подсчёта числа повторений цикла, начало – начальное число, которое записывается в счётчик перед началом выполнения цикла, символ Åозначает любой знак из набора "=, >, >=, <, <=", конец – конечное число, которое может быть записано в счётчик и ограничивает число повторений цикла. Счётчик может инкрементироваться командой счётчик ++ или декрементироваться командой счётчик -- .

 

for (счётчик=начало; счётчикÅконец; счётчик ++)

{тело цикла}

а)

for (a=1; a<=100; a++){b[a]=0}

б)

Рис. 3.21. Оператор for : формат (а) и пример применения (б)

Пример применения оператора for показан на рис. 3.21,б. Приведённый код записывает нули в 1 – 100 элементы массива b.

В случаях массива переменной длины и работы с коллекциями объектов более удобным является оператор цикла for . . . in, формат которого показан на рис. 3.22,а. Пример применения оператора for . . . in показан на рис. 3.22,б.

 

for (index in arrayName){тело цикла}

а)

var elementIndex;

var b=new Array(1,2,3,4)

. . .

for (elementIndex in b){b[elementIndex]=0}

б)

Рис. 3.22. Оператор for : формат (а) и пример применения (б)

На рис. 3.22,а index – любая объявленная переменная целого типа,
arrayName – имя массива. На рис 3.22,б объявлены переменная elementIndex и массив b. В цикле for . . . in во все элементы массива b записываются нули, изменение индекса элементов массива и тест завершения цикла выполняются автоматически.

Если число повторений цикла неизвестно, то применяются операторы while и do . . . while, формат которых показан на рис. 3.23,а, а применение – на рис. 3.23,б. Оператор while организует цикл с претестом, а do . . . while – с посттестом.

 

while (условие) {тело цикла}

do {тело цикла} while (условие)

а)

while (i<=100) {b[i]=0; i++}

do {b[i]=0; i++} while (i<=100)

б)

Рис. 3.23. Операторы while и do . . . while: форматы (а) и примеры применения (б)

В первом случае при исходном значении i больше 100 тело цикла не выполнится ни разу, во втором будет сделана попытка выполнить тело цикла хотя бы один раз. Это попытка должна привести к ошибке выполнения.

 

 

3.2.5.5. Работа с массивами

Работа с массивами включает в себя следующие операции: создание массивов, переопределение массивов, запись данных в массив и чтение данных из массивов.

Создание массива осуществляется, как было указано в разделе 3.2.2, оператором new. Операция создания (объявления) массива может быть выполнено как непосредственно после заголовка <script>так и в каждой функции скрипта. Массив, объявленный в начале скрипта, становится доступным во всех его функциях и внутри них может быть переопределён по размеру и подвергнут изменению значений элемента массива.

В простейшем случае массив можно просто объявить без указания размерности. В более сложных случаях массив можно объявить с указанием размерности в явном виде и даже с указанием размерности в неявном виде и инициализацией значений элементов массива. Примеры объявления массива показаны в табл. 3.12.

Таблица 3.12. Способы создания массивов

 

Оператор создания массива Комментарий
var MyArray1 = new Array(); создан массив без объявления размернос­ти и инициализации значений
var MyArray1 = new Array(10); создан массив с объявлением размернос­ти в явном виде без инициализации значений
var MyArray2 = new Array(1,2,3); создан массив из трёх числовых элементов с неявным обозначением размерности и инициализацией элементов значениями 1,2,3
var MyArray1 = new Array(); MyArray1[0]=1; MyArray1[1]=2; MyArray1[2]=3; Создан массив без объявления размерности с последующим объявлением размерности и инициализацией элементов массива оператором присваивания.

 

Язык JavaScript поддерживает только одномерные массивы, но позволяет внутри каждого элемента массива создать вложенный массив (рис. 3.24).

 

var MyArray1 = new Array(); var MyArray1[0]=new Array(3); var MyArray1[1]=new Array(); MyArray1[2]=new Array(1,2,3); MyArray1[0][0]="A1"; MyArray1[0][1]="A2"; MyArray1[0][2]="A3"; MyArray1[1][0]="10"; MyArray1[1][1]="11"; MyArray1[1][2]="12"; Создан массив без объявления размерности Первый элемент объявлен массивом из трёх элементов без их инициализации Второй элемент объявлен массивом без указания размерности и инициализации элементов Третий элемент объявлен массивом из 3 элементов и их инициализацией Объявлена размерность первого вложенного массива посредством инициализации значений элементов Объявлена размерность второго вложенного массива посредством инициализации значений элементов  

Рис. 3.24. Создание вложенного массива 3´3

В результате выполнения кода, показанного на рис. 3.24, будет создан двумерный массив, который можно рассматривать как таблицу из трёх строк:

 

"А1", 10, 1

"А2", 20, 2

"А3", 30, 3

 

Объект Array позволяет выполнить над массивом множество операций, показанное в табл. 3.13.

Таблица 3.13. Операции, выполняемые над массивами

 

Оператор, пример Пояснение
Имя_массива.length Var MyArray = new Array (1,2,3,5) i = MyArray.length Измерение длины (числа элементов) массива Результат: i = 4
Имя_массива_1.concat(Имя_массива_2) Var MyArray = new Array (1,2,3,4) Var MyArray1 = new Array (5,6,7,8) MyArray.concat(MyArray1) Объединение двух массивов Результат: MyArray содержит восемь элементов: 1,2,3,4,5,6,7,8
Имя_копии=Имя_массива.slice(n1,n2) Var MyArray = new Array (1,2,3,4,5,6,7) Var MyArray1 = new Array () MyArray1 = MyArray.slice(3,7) Копирование части массива с символа № n1 по символ № n2 Результат: MyArray1 содержит три элемента: 4,5,6
Имя_строки=Имя_массива.join("тег") Var MyArray = new Array ("Борис","Нина") Var MyArray1 MyArray1 = MyArray.join("<br>") Объединение элементов массива в строку через тег-разделитель Результат: MyArray1 имеет значение: "Борис<br>Нина<br>"
Имя_массива.sort() Var MyArray = new Array (2,7,6,4,5,3,1) Var MyArray1 = new Array () MyArray1 = MyArray.sort() Расстановка элементов массива в прямом порядке Результат: MyArray1 содержит элементы: 1,2,3,4,5,6,7
Имя_массива.reverce() Var MyArray = new Array (2,7,6,4,5,3,1) Var MyArray1 = new Array () MyArray1 = MyArray.reverce() Расстановка элементов массива в обратном порядке Результат: MyArray1 содержит элементы: 7,6,5,4,3,2,1

 

 

3.2.5.6. Обработка строковых данных

Строка – это набор символов, каждый из которых имеет свой код (номер в таблице кодировки) и номер позиции в строке (индекс). Наиболее просто строка создаётся оператором описания с инициализацией значения переменной:

 

var Имя_переменной = "значение"

 

Например, MyString = "Hallo, World!"[2]

Попытка создания переменной как нового встроенного объекта оператором new приведёт к необходимости работы не со значением строковой переменной, а с указателем на неё.

Простейшие методы работы со строками похожи на методы работы со строками в языках Visual Basic и Pascal, однако существуют методы, которые требуют использования регулярных выражений. Множество простейших методов работы со строками приведено в табл. 3.14.

Таблица 3.14. Простейшие операции, выполняемые над строками

 

Оператор, пример Пояснение
Имя_строки.length Var MyString = "Hello" i = MyString.length Измерение длины (числа символов) в строке Результат: i = 5
Имя_строки.charAt(индекс_символа) Var MyString = "Hello" Var i i = MyString.charAt(1) Возврат символа строки, на который указывает индекс_символа Результат: i = "e"
Имя_строки.charCodeAt(индекс_символа) Var MyString = "Hello" Var i i = MyString.charCodeAt(1) Возврат кода символа строки, на который указывает индекс_символа Результат: i = 101
String.fromCharCode(список кодов) Var MyString = ""; MyString = String.fromCharCode(65,66,67) Создание строки из списка кодов символов Результат: MyString = "ABC"
Имя_строки.IndexOf("подстрока") Var MyString = "В курятник лиса забралась. Курицу стащила лиса" Var FoxPosition FoxPosition = MyString.IndexOf("лиса") Поиск позиции первого вхождения подстроки в строку Результат: FoxPosition = 11
Имя_строки.LastIndexOf("подстрока") Var MyString = "В курятник лиса забралась. Курицу стащила лиса" Var FoxPosition FoxPosition = MyString.LastIndexOf("лиса") Поиск позиции последнего вхождения подстроки в строку Результат: FoxPosition = 42
Имя_строки.substr(start,len)(для броузеров IE3+ и NN2+)   Var MyString = "JavaScript" Var MyString1 MyString1 = MyString.substr(0,4) Копирование фрагмента заданной строки начинающегося с позиции start длиной len Результат: MyString1 = "Java"
Имя_строки.substring(start,stop+1) (для броузеров IE и NN старших версий) Var MyString = "JavaScript" Var MyString1 MyString1 = MyString.substring(0,4) Копирование фрагмента заданной строки начинающегося с позиции start, заканчивающегося в позиции stop, с добавление символа "конец строки" Результат: MyString1 = "Java¶"
   
Имя_строки.toLowerCase() Var MyString = "JavaScript" Var MyString1 MyString1 = MyString.toLowerCase() Перевод символов строки в нижний регистр Результат: MyString1 = "javascript"
Имя_строки.toUpperCase() Var MyString = "JavaScript" Var MyString1 MyString1 = MyString.toUpperCase() Перевод символов строки в верхний регистр Результат: MyString1 = "JAVASCRIPT"

 

Кроме методов, перечисленных в табл. 3.14, существуют дополнительные методы, которые могут работать по-разному, обрабатывая строки без применения и с применением регулярных выражений – шаблонов строк, состящих из обычных и управляющих символов (табл. 3.16). Регулярные выражения выделяются символами "/" и создаются объектом RegExp, который называется конструктором регулярных выражений. Свойства объекта RegExp приведены в табл. 3.15, перечень управляющих символов регулярных выражений приведён в табл. 3.16.

Таблица 3.15. Свойства конструктора регулярных выражений

 

Символ Пояснение
g Глобальное соответствие (поиск всех фрагментов строки, соответствующих регулярному выражению
i Пренебрежение регистром символов
m Многострочный флажок, определяющий что символы ^ и $ могут означать начало и конец как одной строки, так и группы строк (поддерживается только IE 5.5+, NN 6+ и более старшими версиями этих броузеров

 

Таблица 3.16. Важнейшие управляющие символы регулярных выражений в языке JavaScript

Символы Пояснение Пример
/ … / Выделение регулярного выражения /zo/
(…) Объединение простых символов в один сложный (es) – это единый es
\ Пометка следующего знака как специального знака, литерала, обратной ссылки или восьмеричного escape-знака /\n/ – новая строка
* Повторение предшествующего символа несколько раз (в т.ч. и ноль раз) /zo*/ – это z, zo, zoo, zooo и т.д.
+ Повторение предшествующего символа несколько раз (но не ноль раз) /zo+/ – это zo, zoo, zooo и т.д.
? Повторение предшествующего символа ноль или один раз /do(es)+/ – это do или does
{n} Повторение предшествующего символа n раз /о{2}/ – это "oo"
{n,} Повторение предшествующего символа n и более раз /о{2,}/ – это "oo", "ooo" и т.д.
{n,m} Повторение предшествующего символа не менее n и не более m раз /о{2,5}/ – это "oo", "ooo", "оооо" и "ооооо"
Квалификатор ? Указание на нежадный шаблон, задающий минимально возможную часть заданной подстроки /о+?/ – это "o" в ком­бинации "ооооо"  
\s или [\f\n\r\t\v] \S или [^\f\n\r\t\v] . [\s\S] Символ "пробел", "табуляция", "подача бланка" Любой символ, не являющийся пробелом   Любой отдельный знак кроме \n Отдельный знак, включая \n  
x|y Один из символов x или y D|d – это "D" или "d"
[abc]   [a-z] Набор знаков включения из списка   Набор знаков включения из диапазона [abc] – это и "а", и "b", и "c" [a-z] – всё, что угодно из диапазона a – z
[^abc]   [^a-z] Набор знаков исключения из списка   Набор знаков исключения из диапазона [^abc] – любой знак кроме a,b,c [^a-z] – все, что угод­но, но не из диапазона a – z
\b Граница слова /er\b/ – это "er" в never, но не в verb
\B Не граница слова /er\B/ – это "er" в verb, но не в never
\cx Комбинация Ctrl с любой символьной клавишей \cM – это Ctrl–M
\d Знак цифры из набора [0-9]  
\D Любой знак кроме цифры  
\r Возврат каретки  
\t или \x09 или \cl \v или \x0b или /сK Горизонтальная табуляция   Вертикальная табуляция  
\W или [A-Za-z0-9_] Любой знак в слове, включая подчёркивание  
\w или [^A-Za_z0-9_] Любой знак любой знак кроме цифры и буквы  
Примечания: 1. Управляющие символы +, *, ?, {n}, {n,}, {n,m} называются квалификаторами

 

Дополнительными методами, действие которых зависит от применения регулярных выражений являются:

· split() – разбивка строки на массив подстрок;

· match() – вычисление массива позиций в строке заданной подстроки.

· replace() – замена в строке искомой подстроки заданной подстрокой;

· search() – вычисление позиции заданной подстроки в строке.

Иллюстрация действия этих методов приведена в табл. 3.17, в которой приведены пары примеров, первый из которых демонстрирует действие метода без применения регулярного выражения, а второй – с применением.

Метод split() позволяет разбить строку на массив строк. В простом случае данные строки однородны и представляют собой названия фруктов. Параметр разбивки – символ ",", указывающий на необходимость выделения в элементы массива фрагментов строки от начала до первой запятой, от первой запятой до втрой запятой и от второй запятой до конца строки. В сложном случае названия фруктов в строке перемешаны с их ценами. Для получения экономного кода составляющего массив названий фруктов применяется регулярное выражение /[^a-z]+/i,в котором I указывает на необходимость игнорирования регистра, комбинация символов [^a-z]указывает на исключение из списка вырезающихся символов латинских букв, а символ "плюс" – на повторение предшествующих символов несколько, но не ноль раз. Поскольку в строке MyString встречаются только буквы, цифры и запятые, то в числе вырезающихся символов остаются только цифры и запятые. Именно они и будут вырезаны из строки MyString при копировании её в массив MyTextArray.

Таблица 3.17. Дополнительные операции, выполняемые над строками

Оператор, пример Пояснение
Имя_строки.split(параметр_разбивки) Var MyString = "Аpple,Banana,Orange" Var MyTextArray = MyString.split(",") Var MyString = "Аpple,100,Banana,50,Orange,75" Var MyRegExp = /[^a-z]+/i Var MyTextArray = MyString.split(MyRegExp) Разбивка строки на массив строк Результат: MyTextArray содержит три элемента: "Аpple", "Вanana", "Orange". Результат: MyTextArray содержит три элемента: "Аpple", "Вanana", "Orange".
Имя_строки.replace(s1,s2) Var MyString = "Hello, Jon! How are you, Jon?" Var MyString1 = MyString.replace("Jon","Bob") Var MyString = "Hello, Jon! How are you, Jon?" Var MyRegExp = /\bJon\b/gi Var MyStr = MyString.replace(MyRegExp,"Bob") Копирование строки с заменой в копии подстроки s1 подстрокой S2. Результат: MyString = "Hello, Jon! How are you, Jon?" MyString1 = "Hello, Bob! How are you, Jon?" Результат: MyString = "Hello, Jon! How are you, Jon?" MyString1 = "Hello, Bob! How are you, Bob?"
Имя_строки.search(S) Var MyString = "Hello, Jon! How are you, Jon?" Var i = MyString.search("Jon") Вычисление позиции подстроки s в строке Результат: i = 7
Имя_строки.match(s) Var MyString = "Hello, Jon! How are you, Jon?" Var MyStringArray = MyString.search("Jon") Без регулярных выражений не имеет смысла     Возврат массива строк, совпадающих со подстрокой s   Результат: Массив MyStringArray содержит два элемента: "Jon", "Jon"

 

 


[1] Это приводит к путанице. В дальнейшем термин DOM будет использоваться применительно к стандартной объектной модели документа, определённой стандартом W3C.

[2] Традиционное приветствие с вывода которого начинается обучение программированию в большинстве учебников по алгоритмическим языкам.



<== предыдущая лекция | следующая лекция ==>
If (условие) действие | Ход работы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.326 сек.