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

 

В термине оператор сравнения слово «сравнение» относится к значениям операндов. В термине логический оператор слово «логический» относится к способу, которым устанавливаются эти отношения. Поскольку операторы сравнения и логические операторы тесно связаны друг с другом, мы рассмотрим их вместе. Операторы сравнения и логические операторы представлены в таблице 4. В основе операторов сравнения, и логических операторов лежат понятия «истина» и «ложь». В языке С истинным считается любое значение, не равное нулю. Ложное значение всегда равно 0. если результат ложен, и 1, если результат истинен.

В языке С++ истинные и ложные значения различаются точно так же, но, помимо этого, предусмотрен особый тип данных bool и булевые константы true и false.

 

Таблица 4.

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

 

Операторы сравнения Оператор   Действие
> Больше
>= Больше или равно
< Меньше
<= Меньше или равно
!= Не равно
Логические операторы Оператор   Действие
&& И
|| Или
! НЕ

 

Операторы сравнения и логические операторы имеют более низкий приоритет, чем арифметические операторы. Таким образом, выражение 10 > 1+12 будет вычислено так, будто оно записано следующим образом: 10 > (1+12).

 

Побитовые операторы

 

В отличие от многих языков программирования, язык С/С++ содержит полный набор побитовых операторов. Поскольку С был разработан в качестве замены языка ассемблера, он предусматривает многие операции низкого уровня, в частности, побитовые операции, предназначенные для проверки, установки и сдвига битов, из которых состоят байты и машинные слова, образующие переменные типа char или int. Побитовые операторы представлены в таблице 5.

 

Таблица 5.

Побитовые операторы

 

Оператор Действие
& И
| ИЛИ
^ Исключающее ИЛИ
~ Дополнение до единице (НЕ)
>> Сдвиг вправо
<< Сдвиг влево

 

Контрольные вопросы

 

1. Объясните, что понимают под программированием.

2. Приведите этапы жизненного цикла ПО?

3. Какие вы знаете методы проектирования ПО.

4. Перечислите операции для создания *.cpp файла?

5. Состав языка в С++.

6. Какова общая структура программы на языке С++?

7. какие вы знаете типы данных в С++?

8. Переменные. Объявление переменных в С++.

9. Есть ли с точки зрения языка С++ разница между числами:

· 20 и 20.0

· 20.0 и 2Е1

11. Приведите основные операторы в С++?


Лабораторная работа №2

 

Разработка программы с применением

базовых операторов С++

 

Цель работы:

 

1. Изучение основных операторов языка С++;

2. Приобретение навыков работы в ИСП Microsoft Visual C++ 5.0.

 

Используемое оборудование:

- персональная ЭВМ, совместимая с IBM PC.

 

Используемое программное обеспечение:

- операционная система Windows;

- интегрированная среда программирования Microsoft Visual C++ 5.0.

 

Задание по работе

 

1.1. Загрузить ИСП Microsoft Visual C++ 5.0;

1.2. Изучить основные типы данных, ИСП Microsoft Visual C++ 5.0;

1.3. Выполнить задание преподавателя;

1.4. Записать протокол работы с интегрированной средой.

 

Порядок выполнения работы

 

2.1. Составить схему алгоритма (по заданию преподавателя);

2.2. Запустить Microsoft Visual C++ 5.0;

2.3. Создать *.cpp файл в рабочем каталоге;

2.4. Написать программу и сохранить текст программы в рабочем каталоге;

2.5. Записать схему алгоритма и текст программы в протокол работы с интегрированной средой;

2.6. Закончить работу с Microsoft Visual C++ 5.0 и запустить программу.

 

Содержание отчета

 

3.1. Наименование лабораторной работы.

3.2. Цель работы.

3.3. Теоретическую часть.

3.4. Алгоритм программы.

3.5. Текст программы.

3.6. Вывод.

 

Краткое описание

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

Ø условные операторы (оператор условия if и оператор выбора switch);

Ø операторы цикла (for, while, do while);

Ø операторы перехода (break, continue, return, goto);

Ø другие операторы (оператор "выражение", пустой оператор).

Операторы в программе могут объединяться в составные операторы с помощью фигурных скобок. Любой оператор в программе может быть помечен меткой, состоящей из имени и следующего за ним двоеточия. Все операторы языка C/C++, кроме составных операторов, заканчиваются точкой с запятой ";".

 

Оператор выражение

 

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

Примеры:

++ i;

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

a=cos(b*5);

Этот оператор представляет выражение, включающее в себя операции присваивания, умножения и вызова функции.

Fun(x,y);

Этот оператор представляет выражение, состоящее из вызова функции.

 

Пустой оператор

 

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

Составной оператор

 

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

 

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

 

Оператор if

 

Формат оператора:

if (выражение) оператор1;

else оператор 2;

Выполнение оператора if начинается с вычисления выражения. Далее выполнение осуществляется по следующей схеме:

- если выражение истинно (т.е. отлично от 0), то выполняется оператор1;

- если выражение ложно (т.е. равно 0),то выполняется оператор2;

- если выражение ложно и отсутствует оператор2 (в квадратные скобки заключена необязательная конструкция), то выполняется следующий за if оператор.

Следующий фрагмент иллюстрирует вложенные операторы if:

Char sign;

Int x,y,z;

....

if (sign == ’-’)

x = y - z;

else if (sign == ’+’)

x = y + z;

else if (sign == ’*’)

x = y * z;

else if (ZNAC == ’/’)

x = y / z;

Else

x=0;

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

if (i)

{

if(j) оператор 1;

if(k) оператор2; /* данный if */

else оператор3; /* связан с данным оператором else */

}

else оператор4; /* связан с оператором if (i) */

Последний раздел else связан не с оператором if(j), который находится в другом блоке, а с оператором if (i). Внутренний раздел elseсвязан с операторомif(k), потому что этот оператор ifявляется ближайшим.

Оператор switch

Оператор switch предназначен для организации выбора из множества различных вариантов.

Формат оператора следующий:

Switch (выражение)

{ [объявление]

:

[ case константное-выражение1]: [список-операторов1]

[ case константное-выражение2]: [список-операторов2]

:

:

:

[ default: [список операторов]]

}

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

Все константные выражения в операторе switch должны быть уникальны. Кроме операторов, помеченных ключевым словом case, может быть, но обязательно один, фрагмент, помеченный ключевым словом default. Список операторов может быть пустым, либо содержать один или более операторов. Причем в операторе switch не требуется заключать последовательность операторов в фигурные скобки.

Схема выполнения оператора switch следующая:

- вычисляется выражение в круглых скобках;

- вычисленные значения последовательно сравниваются с константными выражениями, следующими за ключевыми словами case;

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

- если ни одно из константных выражений не равно выражению, то управление передается на оператор, помеченный ключевым словом default, а в случае его отсутствия управление передается на следующий после switch оператор.

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

Пример:

int i=2;

Switch (i)

{

case 1: i += 2;

case 2: i *= 3;

case 0: i /= 2;

case 4: i -= 5;

default: ;

}

Операторы switchмогут быть вложены друг в друга, даже если константы разделов caseвнешнего и внутреннего операторов switchсовпадают, проблемы не возникают.

 

Операторы перехода

Оператор break

 

Оператор break обеспечивает прекращение выполнения самого внутреннего из объединяющих его операторов switch, do, for, while. После выполнения оператора break управление передается оператору, следующему за прерванным.

Функция exit () не относится к управляющим операторам, настало время ее изучить. Вызов стандартной библиотечной функции exit () приводит к прекращению работы программы и передаче управления операционной системе.

Функция exit () выглядит следующим образом.

void exit(int код_возврата);

Значение переменной код_возврата передается вызывающему процессу, в роли которого чаще всего выступает операционная система.

Оператор continue

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

Пример:

Int main()

{

Int a,b;

for (a=1,b=0; a<100; b+=a,a++)

{

if (b%2) continue;

... /* обработка четных сумм */

}

Return 0;

}

Когда сумма чисел от 1 до а становится нечетной, оператор continue передает управление на очередную итерацию цикла for, не выполняя операторы обработки четных сумм. Оператор continue, как и оператор break, прерывает самый внутренний из объемлющих его циклов.

 

Оператор return

 

Оператор return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию, в точку, непосредственно следующую за вызовом. Функция main передает управление операционной системе.

Формат оператора:

return [выражение];

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

Если в какой-либо функции отсутствует оператор return, то передача управления в вызывающую функцию происходит после выполнения последнего оператора вызываемой функции. При этом возвращаемое значение не определено. Если функция не должна иметь возвращаемого значения, то ее нужно объявлять с типом void. Таким образом, использование оператора return необходимо либо для немедленного выхода из функции, либо для передачи возвращаемого значения.

Пример:

Int sum (int a, int b)

{

return (a+b);

}

Функция sum имеет два формальных параметра a и b типа int, и возвращает значение типа int, о чем говорит описатель, стоящий перед именем функции. Возвращаемое оператором return значение равно сумме фактических параметров.

Пример: