Lektsia-IT-18 s tipy dannykh-operatsii-operator..

Лекция 18. Операции, выражения операторы. Типы данных, переменные и константы.
Операторы и выражения
Алфавит и управляющие символы
Алфавит языка С++ включает латинские прописные и строчные буквы: А,...Z, , а,...z, арабские цифры: 0, 1,..., 9, специальные символы:

Кроме того, имеются управляющие символы, которые непосредственно на экране не отображаются. Для их записи используются так называемые управляющие последовательности или символы:
\n
новая строка
\r
возврат каретки

\t
табуляция
\f
протяжка формата

\b
шаг назад (backspace)
\\
обратный слеш

\’
апостроф
\”
кавычки


звук




Использование кириллических символов возможно, если это допускает среда выполнения.
Имена
Имена имеют многие элементы программы: константы, переменные, типы данных, функции и т.д. Имена вводятся для того, чтобы отличать одни элементы от других.
Именем называется последовательность символов из латинских букв, символа подчеркивания и арабских цифр, которая начинается с буквы.
Примеры имен: var1, Table7, bad_call, limit.
Имена могут включать любое число символов, из которых значимыми являются первые 32, т. е. длинные имена считаются различными, если у них отличаются первые 32 символа.
Строчные и заглавные буквы суть разные символы. Поэтому идентификатор Radius отличается от идентификатора radius.
Некоторые имена языка зарезервированы в служебных целях или при подключении стандартных библиотек и их нельзя использовать для именования переменных, констант и функций. Например sin, cos, cin или cout.
Не рекомендуется начинать имя с символа подчеркивания, поскольку такой прием широко используется в библиотеках системы программирования;
Операции, выражения и операторы
Операции задают определенную последовательность действий и содержат знаки операций и операнды.
Операции могут проводиться с одним, двумя и тремя операндами. Соответственно, различают унарные, бинарные и тернарные операции.
Операнд представляет собой элемент операции. Операндами могут быть константы, переменные, и выражения.
Основные арифметические операции.
Примером унарной арифметической операции является операция изменения знака числа, обозначаемая символом «минус», который стоит перед одним операндом: х.
Примером бинарной операции может служить простое выражение вычитания: 3.4 х.
Как видим, смысл символа операции зависит от контекста.
Примером тернарной операции может служить условная операция, которая имеет следующую форму записи:(условие)?значение«истина»:значение«ложь» и содержит три операнда: условие, значение«истина» (символизируется знаком?) и значение«ложь» (символизируется знаком :).
Если условие выполняется, то результатом будет значение«истина», если не выполняется то результатом будет значение«ложь». Например, b=(а>0) ? а:0 . Если а > 0 , то b=а, иначе b=0.
+, , *, / знаки бинарных операций сложения, вычитания, умножения и деления.
Имеется две разновидности операции деления: целочисленное деление (деление с остатком), когда оба операнда целые числа, и результат тоже целое число и деление без остатка (результат - вещественное число). Например, 5/2 = 2, а 5.0/2 = 2.5.
Для целых чисел определена операция % деление по модулю (нахождение остатка от деления).
Например, 5%2 равно 1.
Символ = обозначает бинарную операцию простого присваивания, при которой значение правого операнда присваивается левому операнду, например: v=0.5*а*t*t+7
Допускается множественное присваивание: z = у = х = t = 68.
В результате переменные z, у, х, t примут значение 68, если все они одного типа.
Выражение это последовательность знаков операций, операндов и круглых скобок, которая задает вычислительный процесс получения результата определенного типа. Простейшим выражением является константа, переменная или вызов функции.
Вызов функции представляет собой имя функции, за которым в круглых скобках указывается список аргументов (возможно пустой). Примеры выражений с вызовом функций:
а*sin(х+k) + b*соs(х-k).
Можно считать, что во время выполнения программы результат, возвращаемый вызванной функцией, заменяет вызов функции.
Также как результат вычисления выражения заменяет само выражение. Например, выражение
-2-(соs(х)+5*у) заменится значением –8.0, если х = 0 и у = 1.
Порядок вычисления выражения определяется расположением знаков операций, круглых скобок и приоритетами выполнения операций.
Например(11+25/5+7) не равно (11+25)/(5+7).
Операции с наивысшим приоритетом выполняются первыми.

Приоритеты операций приведены в Таблице 1. Операции, находящиеся в начале таблицы, имеют более высокий приоритет.
Таблица 1 Приоритеты и порядок выполнения операций
Приоритет
Знаки операции
Названия операции
Порядок
выполнения


( )
++
( (
вызов функции или конструирование выражения постфиксный инкремент
постфиксный декремент
слева направо


sizeof
++
( (

размер операнда в байтах
префиксный инкремент
префиксный декремент
унарный минус
справа налево


*
/
%
умножение
деление
остаток от деления целых (деление по модулю)
слева направо


+
-
сложение
вычитание
слева направо


<
>
<=
>=
меньше
больше
меньше или равно
больше или равно
слева направо


= =
!=
равно (совпадает)
не равно
слева направо


?:
условная
справа налево


=
*=, /=, %=,
+=,  =, <<=, >>=, &=^=, |=
присваивания (простое и составные)
справа налево


,
операция «Запятая» - последовательность выражений
слева направо

В языке С++ предусмотрены две нетрадиционные унарные операции: инкремента + + и декремента ( ( соответственно для увеличения и уменьшения значения операнда на единицу. Например: time++; означает: time = time+1.
Их можно указывать перед операндом (++х или - -х, префиксный инкремент и декремент), тогда значение операнда х изменяется перед его использованием и после операнда (х+ + или х( ( постфиксный инкремент и декремент) тогда значение х изменяется после его использования.
Например: b=З; с=5; а=b+с++; значит b=3; а=3+5=8; с=5+1=6; а=b+++с; значит а=(b++)+с; то есть: b=4; с=5; а=4+5=9.
В логических выражениях используются знаки операций отношения: меньше <, больше >, равно (совпадает) ==, меньше или равно <=, больше или равно >=, не равно !=.
Запятая - знак специальной операции задающей последовательность выражений (операция «запятая»). Например, выражение (i=1, j=4, k=7) состоит из трех простых выражений.
Круглые скобки ( ) используются для изменения очередности выполнения операций.
Операция sizeof вычисляет размер операнда в байтах. Имеет две разновидности: sizeof(тип) и sizeof выражение. Например: sizeof(int) или sizeof Mytext. Здесь Mytext может быть именем строковой константы.
Для компактной записи операторов присваивания используются составные операции присваивания: *=, /=, %=, +=,  =, <<=, >>=, &=, ^=, |=
Например, при выполнении двух операторов а = а + b; или а += b; результат будет одинаков.
Если в выражении содержится несколько операций одного приоритета на одном и том же уровне, то их обработка производится в соответствии с порядком выполнения: справа налево или слева направо.
Например: при х = 4, a = 5 х/2+а*5%15 = 12; х/2+а*(5%15) = 27.
Операторы в отличие от выражений, являются законченными предложениями языка. Они могут содержать несколько выражений, разделенных запятой.
Например, оператор вывода-ввода cout <<“Введите значение х:”, cin >> х; содержит два выражения, разделенных запятой.
Обычно операторы заканчиваются точкой с запятой. Исключение составляют:
- директивы препроцессора, начинающиеся с символа #,
- тела функций,
блоки операторов.
Простые операторы с помощью фигурных скобок {} можно объединить в блок, который называется составным или сложным оператором и за которым точку с запятой можно не ставить.
Например,
{
s=10*i+2;
cout <<”\n s = “ << s;
}
составной (сложный) оператор

Операторы имеют названия, отражающие их назначение или выполняемые действия.
В языке С существует 5 основных видов операторов:
- операторы объявления, в которых объявляются типы данных, константы, переменные и заголовки функций. Например: int a, b;
- операторы присваивания, в которых используется операция присваивания. Например: у=(а*х+b)*x+c;
- операторы вызова функции, в которых вызывается функция. Например: rectangle(xl,yl,x2,y2);
- операторы управления, с помощью которых осуществляется управление работой программы.
Например: if, switch, break, continue, return или операторы цикла;
- пустые операторы, которые не выполняет никаких действий и состоят из одной только точки с запятой. Например ;.
Классификация типов данных
Данными языка С являются переменные и константы. Переменные меняются во время выполнения программы, а константы остаются неизменными.
Данные подразделяются на определенные типы. Под типом данных понимают множество допустимых значений, множество разрешенных операций и размер памяти, занимаемый данными этого типа типа.
Задать тип данных означает сообщить компилятору:
имя переменной или константы;
ее начальное значение;
размер памяти, необходимый для хранения ее значений;
вид и способ выделения памяти;
какие действия можно выполнять с переменной или константой.
Дерево классификации типов языка С++ приведено на рис. 3.

Рис. 3. дерево классификации типов языка С++
Каждый тип данных имеет имя (спецификатор).
В языке С++ выделяют:
1) базовые типы данных;
2) производные типы данных.
К базовым типам относятся: пустой тип void и скалярные типы.
Пустой тип void не имеет значения и используется для описания функций, не возвращающих никаких значений.
Скалярные типы делятся на целочисленные и вещественные типы.
В целочисленные типы кроме целых чисел входят также логический и символьный типы данных, для которых определены все операции с целыми числами.
Производные типы делятся на скалярные и структурные.
К скалярным производным типам относятся указатели и другие.
К структурным типам относятся массивы, классы и другие.
Объявление переменных
Тип данных – переменных и констант – задается в программе с помощью оператора объявления.
Для переменных этот оператор имеет вид:
[<спецификатор класса памяти>] <спецификатор типа> <имя> [= <начальное значение>] [,<имя> [= <нач. значение>]...;
Квадратные скобки означают необязательный операнд.
Например: int а=5, у;
Присвоение начального значения в операторе объявления переменой называется инициализацией этой переменной.
В табл. 2 приведены имена основных скалярных базовых типов, диапазоны допустимых значений и размер памяти, отводимой под переменные и константы данных типов.
Таблица 2. Характеристики основных типов данных языка
Тип
Имя (спецификатор) типа
Размер памяти, байтов
(16-разрядная)
Диапазон значений для 16-разрядной архитектуры

Логический
bool
2
0
1

Символьный
char
1
–128
127

Целый
int
2
–32768
32767

Вещественный
float
4
3.4е–38
3.4е38

С двойной точностью
double
8
1.7е–308
1.7е308


Логический тип bool применяется для логических переменных. Логические переменные могут принимать одно из двух значений: false (ложь) или true (истина).
Значение false равно 0, а true равно 1. Размер логической переменной составляет 2 байта.
Например: bool reload=false, in_range=true;

Символьный тип char применяется для символьных переменных. Символьная переменная может хранить только одиночный ASCII-символ. Символьное значение переменной заключается в апострофы.
Размер символьной переменной составляет 1 байт.
Например: char ach=’f’, char st;
Целый тип int применяется для переменных и константы, которые могут принимать только целочисленные значения. Размер данных целого типа равен 2 байтам.
Например: int x,y=2;

Данные вещественного типа (типа с плавающей точкой) могут быть двух размеров, характеризующих их точность:
float - одинарной точности (4 байта);
double - двойной точности (8 байтов).
Например: float v = 12.5,z; double u;
Константы
В языке С++ различают 3 вида констант: 1) числовые; 2) символьные; 3) строковые.
Числовые константы бывают целые и вещественные.
К целым относятся:
– десятичные целые числа (для записи используются десятичные цифры): 0, 278, -579;
– восьмеричные целые числа (для записи используются восьмеричные цифры, запись числа начинается с нуля): 00,01,..., 077777,...;
– шестнадцатеричные целые числа (для записи используются десятичные цифры и буквы A, B, C, D, E, F, запись числа начинается с 0x): 0х0000, 0х0001, ..., 0х707Е ..., 0хFFFF.

К вещественным относятся:
– десятичные вещественные числа (для записи используются десятичные цифры, целая и дробная часть разделяются точкой, используется также экспоненциальная запись):
3.14 эквивалентно 314е-2, эквивалентно 0.314Е1; 2.5 эквивалентно -0.25е1;.
По форме записи числовой константы компилятор определяет ее тип: по умолчанию целые десятичные константы имеют тип int, вещественные double.
Символьные константы бывают клавиатурные и кодовые.
клавиатурные – это клавиатурный символ в апострофах: 1’, i’, У’;
кодовые – это управляющие символы в апострофах: \n’, \b’, \t’, \\’;

Строковые константы – это последовательности символов, заключенные в двойные кавычки:
“This string constant”,
Для хранения строковой константы требуется n+1 байтов, где n число символов между кавычками. Дополнительный последний байт требуется для хранения кода 000, который записывается автоматически. Говорят, что строки С++ оканчиваются нулем.
Для задания управляющих и разделительных символов внутри строковых констант используются символьные кодовые константы без апострофов. Например: “\n New string”
Задание констант в программе
По способу задания константы можно разделить на литеральные (не имеющие имен - самоопределенные) и символические (имеющие имена - поименованные).
Тип и значение литеральной константы определяются ее внешним видом. Обычно такие константы задаются в виде конкретных значений.
Например: cout << “\n Объем цилиндра равен “ << v;
Литеральная строковая константа
cout << sin(3.14/7);
Литеральная числовая константа

Поименованные константы объявляются так же, как и переменные, но с указанием модификатора const:
[<спецификатор класса памяти>] const <спецификатор типа> <имя> [= <начальное значение>] [,<имя> [= <нач/ значение>]...;
Например:
const int x=5, y=10;
const double z=1E-5;
const float PI=3.1415926, g = 9.81, С = 0.577216;
const char smb=’t’;
const char ST[]=”String constant”;

Ключевое слово const указывает, что записанные справа идентификаторы являются символическими константами, и их значение в программе изменяться не может.
Далее в тексте программы можно использовать только имя константы (например, РI).
Встречая в программе имя константы, процессор будет заменять это имя числовым значением, всякий раз обращаясь к ячейке памяти, хранящей это значение. Такое задание константы называется подстановкой при исполнении.
Поименованные константы можно также задавать при помощи директивы препроцессора #define. Имя константы рекомендуется задавать с помощью заглавных букв.
Например:
#define HI “НеIIо, dеаr” //определение поименованной строковой константы;
#define РI 3.14 //определение поименованной числовой константы РI.
Встретив директиву #define, препроцессор перед компиляцией везде заменит имя константы десятичным числом 3.14. Такой способ задания константы называется подстановкой при компиляции. Он более предпочтителен, так как ускоряет работу программы.








13PAGE 15


13PAGE 141115
Лекция 18



™ђ Заголовок 2™ђ Заголовок 3™15

Приложенные файлы

  • doc 18813880
    Размер файла: 155 kB Загрузок: 0

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