Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Объявление и определение переменной



До первого использования переменной, её обязательно надо объявить (описать). Объявления переменных могут располагаться в любом месте программы. Не обязательно делать все объявления переменных до появления первого исполняемого оператора, как это было принято в С. Тем не менее, объявления наиболее часто употребляемых переменных целесообразно производить в начале программы, чтобы обеспечить ее удобочитаемость.

Объявление переменной предполагает указание имени переменной и ее типа (в простейшем случае):

имя_типа имя_переменной [инициализатор];

Возможно указание нескольких имён:

тип имя [,имя …];

Например:

int a,b;

float x, y, s;

При описании можно присвоить переменной начальное значение, говорят инициализировать её, есть 2 способа сделать это:

short k,I=1; // тип имя=значение ;

int x(10); // тип имя(значение);

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

const int=100;

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

Описание переменной определяет её область действия – часть программы, где её можно использовать для доступа к выделенной ей области памяти. Если переменная определена в блоке (внутри{ }) , то она говорят явл. локальной и область её действия от места описания и до конца блока. Если переменная определена вне любого блока, она наз. глобальной, область её действия – весь файл, где она описана.

Есть разница между терминами объявление переменной и определение переменной.

Если при объявлении переменной одновременно выделяется память под нее, то происходит определение переменной. Предложения – объявления переменных, описанные выше, являются и объявлениями, и определениями.

Выражение–языковая конструкция, которая задаёт правило для вычисления значения. Тип этого значения – тип выражения. Выражение содержит операнды , знаки операции и круглые скобки. Операнды: переменные, константы, функции (вызовы функций) и выражения , заключённые в круглые скобки. В языке определены приоритеты операций.(см. список операций с их приоритетами). Записываются выражения в строку, без опущенных и приподнятых символов. a/(b+c)

При вычислении выражения операции выполняются в соответствии с их приоритетами.Чтобы изменить этот порядок, используют круглые скобки. Последовательные операции одного приоритета выполняются так: унарные, условная операция(тернарная) и операции присваивания справа налево, остальные слева направо.т.е. a+b+c-d ≈ (((a+b)+c)-d) а x=y=z ≈ x=(y=z).

Порядок вычисления подвыражений внутри выражений не определён: (sin(x+1)+cos(y-2)), какое слагаемое будет считаться раньше –неясно.

Компилятор С++ знает, как вычислять результат операции, если операнды имеют идентичные типы, тот же тип будет и у результата. Чтобы обеспечить одинаковый тип операндов (в случае когда они разных типов),компилятор выполняет операцию преобразования по умолчанию (так называемое неявное преобразование типа) над выделенными операндами.Например,

int x;

float z; // В выражении x+z x преобразуется к типу float.

Правила преобразования обеспечивают преобразование более коротких типов в более длинные (чтобы обеспечить сохранение значимости и точности). Все типы выстраиваются в иерархическую цепочку:

Int < unsigned int < long < unsigned long < float < double < long double

Операнды типов char, unsigned char,short int, unsigned short int преобразуются к типу int.

Часто бывает необходимо значение одного типа преобразовать в значение другого типа. Есть два способа записи явного преобразования типа:

== традиционная в С запись приведения к типу, например (double)a. Это унарная операция.

==функциональная запись double(a), она не применима к типам , у которых нет простого имени.

char * p= (char *)0777;

Или Typedef char * Pchar;

char * p= Pchar(0777);

Некоторые особенности выражений в С++:

1)Присваивание является операцией выражения, у неё самый низкий приоритет (кроме ,). Простое присваивание:

операнд1 =операнд2; означает, что значение операнд2 получает и операнд1, который размещается слева и называется L-value (L-значение),т.е.то, чему можно присвоить значение.

Присваиваниеможет быть и внутри выражения, но так,чтобы левый операнд был L-value, например, a+b*(c=2), но выражение a+c=3-b является ошибочным (a+с не явл. L-value).

В языке С++ есть сложное присваивание += ,-=, *=, /=, %=, <<=, >>= и др. При выполнении операции в правой части используется и L-значение из левой части: оператор a+=b; означает a=a+b;

n%=b/10; эквивалентно n=n % (b/10);

2)Операция определения размераsizeofимеет две формы и применяется для вычисления размера в байтах некоторого объекта или типа:

a)sizeofвыражение //cout << sizeof (x+1.0); (8)

b) sizeof (тип)//cout << sizeof(float); (4)

3)Операции инкремента (++)- увеличения на 1 и декремента (--) –уменьшения на 1 имеют две формы записи префиксную (++х или --х) и постфиксную (х++ или х--). В префиксной операции сначала изменяется операнд, а затем его новое значение используется в следующей операции, а в постфиксной - используется исходное значение операнда, а после он изменяется на 1. Операнд в операции всегда является L-значением. Пример:

int a,b,c;

a=2; b=3;

c=a*b++ +a*a*b; // c=2*3+2*2*3; а затем b становится равным 4.

4) Операции отношения сравнивают два операнда арифметического типа(или указатели), результат логического типа true или false, причём приоритет операций сравнения на равенство или неравенство меньше приоритета остальных операций отношения.

4) Логические операции И (&&) и ИЛИ (||) выполняются над арифметическими операндами или указателями. Если операнды разных типов, то преобразования их не производится, каждый операнд оценивается с точки зрения его эквивалентности нулю. Результат операции true или false. Если по значению первого опранда можно определить результат операции, второй операнд не вычисляется.

5)Условная операция (?:)или тернарная(три операнда).Её формат:

оп1 ? оп2: оп3 Результат операции - true или false. оп1 сравнивается с нулём, если он равен true, результатом условной операции будет значение оп2, иначе – оп3. Например,

Int a,b,m;

m= (a<b) ? a : b;

6) операция : xy= exp( ln(xy) )= exp(y*ln(x ))

остальные операции рассмотрим позже.

Основные управляющие структуры С++.

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

           
     


Развилки:

Цикл «пока»:

 
 


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

Операторы С++.

1)Оператор ввода данных с клавиатуры.

Ввод данных с клавиатуры выполняется с помощью объекта cin, который определён в С++ для работы со стандартным потоком ввода. Этот поток содержит данные, вводимые с клавиатуры (если он не переопределён). Оператор ввода записывается так

cin >> <переменная>; Например, cin>>x;

Операция >> является операцией извлечения. Она извлекает данные из потокового объекта, стоящего в левой части, и присваивает эти данные переменной в правой части. В конце оператора ставится ;. Вводить можно последовательно значения нескольких переменных: cin >> a>>b>>c; Значения их должны стоять во входном потоке в соответствующем порядке, набираются они в символьном виде по одному и за ним нажимается Enter ,либо одно за другим, разделяются пробелами и за последним значением нажимается Enter (клавиша исполнения). Тип переменной в правой части операции >> определяет интерпретации вводимых символов и то, куда будут записываться значения из входного потока.

Int k;

cin>>k;// считывается целое значение в k

double x;

cin>>x; // считывается вещественное число удвоенной точности в x

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.