Вызов операторов с присваиванием — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Вызов операторов с присваиванием

2018-01-14 126
Вызов операторов с присваиванием 0.00 из 5.00 0 оценок
Заказать работу

Часто нужно применить оператор к переменной и сохранить результат в ней же, например:

n = n + 5;
d = d * 2;

Этот синтаксис можно сократить при помощи совмещенных операторов: +=, -=, *=, /=, >>=, <<=, >>>=, &=, |=, ^=, вот так:

i = 2;
i += 5; // i=7, то же что i = i + 5

 

i *= 2; // i=14, то же что i = i * 2

Все операторы присваивания имеют очень низкий приоритет, т.к. должны выполняться после остальных вычислений.

 

Вопрос №23. Арифметические операторы. Операторы инкремента и декремента.

Арифметические операторы

Базовые арифметическими операторы знакомы нам с детства - это плюс +, минус -, умножить *, поделить /.

Например:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

 

  alert(2 + 2); // 4

Или чуть сложнее:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

 

  var i = 2;
   

 

  i = (2 + i) * 3 / i;
   

 

  alert(i); // 6

Более редкий арифметический оператор% интересен тем, что никакого отношения к процентам не имеет. Его результат для a % b - это остаток от деления a на b. Например:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

 

  alert(5 % 2); // 1, остаток от деления 5 на 2
  alert(8 % 3); // 2, остаток от деления 8 на 3

 

  alert(6 % 3); // 0, остаток от деления 6 на 3

Инкремент/декремент: ++, --

Одной из наиболее частых операций в JavaScript, как и во многих других языках программирования, является увеличение или уменьшение переменной на единицу.

Для этого существуют даже специальные операторы:

  • Инкремент ++ увеличивает на 1:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

 

  var i = 2;
  i++; // делает i = i + 1, но короче.

 

  alert(i); // 3
  • Декремент -- уменьшает на 1:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

 

  var i = 2;
  i--; // делает i = i - 1, но короче.

 

  alert(i); // 1

Инкремент/декремент можно применить только к переменной.
Код 5++ даст ошибку.

Вызывать эти операторы можно не только после, но и перед переменной: i++ (называется «постфиксная форма») или ++i («префиксная форма»).

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

  1. Меняют значение переменной.
  2. Возвращают результат.

Разница между постфиксной и префиксной формами заключается в последовательности этих шагов.

Посмотрим подробнее, на примере:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

 

  var i = 1;
  var a = ++i; // (*)

 

   
  alert(a); // 2

В строке (*) вызов ++i увеличит переменную (шаг 1), а затем вернет ее значение в a (шаг 2).

Постфиксная же форма делает шаги наоброт: i++ сначала возвращает значение (шаг 2), а потом меняет переменную (шаг 1). В результате a получит старое значение:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

 

  var i = 1;
  var a = i++; // (*)

 

   
  alert(a); // 1

Инкремент/декремент можно использовать и в выражениях. При этом он имеет более высокий приоритет и выполняется раньше, чем арифметические операции:показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

 

  var i = 1;
  alert(2 * ++i); // 4

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

 

  var i = 1;
  alert(2 * i++); // 2, выполнился раньше но значение вернул старое

 

Вопрос №24. Операторы сравнения и логические операторы.

Логические операторы

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

Операторы:

  • ! — «отрицание», унарный оператор, меняет значение на противоположное (инвертирует: ложь превращает в истину, а истину — в ложь).
  • && — логическое «и» («конъюнкция», «пересечение»), бинарная операция, возвращает истинное значение тогда и только тогда, когда оба операнда истины.
  • || — логическое «или» («дизъюнкция», «объединение»), бинарная операция, возвращает истинное значение, когда хотя бы один из операндов истинный.

У логических операторов следующий приоритет: отрицание, конъюнкция, дизъюнкция.

Также как и в случае с арифметическими операторами для коррекции приоритета используются круглые скобки. Если одна пара скобок вложена в другую пару скобок, то сначала вычисляется значение во внутренних скобках.

Примеры:

boolean a = true;
boolean b;
b = a || true; // b истинно
b =!b; // b ложно
System.out.println(b); // выведет false
a = a || b; // a истинно
boolean c;
c = a && (a||b); //с истинно
System.out.println(c); // выведет true

В Java логический и числовые типы нельзя преобразовывать друг к другу.

Операторы сравнения

Большинство операторов сравнения применимы к числовым значениям. Всё это бинарные операторы, имеющие два числовых аргумента, но возвращающие логическое значение.

  • > — оператор «больше».
  • >= — оператор «больше или равно».
  • < — оператор «меньше».
  • <= — оператор «меньше или равно».
  • != — оператор «не равно».
  • == — оператор эквивалентности (равенства).

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

Примеры:

boolean m;
m = 5 >= 4; // истина
m = 5!= 5 || false; // ложь
boolean w;
w = m == false; // истина
System.out.println(w); // выведет true

Очень важно не путать оператор эквивалентности с операцией присваивания.

В выражениях, где встречаются операторы разных типов, сначала выполняются арифметические операции, затем операции сравнения, затем логические операции и в последнюю очередь присваивание.

 

Вопрос №25. Операторы ветвления. Условный оператор

Оператор ветвления (условная инструкция, условный оператор) — оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.

Условный оператор if

Оператор if обеспечивает выполнение или пропуск инструкции в зависимости от указанного логического условия. Если условие истинно, то инструкция выполняется.

if (условие) инструкция;

На месте инструкции может быть как обычная инструкция (одна команда), так и составная инструкция (блок содержащий несколько команд, в том числе, другие условные операторы).

Примеры (если в качестве значений переменных будет указан нуль, то деление не будет производиться и его результат не станет выводиться на экран):

// Пример 1
int a = 25;
if (a!= 0) System.out.println(100/a);
// Пример 2
int b = 25;
if (b!= 0) {
System.out.println(100/b);
}

Не смотря на то, что код в первом примере выглядит компактнее, только во втором примере можно было бы выполнить несколько инструкций в случае истинности условия.

У оператора if существует формат с дополнительной частью else:

if (условие)
инструкция1;
else
инструкция2;

В случае истинности условия выполняется простая или составная инструкция1, а в случае ложности простая или составная инструкция2.

Пример:

int a = 0;
if (a!= 0) System.out.println(100/a);
else System.out.println("На нуль делить нельзя");

 

 

Вопрос №26. Операторы организации циклов.

Командой повторения или циклом называется такая форма организации действий, при которой одна и та же последовательность действий повторяется до тех пор, пока сохраняется значение некоторого логического выражения. При изменении значения логического выражения на противоположное повторения прекращаются (цикл завершается).

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

перед началом цикла задать начальное значение параметра;

внутри цикла изменять параметр цикла с помощью оператора присваивания;

проверять условие повторения или окончания цикла;

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

Различают циклы с известным числом повторений (цикл с параметром) и итерационные (с пред- и постусловием).

В цикле с известным числом повторений параметр изменяется в заданном диапазоне.

Если в цикле изменяется простая переменная, то она является параметром цикла; если в цикле изменяется переменная с индексом, то индекс этой переменной является параметром цикла.

Для организации цикла с известным числом повторений в Pascal используется оператор for.

Структура цикла, организованного с помощью этого оператора, имеет вид:

For I:= A To B Do Begin End;

или

For I:= A DownTo B Do Begin End;

Здесь I — параметр, изменяющийся в цикле; A, B — выражения порядкового типа, обозначающие начальное, конечное значение параметра цикла. Шаг изменения номера параметра цикла равен 1, если в заголовке цикла стоит To (т.е. реально следующее значение параметра цикла вычисляется с помощью функции succ); и -1 — при DownTo (вычисление производится с помощью функции pred).

Порядок выполнения цикла с шагом 1 следующий: вычисляются значения начального и конечного значений параметра цикла; параметр если I принимает начальное значение; если I меньше или равно конечному значению, исполняется тело цикла; значение параметра цикла увеличивается, т.е. I:= succ(I); проверяется условие I=B) и при его выполнении цикл повторяется. Выход из цикла осуществляется, если I>B (I B (или A Sum_Max Then Begin Sum_Max:= Sum; Ch:= I End;

Вопрос №27. Виды циклов.

27.Циклы

В большинстве задач, встречающихся на практике, необходимо производить многократное выполнение некоторого действия. Такой многократно повторяющийся участок вычислительного процесса называется циклом.
Если заранее известно количество необходимых повторений, то цикл называетсяарифметическим. Если же количество повторений заранее неизвестно, то говорят обитерационном цикле.
В итерационных циклах производится проверка некоторого условия, и в зависимости от результата этой проверки происходит либо выход из цикла, либо повторение выполнения тела цикла. Если проверка условия производится перед выполнением блока операторов, то такой итерационный цикл называется циклом с предусловием (цикл "пока"), а если проверка производится после выполнения тела цикла, то это цикл с постусловием (цикл "до").
Особенность этих циклов заключается в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, а тело цикла с предусловием может ни разу не выполниться. В зависимости от решаемой задачи необходимо использовать тот или иной вид итерационных циклов.
Арифметические циклы
Синтаксис:
for переменная:= значение 1 to значение 2 do оператор
или
for переменная:= значение 1 downto значение 2 do оператор
Оператор for вызывает оператор, находящийся после слова do, по одному разу для каждого значения в диапазоне от значения 1 до значения 2.
Переменная цикла, начальное и конечное значения должны иметь порядковый тип. Со словом to, значение переменной цикла увеличивается на 1 при каждой итерации цикла. Со словом downto, значение переменной цикла уменьшается на 1 при каждой итерации цикла. Не следует самостоятельно изменять значение управляющей переменной внутри цикла.
Как и в случае использования оператора условного прехода, следует помнить, что синтаксис языка допускает запись только одного оператора после ключевого слова do, поэтому, если вы хотите в цикле выполнить группу операторов, обязательно надо объединить их в составной оператор (окаймить операторными скобками begin... end). В противном случае будет сделана логическая ошибка программы.
Пример 1. Квадраты чисел от 2-х до 10-и.
for x:=2 to 10 do WriteLn(x*x);
Пример 2. Латинский алфавит.
for ch:='A' to 'Z' do Writeln(ch);
Пример 3. Использование цикла с downto.
for i:=10 downto 1 do WriteLn(i);
Пример 4. Использование составного оператора.
for x:=1 to 10 do begin
y:=2*x+3;
WriteLn('f(',x,')=',y);
end;

Итерационные циклы с предусловием
Синтаксис:
while выражение do оператор
Оператор после do будет выполняться до тех пор, пока логическое выражение принимает истинное значение (True). Логическое выражение является условием возобновления цикла. Его истинность проверяется каждый раз перед очередным повторением оператора цикла, который будет выполняться лишь до тех пор, пока логическое выражение истинно. Как только логическое выражение принимает значение ложь (False), осуществляется переход к оператору, следующему за while.
Выражение оценивается до выполнения оператора, так что если оно с самого начала было ложным (False), то оператор не будет выполнен ни разу.
Здесь также следует помнить, что позволяется использовать только один оператор после ключевого слова do. Если необходимо выполнить группу операторов, то стоит использовать составной оператор.
Пример.
eps:=0.001;
while x > eps do x:=x/2;
Итерационные циклы с постусловием
Синтаксис:
repeat
оператор;
оператор;
...
оператор
until выражение
Операторы между словами repeat и until повторяются, пока логическое выражение является ложным (False). Как только логическое выражение становится истинным (True), происходит выход из цикла.
Так как выражение оценивается после выполнения операторов, то в любом случае операторывыполнятся хотя бы один раз.
Пример.
repeat
WriteLn('Введите положительное число');
ReadLn(x);
until x>0;
Операторы завершения цикла Для всех операторов цикла выход из цикла осуществляется как вследствие е

 

 


Поделиться с друзьями:

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.026 с.