
- •1) Общие сведения об информации, компьютерах и программировании.
- •2) Краткая характеристика современных компьютеров
- •3) Общие принципы построения эвм
- •4) Особенности пк
- •5) Основный идеи структурного программирования:
- •4)Вызов подпрограммы
- •6) Языки программирования
- •9) Базовые типы данных(стандартные)
- •11) Переменные и выражения
- •12) Операции
- •13) Операторы
- •14) Указатели.
- •15) Операции с указателями.
- •17) Строки. Нуль-символ.Реализация операций присваивания, сравнения и компирования строк.
- •18) Типы определяемые программистом.
- •1. Переименование типов
- •2.Перечисление.
- •3.Структуры
11) Переменные и выражения
Выражение это = операнд операция операнд
операнд = константа, перемененная, выражение
операции = + - …
Переменная- это именованная область памяти, в которой хранятся данные.
Имя переменной служит для обращения к этой области.
Значение переменной — содержание области.
Любая переменная в программе должна быть предварительно описана, тог есть отнесена к одному из типов.
Оператор описания = [класс памяти][const] тип имя[инициализатор];
Если в описании переменной используется слово const, то переменную называют именованной константой. Инициализатор это конструкция, служащая для присвоения переменной начального значения. Int I = 5; int i(5);
область действия имени это часть программы, в которой имя может быть использовано в соответствии со своим описанием. В зависимости от области действия переменная может быть локальной или глобальной
Если переменная описана внутри блока { }, то область ее действия от точки описания до конца блока. В этом случае переменная называется локальной.
Если переменная описана вне любого блока. Она называется глобальной. И область ее действия — от точки описания до конца программы.
Класс памяти определяет время жизни и область видимости переменой.
Время жизни может быть постоянным (в течение всего времени выполнения программы)
и временный (в течение выполнения какого- либо блока)
Областью видимости имени называется часть текста программы. В которой допустим доступ к области памяти, связанной с этим именем.
Для задания класса памяти используются следующие слова:
auto (автоматическая переменная) память под нее выделяется в стеке. И освобождается при выходе из блока в котором написана переменная.
Время жизни такой переменной с момента описания до конца блока.
Стек- та область памяти, которая служит для выделения полей.
Для глобальных переменных это служебное слово не используется, а для локальных оно применяется по умолчанию.
Extern (external) означает что переменная является внешней. ТО есть объявлена в другом месте программы в другой функции или в другом файле. Что бы переменная была доступна для нескольких блоков.
Используется для создания переменных, доступных модулей программы, в которых они объявлены.
Static – статическая переменная. Время жизни постоянное
Такая переменная специализируется один раз, при первом выполнении оператора, содержащего описание переменной.
Register — это означает запрос на выделение памяти в регистре процессора. Если такой возможности у компилятора нет переменные будут отнесены к классу auto.
Int a;
int main()
{ int b;
extern int x;
static int c;
a = 1;
int a;
::a= 3;
return o;
}
:: - доступ к глобальной переменной
12) Операции
Операции могут быть унарными - с одним операндом.
Бинарными — с двумя операндами.
Одна операция с тремя операндами — тернанрная.
Язык C++ - типизированный язык. Все операнды входящие в выражение имеют типы, по которым определяется тип результата вычисления выражения.
Если в операции участвуют операнды одного типа, то результат будет отнесен к этому же типу.
В остальных случаях будет происходить преобразование типов к одному, по некоторому правилу.
Операция присваивания
cont = x<2;
= операция присваивания.
Операция присваивания является частью выражения. Его значение совпадает со значением присваиваемой переменной.
При вычислении выражений часто используется две операции ++ –
++ - инкремент increase
– - декремент decrease
Они унарные.
Если перед операндом ++х префиксная запись
в префиксной записи выражения сначала изменяется значение операнда и это значение является значением выражения. Увеличение на 1
Если после х++ - постфиксная запись
в постфиксной записи выражение приобретает значение операнда, и после этого значение операнда увеличивается на 1
int main()
{ int x = 3, y = 3;
cout<<”Префикс:''<<++x<<endl;
cout<<”Постфикс:''<<y++<<endl;
cout<<”x=''<<x<<endl;
cout<<”y=''<<y<<endl;
return 0;
}
На экране
Префикс 4
Постфикс 3
х=4
у=4
Унарные операции
++ - инкремент
-- - декремент
Sizeof – размер
~ - Поразрядное отрицание
! - логическое отрицание
- - унарный минус
+ - унарный плюс
& - взятие адреса
* - разадресация
new - выделение памяти
delete - освобождение памяти
(type) - преобразование типа
Sizeof операция предназначенная для вычисления размера памяти в байтах, выделенного объекту или типу.
Int main()
{ float x = 1.0;
cout<<”size of float”<<sizeof(float);
cout<<”size of x=”<<sizeof x;
return 0;
}
! и разрядное отрицание ~
!(отрицание) — дает в результате значение 0, если операнд принимает значение истина (не ноль) и значение 1 в противном случае.
Операнд может быть как целого так и вещественного типа, а также тип указатель.
~ выполняет инверсию в двоичном представлении целочисленного операнда.
В тех случаях, когда принудительно нужно изменить тип некоторого значения, перед ним указывает наименование типа (int)x+y.
Бинарные операции
* - умножение
/ - деление
% - остаток от целочисленного
+ - сложение
- - вычитание
<< - сдвиг влево
>> - сдвиг вправо
< - меньше
<= - меньше или равно
> - больше
>= -больше или равно
== - равно
!= - не равно
& - поразрядная коньюкция
^ - поразрядное включение
| - поразрядное или
&& - логическое и
|| - логическое или
Операции сдвига применяются только к целочисленным операндам. Количество двоичных разрядов на которое сдвигается первый операнд задается вторым операндом.
Операция амперсент & Поразрядная конъюнкция
a & b
| Поразрядное или
&&- и
|| - или
Операндами могут быть арифметические значения или указатели, при чем они могут иметь разные типы, при этом преобразование типов не происходит. Каждый операнд проверияется на эквивалентность 0. 0 — false не 0 – true
+=
-=
*=
/=
первый операнд должен быть переменной, а второй выражением
перем *= выражение перемен = переме * выраж
тернарная операция
операнд1 ? Операнд 2 : операнд3
арифм
указат
Если операнд 1 == true, то значение операнд 2
false операнд 3
значение выражения зависит от первого опернада.
#include <iostream>
int main()
{ int a = 11, b =4, max;
max= (b> a) ? b:a;
cout<<max;
return o;
}
Если в одном выражении участвуют операции одного ранга, то унарные операции, тернарная операция и операция присваивания выполняются справа налево. Остальные слева на право.
Если операнды в выражении имеют одинаковый тип, то результат будет иметь тот же тип.
Если операнды разных типов, то перед вычислением выполняется преобразование типов в сторону более длинных по размеру памяти. Для обеспечивания сохранности информации.