ВВЕДЕНИЕ В СИ. ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА
Алфавит языка
Лексемы языка
Ключевые слова языка Си
Константы
Константы
Идентификаторы
Ограничения на идентификаторы
Переменные
Переменные. Правила
Область видимости
Область видимости
Операторы
Операторы
371.42K
Category: programmingprogramming

Введение в СИ. Основные понятия языка

1. ВВЕДЕНИЕ В СИ. ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА

2.

История создания
2
Язык Си (1972 г)
• Кен То́мпсон
• Де́ннис Ри́тчи

3. Алфавит языка

АЛФАВИТ ЯЗЫКА
язык
Си был создан уже после внедрения стандарта ASCII,
поэтому использует почти все его графические символы
(нет только $ @ ` ).
в Си есть и круглые (), и квадратные [], и фигурные {}.
в Си различаются заглавные и строчные буквы.
текст, заключённый в служебные символы /* и */ ,
считается комментарием.
компиляторы, совместимые со стандартом C99, также
позволяют использовать комментарии, начинающиеся с
символов // и заканчивающиеся переводом строки.

4. Лексемы языка

ЛЕКСЕМЫ ЯЗЫКА
имена
(идентификаторы);
ключевые слова;
знаки операций;
разделители;
литералы (константы).

5. Ключевые слова языка Си

КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА СИ
Ключевые слова - это слова,
зарезервированные для
специального предназначения и их нельзя использовать
как имена идентификаторов.
auto
double
int
struct
break
else
long
switch
register
typedef
char
extern
return
void
case
float
unsigned default
for
signed
union
do
if
sizeof
continue enum
short
while

6. Константы

КОНСТАНТЫ
Константа - это ограниченная последовательность
символов
алфавита
языка,
представляющая
собой
изображение
фиксированного
(неизменяемого)
объекта.
Константы бывают: логические, числовые,
символьные и строковые.
Числовые константы делятся на целочисленные и
вещественные.

7. Константы

КОНСТАНТЫ
Константа
Логическая
Формат
Обозначается ключевым словом true или false
Примеры
true, false
Целая
Десятичный: последовательность десятичных
цифр, начинающаяся не с нуля, если это не
число нуль
Восьмеричный: нуль, за которым следуют
восьмеричные цифры (0, 1, 2, 3, 4, 5, 6, 7)
8, 0, 199226
01, 020, 07155
Шестнадцатеричный: 0х или 0Х, за которым
0xA, 0x1B8, 0X00FF, 0X00ff
следуют шестнадцатеричные цифры (0, 1, 2, 3,
4, 5, 6, 7, 8, 9, A, B, C, D, E, F)
Вещественная
Десятичный: [цифры].[цифры]
Экспоненциальный:
[цифры][.][цифры]{E|e}[+|-][цифры]
5.7, 0.001, 35
0.2E6, .11e-3, 5E10, 1.22E-10
Символьная
Один или более символов, заключенных
в апострофы
'A', 'ю', '*', 'db', 'A', '\n', '\012',
'\x07\x07'
Строковая
Последовательность символов, заключенная в
кавычки
"Здесь был Vasia", "\tСумма
=\xF5\n"

8. Идентификаторы

ИДЕНТИФИКАТОРЫ
Идентификаторы - это произвольные имена любой
длины
для классов,
объектов, функций,
переменных,
типов
данных,
определенных
пользователем и т.д.
A…Z и a…z
0…9
Знак _

9. Ограничения на идентификаторы

ОГРАНИЧЕНИЯ НА
ИДЕНТИФИКАТОРЫ
Первый
символ – буква или _
Распознаются только первые 32 символа
Регистрозависимый язык
Sum, sum и suM - разные идентификаторы

10.

ОПИСАНИЯ ИДЕНТИФИКАТОРОВ
класс памяти] [const] тип имя [инициализатор];
инициализатор: = значение
short int a = 1;
const char C = 'C';
char s, sf = 'f';
char t (54);
float c = 0.22, x(3), sum;

11. Переменные

ПЕРЕМЕННЫЕ
Переменная – именованная ячейка памяти, значение
которой может меняться во время выполнения
программы.
Переменная имеет:
значение;
тип — определяет, значения какого типа она может
хранить;
адрес в памяти, по которому можно обратиться к
значению;
Идентификатор - имя (как правило), по которому
можно обратиться к значению.

12. Переменные. Правила

ПЕРЕМЕННЫЕ. ПРАВИЛА
Каждая
переменная в программе должна быть
определена (объявлена).
Переменные необходимо объявлять до их первого
использования.
У каждой переменной задан тип.
Переменная может принимать значения только
соответствующего типа.

13. Область видимости

ОБЛАСТЬ ВИДИМОСТИ
Каждый идентификатор имеет область действия и
область видимости, которые, как правило, совпадают
Область видимости начинается в точке описания.
const int i = 2;
Имя, описанное внутри блока, локально по отношению
к этому блоку. Имя, описанное вне любого блока, имеет
глобальную область видимости.
Область действия и класс памяти зависят не только от
собственно описания, но и от места его размещения в
тексте программы.

14. Область видимости

ОБЛАСТЬ ВИДИМОСТИ
Глобальная
Локальная
Статическая
Размещение
сегмент
данных
сегмент
стека
сегмент
данных
Время жизни
вся
программа
блок
вся
программа
Область видимости файл
блок
блок
Обнуление
нет
да
да

15.

ПРИМЕР
int a;
// 1 глобальная переменная a
int main()
// 2
{ int b;
// 3 локальная переменная b
static int c; // 4 локальная статическая переменная c
a = 1;
// 5 присваивание глобальной переменной
int a;
// 6 локальная переменная a
a = 2;
// 7 присваивание локальной переменной
::a = 3;
// 8 присваивание глобальной переменной
return 0;
}
// 9
// 10

16. Операторы

ОПЕРАТОРЫ
Оператор задает законченное описание некоторого
действия.
Объединенная единым алгоритмом совокупность описаний
и операторов образует программу.
Различают простые и составные операторы.
Унарные, бинарные, тернарные
Исполняемые неисполняемые
Составной оператор или блок - это группа операторов,
заключенная в фигурные скобки. Блоки могут быть
вложенными.

17. Операторы

ОПЕРАТОРЫ
Неисполняемые операторы служат для описания
данных, поэтому их часто называют операторами
описания или просто описаниями.
Например,
int a ;
- это оператор описания целочисленной переменной
a.
Исполняемые операторы задают действия над
данными.
Например, присваивание, цикл, ввод и т.д.

18.

УНАРНЫЕ ОПЕРАТОРЫ
Код
опера
Название
тора
&
адресный оператор
Результат операции
&x - адрес переменной х
*
оператор косвенной
адресации
*x – значение, расположенное
по адресу х
+
унарный плюс
+5 – положительная
константа
-
унарный минус
- 4 – отрицательная константа,
-х – значение переменной х с
обратным знаком

19.

УНАРНЫЕ ОПЕРАТОРЫ
Код
опера
Название
тора
~
побитовое отрицание
!
++
Результат операции
~x – побитовое отрицание
переменной x
логическое отрицание !x принимает значение false
(лжи), если x имеет ненулевое
(истинное) значение и
наоборот
префиксное/
int x = 5; ++х; увеличит x на
постфиксное
единицу;
увеличение
int x = 5; х++; увеличит x на
единицу

20.

БИНАРНЫЕ ОПЕРАТОРЫ
Код
опера
Название
тора
+ бинарный плюс
-
бинарный минус
*
умножение
Результат операции
вычисление суммы
int x = 2,y = 1,z;
z = x+y;
вычисление разности
int x = 2,y = 1,z;
z = x-y;
вычисление произведения
int x = 2,y = 1,z;
z = x*y;

21.

БИНАРНЫЕ ОПЕРАТОРЫ
Код
опера
Название
тора
/
Деление
%
остаток от
деления
<<
сдвиг влево
Результат операции
вычисление частного,
int x = 12,y = 2,z;
z = x/y;
вычисление остатка от деления
int x = 12,y = 7,z;
z = x%y;
вычисление побитового сдвига влево
int x = 12,y = 2,z; z = x << y;

22.

БИНАРНЫЕ ОПЕРАТОРЫ
Код
опера
Название
тора
>> сдвиг вправо
&
побитовое AND (И)
^
побитовое XOR
(исключающее или)
Результат операции
вычисление побитового
сдвига вправо
int x = 12,y = 2, z;
z = x >> y;
вычисление конъюнкции
int x = 12,y = 2, z = x & y;
вычисление сложения по
модулю 2
int x = 12,y = 2, z = x ^ y;

23.

БИНАРНЫЕ ОПЕРАТОРЫ
Код
опера
тора
|
Название
побитовое OR (ИЛИ)
&& логическое AND (И)
||
логическое OR (ИЛИ)
Результат операции
вычисление дизъюнкции
int x = 12,y = 2, z = x \ y;
проверка условий, связанных
логическим И
проверка условий, связанных
логическим ИЛИ

24.

БИНАРНЫЕ ОПЕРАТОРЫ
Код
опера
Название
тора
= присваивание
присвоить переменной
заданное значение или
значение другой переменной
выражение х*=5
эквивалентно выражению x =
x*5
+=, %=, <<=, >>=, &=, ^=, |=, -=, /=
*=
присвоить
произведение
Результат операции

25.

ОПЕРАТОРЫ ОТНОШЕНИЯ
Выражение, использующее операторы отношения, в
результате работы принимает значение true, если
отношение истинно, если же отношение ложное,
выражение принимает значение false.
Код
Результат операции
опера
Название
тора
<
меньше чем
x<y, х меньше y
<= меньше или равно чем x<=y, х меньше или равно y
>
>=
больше чем
x>y, х больше y
больше или равно чем x>=y, х больше или равно y

26.

ОПЕРАТОРЫ ОТНОШЕНИЯ
Код
опера
Название
тора
== равно
!= не равно
,
оператор
перечисления
Результат операции
x==y, х равно y
x!=y, х не равно y
выполнить
разделенные оператором
перечисления слева направо,
например:
y+=5,x-=4,y+=x;

27.

ПРИМЕР
4 << 2 равняется 16
5<2 false
5 >> 1 равняется 2
3>1 true
6 & 5 равняется 4
5%2 равняется 2
6 | 5 равняется 7
5+8 равняется 13
6 ^ 5 равняется 3
~3 равняется 252 для
unsigned char

28.

ТЕРНАРНЫЙ ОПЕРАТОР
Тернарный оператор A ? X : Y
Если истинно отношение А, то выполняются
действия Х; иначе выполняются действия Y.
x=5; y=2
x=10; y=15
z = (x<y) ? x+15:y-25;

29.

ПРИОРИТЕТ ОПЕРАЦИЙ
Лексемы
++ -~,!,-+
Операция
положительное и отрицательное приращение
побитовое НЕ , логическое НЕ, изменение знака,
плюс
Адрес (разыменование)
приведение типа
мультипликативные операции
аддитивные операции
сдвиг влево и вправо
отношения
равенство/неравенство
побитовое И
побитовое исключающее ИЛИ
побитовое ИЛИ
логическое И
логическое ИЛИ
условие
& *
(имя типа)
*/%
+<< >>
< > <= >=
== !=
&
^
|
&&
||
?:
= += -= *= /= %= <<= >>=
присваивание
&= ^= |=
,
последовательная оценка
Приоритет
15
15
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1

30.

ПРИМЕР
Операции деления и остатка
#include <stdio.h>
int main(){
int x = 3, y = 3;
printf("Значение префиксного выражения: %d\n", ++x);
printf("Значение постфиксного выражения: %d\n", y++);
}
Результат работы программы:
Значение префиксного выражения: 4
Значение постфиксного выражения: 3

31.

ТИПЫ ДАННЫХ
Базовые типы С89
oint
– целочисленный тип, целое число;
– вещественное
плавающей точкой;
ofloat
– вещественное
плавающей точкой;
odouble
ochar
число
число
одинарной
точности
с
двойной
точности
с
– символьный тип для определения одного символа;
– тип без значения. служит для объявления функции, не
возвращающей значения, или для создания универсального
указателя (pointer);
ovoid

32.

Тип данных
Типичный
размер в
битах
8 (или 1
байт)
unsigned char
8
signed char
8
int
16 или 32
unsigned int
16 или 32
signed int
16 или 32
short int
16
unsigned short int
16
signed short int
16
long int
32
long long int
64
signed long int
32
unsigned long int
32
unsigned long long int 64
32
float
char
double
64
80
Минимально допустимый диапазон значений
от –128 до 127
от 0 до 255
от –127 до 127
от –32767 до 32767
от 0 до 65535
от –32767 до 32767
от –32767 до 32767
от 0 до 65535
от –32767 до 32767
от –2147483647 до 2147483647
от –(263–1 ) до (263–1) для С99
от –2147483647 до 2147483647
от 0 до 4294967295
от 0 до (264–1) для С99
от 1Е–37 до 1Е+37 (с точностью не менее 6
значащих десятичных цифр)
от 1Е–37 до 1Е+37 (с точностью не менее 10
значащих десятичных цифр)
от 1Е–37 до 1Е+37 (с точностью не менее 10

33.

ПРЕОБРАЗОВАНИЕ ТИПОВ
Неявное приведение типов
Явное приведение типов.
Если в выражении смешаны Общая форма оператора
различные типы литералов и явного приведения типа:
переменных, то компилятор (тип) выражение.
преобразует их в один
наиболее расширенный тип.

34.

ПРИМЕР
int x = 5,y = 2,z;
z=x/y;
// z= 2
x = 2.25;
// x = 2

35.

ПРАВИЛА ПРИВЕДЕНИЯ ТИПОВ
Если два операнда выполняемой операции имеют тип А, а
результат имеет тип В, то результат в процессе
выполнения операции будет приведен к типу А.
float z;
z = 1/25; // переменная z будет равна 0
Если два операнда одной операции имеют тип А и В, а
результат имеет тип В, то результат будет приведен к
типу В.
int z;
z = 42/2.5; // переменная z примет значение 16;
float z;
z = 42/2.5; // переменная z примет 16.7666;
English     Русский Rules