Какие из следующих операторов называются укороченными
Перейти к содержимому

Какие из следующих операторов называются укороченными

  • автор:

Какие из следующих операторов называются укороченными

Какие из следующих операторов называются укороченными

int X, у, Z, result;

cout << Введите три целых числа: ; cin >> X у z; result = X * у * z;

cout << Произведение равно result \n; return 0;

1.8. a) Ошибка: точка с запятой после правой круглой скобки условия в операторе if. Исправление: удалите точку с запятой после правой круглой скобки. Замечание: в результате этой ошибки оператор вывода будет выполняться независимо от истинности условия в операторе if. Точка с запятой после правой круглой скобки считается пустым оператором — оператором, который ничего не делает. Мы узнаем больше о пустом операторе в следующей главе.

Ь) Ошибка: операпдя сравнения =>. Исправление: измените => на >=.

1.9. а) абстрагирование. Ь) атрибутом, с) поведения, d) множественным, е) сообщения, f) интерфейсы, g) скрытие информации, h) имена существительные, i) данными-элементами, функциями-элементами, j) объект.

1.10. Отнесите следующие элементы к категории аппаратных средств или программного обеспечения:

d) препроцессор С++

f) программа редактор

1.11. Почему вам хотелось бы писать программу на машинно-независимом языке вместо машинно-зависимого? Почему машинно-зависимый язык может оказаться предпочтительней для написания программ определенного типа?

1.12. Заполните пустые места в каждом из следующих предложений:

a) Какой логический блок компьютера принимает информацию извне для использования в компьютере?

b) Процесс составления инструкций компьютеру для решения специфических проблем называется .

c) Какой тип компьютерного языка использует англо-подобные аббревиатуры для команд на машинном языке? .

d) Какой логический блок компьютера посылает уже обработанную компьютером информацию различным устройствам для использования вне компьютера? .

f) Какой логический блок компьютера выполняет вычисления?

g) Какой логический блок компьютера принимает логические решения? .

h) Уровень компьютерного языка, удобный программисту для быстрого и легкого написания программ — .

i) Единственный язык, непосредственно понятный компьютеру, называется .

j) Какой логический блок компьютера координирует действия всех других логических блоков? .

1.13. Укажите смысл каждого из следующих объектов:

1.14. Почему так много внимания уделяется сегодня объектно-ориентированному программированию вообще и в С++ в частности?

1.15. Заполните пустые места в каждом из следующих предложений:

a) используются для документирования программы и

улучшения ее читаемости.

b) Объект, используемый для вывода информации на экран, называется

c) Оператор С++, принимающий решение, называется .

d) Вычисления обычно выполняются с помощью оператора

е) Объект вводит информацию с клавиатуры.

1.16. Напишите один или несколько операторов С++, выполняющих указанные ниже задания:

a) Напечатайте сообщение Введите два числа:

b) Присвойте произведение переменных а и Ъ переменной с.

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

d) Введите три целых значения с клавиатуры и поместите эти значения в целые переменные а, Ъ и с.

1.17. Укажите, что из нижеследующего верно или неверно. Объясните ваши ответы.

a) Операции в С++ выполняются слева направо.

b) Все следующие далее имена переменных верны: under bar , m928134, t5, j7, her sales, his account njnfk, a, b, c, z, z2.

c) Оператор cout A = 5; ; — типичный пример оператора присваивания.

е) Какой логический блок компьютера хранит информацию?

d) Правильное арифметическое выражение на С++ без круглых скобок выполняется слева направо.

e) Все следующие имена переменных правильные: 3g, 87, 67h2, h22, 2h.

1.18. Заполните следующие пустые места:

a) Какие арифметические операции имеют такой же уровень приоритета как умножение?

b) Какие из вложенных круглых скобок выполняются в арифметическом выражении первыми?

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

1.19. Что печатается, если это вообще возможно, при выполнении каждого из следующих операторов. Если ничего не печатается, то ответьте ничего . Предполагайте, что х = 2, у = 3.

e) cout << X + у = у + x; f) Z = X + у;

h) cout х + у = X + у;

1.20. Какие из следующих операторов С++ содержат переменные, значения которых уничтожаются?

а) cin b с d >> е f;

c) cout << переменные, значения которых уничтожаются

1.21. Какие из следующих операторов С++ верны для уравнения у = ах + 7:

а)у = а*х*х*х + 7; Ь)у=а*х*х* (х+7); с) у = (а * х) * X * (X + 7) ; d)y = (а*х) *х*х + 7 е)у = а* (х*х*х) + 7 f)y = a*x* (х*х + 7)

1.22. Укажите порядок выполнения действий в каждом из следующих операторов С++ и назовите значения х после их выполнения:

Укороченные логические операторы

В C# предусмотрены также специальные, укороченные, варианты логических операторов И и ИЛИ, предназначенные для получения более эффективного кода. Поясним это на следующих примерах логических операций.

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

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

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

Укороченная логическая операция И выполняется с помощью оператора && , а укороченная логическая операция ИЛИ — с помощью оператора || . Этим укороченным логическим операторам соответствуют обычные логические операторы & и | . Единственное отличие укороченного логического оператора от обычного заключается в том, что второй его операнд вычисляется только по мере необходимости.

В приведенном ниже примере программы демонстрируется применение укороченного логического оператора И. В этой программе с помощью операции деления по модулю определяется следующее: делится ли значение переменной d на значение переменной n нацело. Если остаток от деления n/d равен нулю, то n делится на d нацело.

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

Для исключения ошибки из-за деления на нуль в операторе if сначала проверяется условие: равно ли нулю значение переменной d . Если оно равно нулю, то на этом выполнение укороченного логического оператора И завершается, а последующая операция деления по модулю не выполняется. Так, при первой проверке значение переменной d оказывается равным 2, поэтому выполняется операция деления по модулю. А при второй проверке это значение оказывается равным нулю, следовательно, операция деления по модулю пропускается, чтобы исключить деление на нуль. И наконец, выполняется обычный логический оператор И, когда вычисляются оба операнда. Если при этом происходит деление на нуль, то возникает ошибка при выполнении.

Укороченные логические операторы иногда оказываются более эффективными, чем их обычные аналоги. Так зачем же нужны обычные логические операторы И и ИЛИ? Дело в том, что в некоторых случаях требуется вычислять оба операнда логической операции И либо ИЛИ из-за возникающих побочных эффектов. Рассмотрим следующий пример программы.

Прежде всего обратим внимание на то, что переменная someCondition типа bool инициализируется значением false . Далее проанализируем каждый оператор if . Как следует из комментариев к данной программе, в первом операторе if переменная i инкрементируется, несмотря на то, что значение переменной someCondition равно false . Когда применяется логический оператор & , как это имеет место в первом операторе if , выражение в правой части этого оператора вычисляется независимо от значения выражения в его левой части. А во втором операторе if применяется укороченный логический оператор. В этом случае значение переменной i не инкрементируется, поскольку левый операнд (переменная someCondition ) имеет значение false , следовательно, выражение в правой части данного оператора пропускается. Из этого следует вывод: если в коде предполагается вычисление правого операнда логической операции И либо ИЛИ, то необходимо пользоваться неукороченными формами логических операций, доступных в C#.

И последнее замечание: укороченный оператор И называется также условным логическим оператором И, а укороченный оператор ИЛИ — условным логическим оператором ИЛИ.

Какие из следующих операторов называются укороченными

&copy 2008 Наталия Македа
Все материалы блога защищены авторским правом. Любая перепечатка или использование материалов этого блога в коммерческих целях возможна лишь с письменного согласия автора. При некоммерческом использовании ссылка на блог обязательна.

среда, 20 августа 2008 г.

2.7 Укороченные (short-circuit) логические операторы (Выпуск 10)

Укороченные (short-circuit) логические операторы && и || предназначаются для логических AND (И) и OR (ИЛИ) операций над выражениями типа boolean . Заметьте, что для XOR (исключающее ИЛИ) операции не существует укороченного логического оператора.

Укороченные логические операторы похожи на операторы & и |, но в отличие от них применяются только к выражениям типа boolean и никогда не применяются к интегральным типам. Тем не менее, && и || обладают замечательным свойством: они укорачивают вычисление выражения, если результат может быть дедуцирован из части выражения (чуть позже я поясню это на примерах). Благодаря этому свойству, операторы && и || широко используются для обработки null-выражений. Они также помогают увеличить эффективность всей программы.

  • выражение с AND оператором ложно ( false ), если значение хотя бы одного из его операндов ложно;
  • выражение с OR оператором истинно ( true ), если значение хотя бы одного из его операндов истинно.
  • false AND X = false
  • true OR X = true

Рассмотрим пример кода, который выводит сообщение String , если строка не нулевая и более 20 символов длиной:

1. if ((s != null) && (s.length() > 20))

Эта же задача может быть закодиравана по-другому:

Если бы строка s была null , то при вызове метода s.length() мы бы получили NullPointerException . Ни в одном из двух примеров кода, однако, такая ситауция не возникнет. В частности, во втором примере, s.length() не вызывается при s = null , благодаря использованию укороченного оператора &&. Если бы тест (s!=null) возвращал ложь ( false ), то есть s — несуществующая строка, то и всё выражение гарантированно ложно. Значит, отпадает необхеодимость вычислять значение второго операнда, то есть выражения (s.length()>20) .

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

Первый пример иногда будет выводить на печать вот это:
test = true
val = 0

А иногда вот это:
test = true
val = 2

Второй пример иногда будет выводить на печать вот это:
test = true
val = 1

А иногда вот это:
test = true
val = 2

А дело вот в чём. Если val равно 0, то второй операнд (++val) никогда не будет вычислен, то есть val останется равным нулю. Если же изначально val равен единице, то в результате эта переменная будет инкрементирована и мы увидим val = 2 . Во втором примере, при использовании неукороченных операторов, инкремент выполняется всегда и результат будет всегда или 1 или 2 в зависимости от случайного значения выбранного на первом шаге. В обоих примерах переменная test принимает значение true , потому что либо val = 0 , либо val = 1 и инкрементируется до значения 2.

Укороченные логические операторы

В С# предусмотрены также специальные, укороченные, варианты логических операторов И и ИЛИ, предназначенные для получения более эффективного кода. Поясним это на следующих примерах логических операций. Если первый операнд логической операции И имеет ложное значение false, то её результат будет иметь ложное значение независимо от значения второго операнда. Если же первый операнд логической операции ИЛИ имеет истинное значение true, то её результат будет иметь истинное значение независимо от значения второго операнда. Благодаря тому, что значение второго операнда в этих операциях вычислять не нужно, экономится время и повышается эффективность кода.

Укороченная логическая операция И выполняется с помощью оператора &&, а укороченная логическая операция ИЛИ — с помощью оператора ||. Этим укороченным логическим операторам соответствуют обычные логические операторы & и |. Единственное отличие укороченного логического оператора от обычного заключается в том, что второй его операнд вычисляется только по мере необходимости.

Укороченные логические операторы иногда оказываются более эффективными, чем их обычные аналоги. Так зачем же нужны обычные логические операторы И и ИЛИ? Дело в том, что в некоторых случаях требуется вычислять оба операнда логической операции И либо ИЛИ из-за возникающих побочных эффектов. Пример:

static void Main()

short d = 12, f = 1, i = 0;

// В данном случае используется укороченный оператор

// и операция сравнения выполнится в нормальном потоке

Console.WriteLine(" <0>делится нацело на <1>", d, f);

// В этом случае так же используется укороченный оператор,

// но при этом возникнет исключительная ситуация

// т.к. первый оператор сравнения содержит деление на 0

Console.WriteLine(" <0>делится нацело на <1>", d, f);

// При использовании целостного оператора в любом

// случае возникнет исключительная ситуация

if (f!= 0 & (d % f) == 0)

Console.WriteLine(" <0>делится нацело на <1>", d, f);

// Практический пример использования обычных операторов.

// При использовании обычного оператора, в данной конструкции

// i будет инкреминироваться

Console.WriteLine("i равно <0>", i); // i = 1

// При использовании укороченного оператора

// значение i останется прежним

Console.WriteLine("i равно <0>", i); // i = 0

Console.WriteLine("Для продолжение нажмите любую клавишу. ");

* 12 делится нацело на 1

* 12 делится нацело на 1

* 12 делится нацело на 1

* Для продолжение нажмите любую клавишу.

Если в коде примера выше переменной f задать число «0, будет выдано исключение «деления на ноль»: DivideByZeroException.

Применение операторов: операторы присваивания

Применение операторов: операторы присваивания

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

Оператор присваивания обозначается одиночным знаком равенства «. В С# оператор присваивания действует таким же образом, как и в других языках программирования. Ниже приведена его общая форма:

<имя переменной> = <выражение>

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

x = у = z = 10; // Присвоить значение 10 переменным x, у и z

В приведённом выше фрагменте кода одно и то же значение 10 задаётся для переменных х, у и z с помощью единственного оператора присваивания. Это значение присваивается сначала переменной z, затем переменной у и, наконец, переменной х. Такой способ присваивания «по цепочке» удобен для задания общего значения целой группе переменных.

Какие из следующих операторов называются укороченными

&copy 2008 Наталия Македа
Все материалы блога защищены авторским правом. Любая перепечатка или использование материалов этого блога в коммерческих целях возможна лишь с письменного согласия автора. При некоммерческом использовании ссылка на блог обязательна.

среда, 20 августа 2008 г.

2.7 Укороченные (short-circuit) логические операторы (Выпуск 10)

Укороченные (short-circuit) логические операторы && и || предназначаются для логических AND (И) и OR (ИЛИ) операций над выражениями типа boolean . Заметьте, что для XOR (исключающее ИЛИ) операции не существует укороченного логического оператора.

Укороченные логические операторы похожи на операторы & и |, но в отличие от них применяются только к выражениям типа boolean и никогда не применяются к интегральным типам. Тем не менее, && и || обладают замечательным свойством: они укорачивают вычисление выражения, если результат может быть дедуцирован из части выражения (чуть позже я поясню это на примерах). Благодаря этому свойству, операторы && и || широко используются для обработки null-выражений. Они также помогают увеличить эффективность всей программы.

  • выражение с AND оператором ложно ( false ), если значение хотя бы одного из его операндов ложно;
  • выражение с OR оператором истинно ( true ), если значение хотя бы одного из его операндов истинно.
  • false AND X = false
  • true OR X = true

Рассмотрим пример кода, который выводит сообщение String , если строка не нулевая и более 20 символов длиной:

1. if ((s != null) && (s.length() > 20)) <
2. System.out.println(s);
3. >

Эта же задача может быть закодиравана по-другому:

1. if (s != null) <
2. if (s.length() > 20) <
3. System.out.println(s);
4. >
5. >

Если бы строка s была null , то при вызове метода s.length() мы бы получили NullPointerException . Ни в одном из двух примеров кода, однако, такая ситауция не возникнет. В частности, во втором примере, s.length() не вызывается при s = null , благодаря использованию укороченного оператора &&. Если бы тест (s!=null) возвращал ложь ( false ), то есть s — несуществующая строка, то и всё выражение гарантированно ложно. Значит, отпадает необхеодимость вычислять значение второго операнда, то есть выражения (s.length()>20) .

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

Первый пример иногда будет выводить на печать вот это:
test = true
val = 0

А иногда вот это:
test = true
val = 2

Второй пример иногда будет выводить на печать вот это:
test = true
val = 1

А иногда вот это:
test = true
val = 2

А дело вот в чём. Если val равно 0, то второй операнд (++val) никогда не будет вычислен, то есть val останется равным нулю. Если же изначально val равен единице, то в результате эта переменная будет инкрементирована и мы увидим val = 2 . Во втором примере, при использовании неукороченных операторов, инкремент выполняется всегда и результат будет всегда или 1 или 2 в зависимости от случайного значения выбранного на первом шаге. В обоих примерах переменная test принимает значение true , потому что либо val = 0 , либо val = 1 и инкрементируется до значения 2.

Какие из следующих операторов называются укороченными

Table of Contents

Введение в типы данных и операторы

Введение в классы, объекты и методы

Дополнительные сведения о типах данных и операторах

Дополнительные сведения о методах и классах

Пакеты и интерфейсы

Перечисления, автоупаковка, статический импорт и аннотации

Апплеты, события и прочее

Введение в Swing

Приложение A. Ответы на вопросы дня самопроверки

Приложение B. Применение документирующих комментариев в Java

Java: руководство для начинающих

Герберт Шилдт

Введение в типы данных и операторы

Введение в классы, объекты и методы

Дополнительные сведения о типах данных и операторах

Дополнительные сведения о методах и классах

Пакеты и интерфейсы

Перечисления, автоупаковка, статический импорт и аннотации

Апплеты, события и прочее

Введение в Swing

Приложение A. Ответы на вопросы дня самопроверки

Приложение B. Применение документирующих комментариев в Java

Java считается одним из самых значительных и широко распространенных языков программирования, поскольку ему принадлежит исключительная роль в разработке приложений для Интернета. Для того чтобы профессионально заниматься разработкой веб-приложений, нужно досконально знать Java. Поэтому, если хотите связать свое будущее с программированием веб-приложений, вам нужно выбрать подходящий для этого язык и как следует изучить его. Кроме того, Java принадлежит ведущая роль в программировании смартфонов на платформе Android. Проще говоря, программирование на Java составляет основу большей части современной вычислительной техники.

Цель этой книги — обучить вас, читатель, основам программирования на языке Java. В ней применяется поэтапный подход к освоению языковых средств на многочисленных примерах, упражнениях на самопроверку и несложных проектах. Для изучения Java по этой книге не обязательно иметь какой-то опыт программирования. Книга начинается с самых основных понятий, включая компилирование и выполнение программ на Java. Затем речь пойдет о ключевых словах и языковых средствах и конструкциях, составляющих основу Java. После этого рассматриваются более сложные языковые средства Java, в том числе многопоточное программирование и обобщения. И завершается книга введением в библиотеку Swing. Все это позволит вам получить ясное представление об основах программирования на Java.

Но эта книга — лишь первый шаг на пути к освоению Java, поскольку для профессионального программирования на Java нужно знать не только составные элементы этого языка, но и многочисленные библиотеки и инструменты, существенно упрощающие процесс разработки программ. Проработав материал этой книги, вы получите достаточно знаний, чтобы приступить к изучению всех остальных аспектов Java.Эволюция Java

Немногие языки могут похвастаться тем, что им удалось изменить общее представление о программировании. Но и в этой “элитной” группе один язык выделяется среди прочих. Его влияние очень быстро почувствовали все программисты. Речь, конечно же, идет о Java. Не будет преувеличением сказать, что выпуск в 1995 году компанией Sun Microsystems Inc. версии Java 1.0 вызвал настоящую революцию в программировании. В результате Всемирная паутина стала по-настоящему интерактивной средой. Между тем Java установил новый стандарт в разработке языков программирования.

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

Первым существенным обновлением Java стала версия 1.1. Изменения в ней были более значительны, чем это обычно подразумевает переход к новой версии языка программирования. В версии Java 1.1 были добавлены многие библиотечные элементы, переопределены средства обработки событий, перекомпонованы многие функциональныесредства исходной библиотеки версии 1.0.

Следующим этапом развития данного языка стала платформа Java 2, где цифра 2 обозначает “второе поколение”. Ее создание стало поворотным событием, ознаменовавшим начало “новой эпохи” Java. Первым выпуском Java 2 стала версия 1.2. На первый взгляд, несоответствие номеров в обозначениях Java 2 и версии 1.2 может показаться странным. Дело в том, что номером 1.2 сначала обозначались библиотеки Java и только затем весь выпуск. Компания Sun перекомпоновала программный продукт Java в J2SE (Java 2 Platform Standard Edition — Стандартная версия платформы Java 2), и с тех пор номера версии стали относиться именно к этому продукту.

Затем появилась версия J2SE 1.3, в которую были внесены первые значительные изменения по сравнению с первоначальным выпуском Java 2. Новые функциональные средства были в основном добавлены к уже существующим и более тесно связаны со средой разработки. Версия J2SE 1.4 стала очередным этапом в развитии Java. Она содержала новые важные средства, в том числе цепочки исключений, канальный ввод-вывод и ключевое слово assert.

Следующая версия J2SE 5, по сути, стала вторым революционным преобразованием Java. В отличие от большинства предыдущих модернизаций, которые сводились к важным, но предсказуемым усовершенствованиям, в J2SE 5 были существенно расширены рамки применения и функциональные возможности языка, а также повышена его производительность. Для более ясного представления о масштабах изменений, внесенных в версии J2SE 5, ниже приводится перечень новых средств, которые рассматриваются в этой книге.

Автоупаковка и автораспаковка

Усовершенствованный вариант for-each цила for

Аргументы переменной длины

В этот список не вошли несущественные дополнения или поэтапные изменения, характерные для перехода к новой версии. Каждый элемент этого списка представляет собой существенное дополнение Java. Для поддержки одних нововведений, в том числе обобщений, варианта for-each цикла for и аргументов переменной длины, пришлось ввести новые синтаксические конструкции в язык. А другие нововведения, например автоупаковка и автораспаковка, повлияли на семантику языка. И наконец, аннотации открыли совершенно новые возможности для программирования.

Особое значение новых языковых средств проявилось в том, что новая версия получила номер 5. Логично предположить, что номером очередной версии Java должен бы стать 1.5. Но нововведения оказались настолько значительными, что переход от версии 1.4 к 1.5 не отражал масштабы внесенных изменений. Поэтому разработчики из компании Sun решили увеличить номер версии до 5, подчеркнув тем самым важность нововведений. В итоге новая версия получила название J2SE 5, а комплект инструментaльныx средств разработчиков стал называться JDK 5. Но ради согласованности с предыдущими версиями было решено использовать 1.5 в качестве внутреннего номера версии, на который можно ссылаться как на номер версии, используемый при разработке. Номер 5 в J2SE 5 означает номер версии данного программного продукта.

Следующая версия Java называется J2SE 6. Это означает, что в компании Sun вновь решили изменить название платформы Java. Прежде всего, из названия исчезла цифра 2. Теперь платформа называется Java SE, а официальное имя продукта — Java Platform, Standard Edition 6. Как и в J2SE 5, цифра 6 в Java SE 6 означает номер версии программного продукта. А внутренним номером версии для использования при разработке является 1.6.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *