- •Часть 1
- •Лекция 1
- •Лекция 3
- •Алфавит
- •Идентификаторы
- •Константы
- •Бинарные операции
- •Знаки операций и разделители
- •4. Знаки операций.
- •Унарные операции.
- •5. Разделители.
- •Выражения.
- •4.1 Условный оператор
- •4.2. Переключатели
- •5.Оператор цикла с предусловием.
- •6.Оператор цикла с постусловием.
- •7.Оператор итерационного цикла
- •8.1.Оператор goto
- •8.2.Оператор return
- •8.3.Оператор break
- •8.4.Оператор continue
- •Функция strcpy()
- •2. Функция strcat().
- •3. Функция strcmp()
- •12. Функция strlen().
- •Лекция 11
- •Лекция 12
- •Лекция 14
Выражения.
Выражение – это конструкция, составленная из операндов с помощью операций и скобок, которая определяет правило вычисления значений. Выделяют два класса выражений: арифметические и логические.
Под арифметическим выражением понимается арифметический операнд или совокупность арифметических операндов, объединяющих знаками арифметических операций.
Арифметическим операндом может быть числовая константа, числовая переменная, обращение к числовой функции, элемент числового массива и арифметическое выражение, заключенное в скобки.
Арифметические операции: +, -, *, /, %, ++, -- .
Примеры записи арифметических выражений:
float x, ALPHA, BETA;
int Z1, Z2;
int MAS[4];
….
// целая константа
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
Основные операторы языка С++
Оператор присваивания. Используется для присваивания значения переменной.
Синтаксис:
<переменная> = <выражение>;
Переменная может быть простой или с индексами. Выражение может иметь любой тип, который должен соответствовать типу переменной, т.е. арифметической переменной должно соответствовать арифметическое выражение, логической переменной - логическое выражение.
Семантика: вычисляется значение выражения, которое записывается по адресу, соответствующему переменной. Тип выражения приводится к типу переменной.
Например:
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>;
<оператор 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).
