Похожие презентации:
Работа виртуальной Си-машины на двух этапах
1.
Работа виртуальной Си-машины на двух этапах2.
Вквадратных
скобках
необязательные элементы.
записывают
Если в правой части БНФ выбирается одна из
возможных конструкций, то эти альтернативы
разделяются вертикальной чертой «|».
Пример 12.
<программа> ::= <последовательность директив
препроцессора>
<заголовок
программы>
{ <тело программы> }
<последовательность директив препроцессора>
::= <директива> [<директива>…]
3.
<директива>::=#<тело директивы><заголовок программы> ::= int main([<список
аргументов>])
< список аргументов >
[,<имя аргумента>…]
::= <имя аргумента>
<имя аргумента> ::= <имя>
<имя> ::= <буква> | <имя><буква> | <имя>
<цифра>
<тело программы>::=<оператор>; [<оператор>; …]
<оператор>::=<оператор описания> |
<исполнимый оператор>
4.
2.2. Синтаксические диаграммыСинтаксические
диаграммы
состоят
из
прямоугольников, кругов и овалов, соединённых
стрелками.
В прямоугольниках записываются конструкции
языка, которые будут определены в других
синтаксических диаграммах.
В кружках записываются зарезервированные
символы языка.
В овалах – зарезервированные слова языка.
5.
Название определяемой конструкции языказаписывают над стрелкой, входящей в
синтаксическую диаграмму.
Признаком конца синтаксической диаграммы
является стрелка, выходящая из неё.
6.
3. Типы, операторы и выражения в языке СиОсновные объекты программы:
- константы;
- переменные.
В Си требуется, чтобы все переменные были
объявлены
оператором
описания
(декларирования)
до
первого
их
7.
В декларациях устанавливаются типы и,возможно, значения.
Имена переменных могут состоять из букв
(только из латинского алфавита), цифр и
символа подчеркивания, приравненного к букве.
Начинаться имя должно с буквы. C символа
подчеркивания начинаются внутренние имена
встроенных библиотечных функций.
Правильные имена: a, c1, x12_45g, begin_of_1.
Неправильные имена: 1а, 12-78, _of_1.
Язык Cи регистрозависимый, т.е. в именах
различаются маленькие и большие буквы.
Разные имена: ab, Ab, aB, AB.
8.
Нельзя использовать в качестве имён ключевыеслова языка Cи.
Например, int, if, for, char .
Пример 13.
#include <stdio.h>
#define N 12
int main() {
int i, main1[N], first_day_of_year;
…
}
9.
Базовые типы Си- char – единичный байт, содержащий одну
литеру из допустимого набора (ASCII);
- int – целое число;
- float – вещественное одинарной точности;
- double – вещественное удвоенной точности.
В C различают два вида квалификаторов:
1) длины (применимы
опускать):
- short;
- long;
к
целым,
int
можно
10.
2) знака (применимы к символьному и любомуцелому типу):
- signed;
- unsigned.
limits.h в этом файле устанавливаются
размеры типов.
float.h в этом файле устанавливаются
константы с плавающей точкой.
Размер short ≤ Размер int ≤ Размер long
11.
Типичная реализация типов в языке CиТип
unsigned char
char
unsigned short
short
unsigned int
int
unsigned long
long
Размер,
бит
8
8
16
16
16
16
32
32
float
32
double, long double 64
Диапазон
0..255
-128..127
0..65535
-32768..32767
0..65535
-32768..32767
0..4294967245
-2147483648
..2147483647
3.4e-38..3.4e+38
1.7e-308..1.7e+308
12.
Тип «пустой» (void) – отсутствие какого-либозначения.
Логический тип, который моделируется целым
типом: ложь = 0, истина = не 0.
В С++ присутствует базовый логический тип –
bool (1 байт).
Тип
указатель.
Переменная-указатель
содержит адрес ячейки памяти.
Указатель на void – указатель на данные любого
типа (может быть приведен к указателю на
любой тип).
13.
!!! «Размерность типа» зависит от версиикомпилятора, разрядности ОС, модели данных
компилятора и ОС.
Для
определения
количества
байтов,
выделяемых под тип, используется оператор
sizeof.
int j;
j=sizeof(double);
DOS: Turbo C Win32:
Win64:
2.0, Turbo C++ Visual
Visual Studio
3.0
Studio (С++) (С++)
sizeof(int)
2
4
4
sizeof(int*)
2
4
8
sizeof(long)
4
4
4
14.
КонстантыВ
Cи
для
целочисленных
констант
поддерживаются три системы счисления.
10 с/с: цифры от 0 до 9, не могут начинаться с
0.
8 с/с: цифры от 0 до 7, начинаются с 0.
16 с/с: цифры от 0 до 9, буквы A..F (a..f)
начинаются с 0х или 0Х.
170
/*десятичная*/
0252
/*восьмеричная*/
15.
0хАА/*шестнадцатеричная*/
170L
/*десятичная длинная*/
0252L
/*восьмеричная длинная*/
0ХAАL
/*шестнадцатеричная длинная*/
Во внутреннем представлении, если целая
константа
превысила
16
разрядов
–
автоматически представляется как 32 разряда
(10 с/с).
16.
Еслизначение
8-ой
или
16-ой константы превысило наибольшее целое
без знака, то оно также будет представлено, как
длинное беззнаковое.
Вещественная константа: 0.1e-2, 0.01.
Символьная константа: ‘a’, ‘9’, ‘M’.
Существуют
специальные
символьные
константы: ESC-последовательности:
- ‘\’’ – апостроф;
- ‘\’’’ – двойные кавычки;
17.
- ‘\0’ – пустой символ;- ‘\n’ – новая строка;
- ‘\\’ – обратная косая черта.
Символьная константа имеет целый тип и
занимает один байт: ‘9’=57.
Восьмиричный
код
символа
последовательность трех цифр: ‘\ddd’.
–
Строковая константа: “программирование”,
“программная инженерия”.
Строковая константа – это массив символов, в
конце которого вставлен код признака конца
строки - \0.
18.
“ПИ”П
И
\0
Именованные константы:
#define <имя> <текст>
<имя> - символьное имя.
<текст> - последовательность литер.
#define N 100
…
char str[N+1];
По тексту программы производится замена
<имя> на <текст> на этапе компиляции
(память под такую константу не выделяется).
19.
Замена не происходит:- внутри строковых констант;
- если цепочка, составляющая имя, является
частью определения другого имени.
#define N 100
#define NNN 10
Особенности синтаксиса:
- имена констант традиционно состоят из
заглавных букв;
- не нужно писать декларации (определять
переменную);
- после #define не нужна «;».