Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
програмирование..doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
613 Кб
Скачать
☆

Выражения.

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

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

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

Арифметические операции: +, -, *, /, %, ++, -- .

Примеры записи арифметических выражений:

float x, ALPHA, BETA;

int Z1, Z2;

int MAS[4];

….

  1. // целая константа

x // вещественная переменная

cos(x) // обращение к числовой функции

ALPHA*(BETA – 4.5) // вещественные выражения

Z1 % Z2 // целое выражение

MAS[2] + 1

Z1 ++

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

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

В языке С++ существует неявное и явное преобразование типов.

Неявное преобразование выполняется компилятором в соответствии со следующими правилами.

Все короткие целые типы преобразуются в типы неменьшей длины, т.е.

(char,unsigned char, enum) -> int

Все остальные типы приводятся к типу самого большого операнда. Например, если один операнд имеет тип int , а другой - long int (long) , то тип int расширяется в тип long int. Или, если хотя бы один из операндов имеет тип double, любой другой приводится к типу double. После преобразования оба операнда будут иметь один и тот же тип.

Значения типа bool при использовании в целочисленном выражении автоматически преобразуются в целые числа 0 и 1. При обратном преобразовании нуль преобразуется в false, а ненулевое значение – в true.

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

Рассмотрим пример.

#include <iostream.h>

void main()

{ long k = 123456789;

float g = (float) k;

cout << “\n k = “ << k; // к = 123456789

cout << “\n g = “ << g; // g = 1.234567е+8

k = (long) g;

cout << “\n k = “ << k; // к = 123456792

}

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

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

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

>, <, >=, <=, !=, = =. Выражение отношения принимают значение true, если соотношение имеет место и false в противном случае.

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

!, &&, ||, &, |, ^

Примеры записи логических выражений:

B != false && x = = y

X <= 1 || y >=0

Значением логического выражения является логическая константа true или false.

Вопросы

1 Операндом арифметического выражения может быть:

1. числовая константа;

2. числовая переменная;

3. логическое выражение;

4. строка;

5. обращение к числовой функции

2. Операндом логического выражения может быть:

1. выражение отношения;

2. логическая константа;

3. логическая переменная;

4. адрес;

5. числовая переменная.

3. Если значение логической переменной x равно true, а значение логической переменной y равно false, то значение выражения

x | y

равно

1. false;

2. true;

3. 1;

4. 0.

4. Укажите корректную запись выражения

4x+[y(2x+3)+x]lnx

1. 4x+(y*(2*x+3)+x)ln(x)

2. 4*x+(y*(2*x+3)+x)*log(x)

3. 4x+[y*(2*x+3)+x]*ln(x)

4. 4*x+(y*(2x+3)+x)ln(x)

Лекция 6

Основные операторы языка С++

  1. Оператор присваивания. Используется для присваивания значения переменной.

  1. Синтаксис:

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

Переменная может быть простой или с индексами. Выражение может иметь любой тип, который должен соответствовать типу переменной, т.е. арифметической переменной должно соответствовать арифметическое выражение, логической переменной - логическое выражение.

  1. Семантика: вычисляется значение выражения, которое записывается по адресу, соответствующему переменной. Тип выражения приводится к типу переменной.

Например:

int x;

char ch;

float f;

…

ch = x; // 1 строка

x = f; // 2 строка

f = ch; // 3 строка

f = x; //4 строка

В 1 строке символьной переменной ch будут присвоены младшие 8 бит. Во 2 строке переменная х получит часть значения f.

|| При преобразовании вещественного числа в целое отбрасывается дробная часть.

В 3 строке восьмиразрядное целое число будет преобразовано в формат с плавающей точкой.

В 4 строке целое значение типа int будет преобразовано в формат с плавающей точкой. Следует отметить, что при преобразовании целого числа в логическое значение типа bool 0 превращается в false, а отличное от нуля значение – в true

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

Напимер: int x,y,z;

x = y = z = 100;

2. .Пустой оператор. Он обозначается ’;’ , перед которой нет никакого оператора. Пустой оператор не выполняет никаких действий. Он используется там, где в соответствии с синтаксисом требуется присутствие оператора, а по смыслу никаких действий не должно выполняться. Пустой оператор чаще всего используется в качестве тела цикла, когда все действия описаны в заголовке оператора for:

for ( int i = 0, p =1; i< 5; i++, p* = i);

3. Составной оператор. Это последовательность операторов, заключенная в фигурные скобки { …. } .

  1. Синтаксис:

{ <оператор 1>;

<оператор 2>;

…..

<оператор к>;

}

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

Если среди операторов имеются определения объектов, то составной оператор превращается в блок. Внутри блока и составного оператора любой оператор заканчивается “;”

Примеры:

{ int a; char symbol = ‘a’; a = (int) symbol; cout << a; } // блок

{ x = 4; z = 4*x + 3; cout << x << z; } // составной оператор

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

4. Операторы выбора. К операторам выбора относят условный оператор ( if … else) и переключатель (switch).