Лексические основы языка С++

Содержание

Слайд 2

 • директивы препроцессора – определяют действия по преобразованию программы перед компиляцией, а также

• директивы препроцессора – определяют действия по преобразованию программы перед компиляцией, а
включают инструкции, которым компилятор следует во время компиляции;
• объявления – описания переменных, функций, структур, классов и типов данных;
• определения – тела выполняемых функций проекта.

Структура программы 

Слайд 3

 #директивы препроцессора
. . . . . . . . .
#директивы препроцессора
функция

#директивы препроцессора . . . . . . . . . #директивы
а ( )
{операторы}
функция в ( )
{операторы}
void main ( ) //функция, с которой начинается выполнение программы
{операторы
описания
присваивания
функция
пустой оператор
составной
выбора
циклов
перехода} 

Структура программы на Си++

Слайд 4

Директивы препроцессора - управляют преобразованием текста программы до ее компиляции. Исходная программа,

Директивы препроцессора - управляют преобразованием текста программы до ее компиляции. Исходная программа,
подготовленная на СИ в виде текстового файла, проходит 3 этапа обработки:
1) препроцессорное преобразование текста ;
2) компиляция;
3) компоновка (редактирование связей или сборка).

Слайд 5

Полный текст программы

Полный текст программы

Слайд 6

1) #define - указывает правила замены в тексте.
#define ZERO 0.0
2) #include< имя

1) #define - указывает правила замены в тексте. #define ZERO 0.0 2)
заголовочного файла> -
#include //препроцессорная директива

Слайд 7

 набор описаний и определений
состоит из набора функций

ПРОГРАММА 

 функция с именем main

набор описаний и определений состоит из набора функций ПРОГРАММА функция с именем main

Слайд 8

 void main ()

Определение функции задает ее тело,
которое представляет собой составной

void main () Определение функции задает ее тело, которое представляет собой составной
оператор (блок), содержащий другие объявления и операторы. Определение функции также задает имя функции, тип возвращаемого значения и атрибуты ее формальных параметров:
int f (int a, int b)
{
return (a+b)/2;
}

Слайд 9

ОПРЕДЕЛЕНИЯ
Пример:
int y = 10 ; //именованная константа
float x ; //переменная

ОПРЕДЕЛЕНИЯ Пример: int y = 10 ; //именованная константа float x ; //переменная

Слайд 10

Пример программы на Си:
#include /препроцессорная директива
void main() //функция
{ //начало
printf(“Hello! “);

Пример программы на Си: #include /препроцессорная директива void main() //функция { //начало
//печать
} //конец

Пример программы на Turbo pascal:
program prim;
uses crt;
begin
Writeln (‘Hello!’);
end.

Слайд 11

1. Из каких частей состоит программа на С++?
2. Чем определение отличается от

1. Из каких частей состоит программа на С++? 2. Чем определение отличается
объявления?
3. Перечислить этапы создания исполняемой программы на языке С++.
4.   Что такое препроцессор?
5. Что такое директива препроцессора?

Слайд 12

Базовые средства языка СИ++

Cлова называют лексемами (элементарными конструкциями ), словосочетания –

Базовые средства языка СИ++ Cлова называют лексемами (элементарными конструкциями ), словосочетания –
выражениями, предложения – операторами.
Лексемы образуются из символов, выражения из лексем и символов, операторы из символов выражений и лексем

Слайд 13

Элементы алгоритмического языка

   Алфавит языка СИ++:
прописные и строчные латинские буквы и знак

Элементы алгоритмического языка Алфавит языка СИ++: прописные и строчные латинские буквы и
подчеркивания;
арабские цифры от 0 до 9;
специальные знаки “{},| []()+-/%*.\’:;&?<>=!#^
пробельные символы (пробел, символ табуляции, символы перехода на новую строку).    

Слайд 14

  Лексемы языка:
-         Идентификаторы
Например:
PROG1, prog1 и Prog1 – три различных идентификатора.

Лексемы языка: - Идентификаторы Например: PROG1, prog1 и Prog1 – три различных

-         Ключевые
-         Знаки операций
-         Константы
-         Разделители – скобки, точка, запятая пробельные символы.

Слайд 15

  Константы в Си++

Константы делятся на 5 групп:
- целые(десятичные, восьмеричные, шестнадцатеричные;
-         вещественные

Константы в Си++ Константы делятся на 5 групп: - целые(десятичные, восьмеричные, шестнадцатеричные;
(с плавающей точкой);
-         перечислимые;
-         символьные;
-         строковые.

Целые константы
Десятичная константа (примеры: 8, 0, 192345).
Восьмеричная константа – (примеры: 016).
Шестнадцатеричные константы – (примеры: 0хА, 0Х00F).

Слайд 16

Вещественные константы.
Вид константы с фиксированной точкой:[цифры].[цифры] (примеры: 5.7, .0001, 41.).
Вид константы с

Вещественные константы. Вид константы с фиксированной точкой:[цифры].[цифры] (примеры: 5.7, .0001, 41.). Вид
плавающей точкой: [цифры][.][цифры]E|e[+|-][цифры] (примеры:0.5е5, .11е-5, 5Е3).

Слайд 17

Перечислимые константы
вводятся с помощью ключевого слова enum
Примеры:
enum { one=1, two=2,

Перечислимые константы вводятся с помощью ключевого слова enum Примеры: enum { one=1,
three=3,four=4};
enum {zero,one,two,three}
enum { ten=10, three=3, four, five, six};
enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday} ;

Слайд 18

Символьные константы
– это один или два символа, заключенные в апострофы.
Символьные

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

Слайд 19

1. Для представления символов, не имеющих графического отображения, например:
\a – звуковой сигнал,
\b

1. Для представления символов, не имеющих графического отображения, например: \a – звуковой
– возврат на один шаг,
\n – перевод строки,
\t – горизонтальная табуляция.
2. Для представления символов: \ , ’ , ? , ” ( \\, \’ ,\? ,\” ).
3.Для представления символов с помощью шестнадцатеричных или восьмеричных кодов (\073, \0хF5).
Строковая константа – это последовательность символов, заключенная в кавычки. Внутри строк также могут использоваться управляющие символы. Например: “\nНовая строка”,
“\n\”Алгоритмические языки программирования высокого уровня \”” .

Управляющие последовательности

Слайд 20

Типы данных в Си++

В Си++ определено 6 простых типов данных:
int (целый)
целочисленные
char (символьный)
wchar_t

Типы данных в Си++ В Си++ определено 6 простых типов данных: int
(расширенный символьный)
bool (логический)
с плавающей точкой (число=мантисса х 10к )
float(вещественный)
double (вещественный с двойной точностью)

 Существует 4 спецификатора типа, уточняющих внутреннее представление и диапазон стандартных типов:
short (короткий)
long (длинный)
signed (знаковый)
unsigned (беззнаковый)

Слайд 21

Тип int
short int - занимает 2 байта, имеет диапазон –32768 ..+32767;
long int

Тип int short int - занимает 2 байта, имеет диапазон –32768 ..+32767;
– занимает 4 байта, имеет диапазон –2 147 483 648..+2 147 483 647
unsigned short int - занимает 2 байта, имеет диапазон 0 ..65536;
unsigned long int – занимает 4 байта, имеет диапазон 0..+4 294 967 295.
Тип char
В данных типа signed char можно хранить значения в диапазоне от –128 до 127.
При использовании типа unsigned char значения могут находиться в диапазоне от 0 до 255
Тип wchar_t
Размер этого типа, как правило, соответствует типу short. Строковые константы такого типа записываются с префиксом L: Например: L“String #1”.

Слайд 22

Тип bool
Внутренняя форма представления false – 0, любое другое значение интерпретируется как

Тип bool Внутренняя форма представления false – 0, любое другое значение интерпретируется
true.
Типы с плавающей точкой.
Внутреннее представление вещественного числа состоит из 2 частей: мантиссы и порядка
Тип void
К основным типам также относится тип void Множество значений этого типа – пусто.

Слайд 23

Переменные

Переменная в СИ++ - именованная область памяти, в которой хранятся данные определенного

Переменные Переменная в СИ++ - именованная область памяти, в которой хранятся данные
типа : int a; float x;
Общий вид оператора описания:
[класс памяти][const]тип имя [инициализатор];
Класс памяти определяет время жизни и область видимости переменной
Класс памяти может принимать значения: auto, extern, static, register

Слайд 24

Переменные

Const – показывает, что эту переменную нельзя изменять (именованная константа).
Инициализатор можно записывать

Переменные Const – показывает, что эту переменную нельзя изменять (именованная константа). Инициализатор
в двух формах — со знаком равенства или в круглых скобках:
= значение
( значение )
Примеры описания переменных:
short int a = 1;
char s, symbol = 'f'; /* инициализация относится только к symbol */
char t = 54;
float c = 0.22, x, sum;
const char C = 'C';

Слайд 25

Пример

int a; //глобальная переменная
void main()
{
int b;//локальная переменная
extern int x;//переменная х определена в

Пример int a; //глобальная переменная void main() { int b;//локальная переменная extern
другом месте
static int c;//локальная статическая переменная
a=1;//присваивание глобальной переменной
int a;//локальная переменная а
a=2;//присваивание локальной переменной
::a=3;//присваивание глобальной переменной
}
int x=4;//определение и инициализация х

Слайд 26

Унарные операции в Си++

Унарные операции в Си++

Слайд 27

Унарные операции в Си++

Унарные операции в Си++

Слайд 28

Бинарные операции в Си++

Бинарные операции в Си++

Слайд 29

Бинарные операции в Си++

Бинарные операции в Си++

Слайд 30

Операции присваивания
=, +=, -=, *= и т.д.
Формат операции простого присваивания:
операнд1=операнд2

Условная операция.
Выражение1 ?

Операции присваивания =, +=, -=, *= и т.д. Формат операции простого присваивания:
Выражение2 : Выражение3;
Первым вычисляется значение выражения1. Если оно истинно, то вычисляется значение выражения2, которое становится результатом. Если при вычислении выражения1 получится 0, то в качестве результата берется значение выражения3.
Например:
x<0 ? -x : x ; //вычисляется абсолютное значение x.

Операции в СИ++

Слайд 31

Примеры выражений:
(a + 0.12)/6
x && y || !z
(t * sin(x)-1.05e4)/((2 * k

Примеры выражений: (a + 0.12)/6 x && y || !z (t *
+ 2) * (2 * k + 3))

Выражения

Слайд 32

Приоритеты операций в выражениях

Приоритеты операций в выражениях

Слайд 33

Из каких элементов состоит естественный язык? Что является аналогами этих элементов в

Из каких элементов состоит естественный язык? Что является аналогами этих элементов в
С++?
Что такое лексема? Привести примеры лексем в языке С++.
Что такое идентификатор? Правила записи идентификаторов.
Что такое константа? Как константа обрабатывается компилятором?
Какие типы констант существуют в С++. Привести примеры констант разных типов.
К какому типу относятся константы 192345, 0х56, 0хСВ, 016, 0.7865, .0045, ‘c’, “x”, one, “one”, 5 , 5.?
Что такое тип данных?
Чем отличаются типы данных: float и double, char и wchar_t, int и short int?
Чем отличаются типы данных int и unsigned int?
Перечислить все типы данных, которые существуют в C++. Сколько места в памяти занимают данные каждого типа?
На что влияет количество памяти, выделяемое для данных определенного типа?
Что такое переменная? Чем объявление переменой отличается от ее определения? Привести примеры определений и объявлений.
Что такое класс памяти? Какие классы памяти существуют в С++? Привести примеры объявлений и определений переменных разных классов памяти.
Что такое выражение? Из чего состоит выражение?
Что такое операнд?

Контрольные вопросы

Слайд 34

Какие операции можно применять к целочисленным данным? К вещественным данным? К символьным

Какие операции можно применять к целочисленным данным? К вещественным данным? К символьным
данным?
Что такое отношение?
В каком случае отношение считается ложным, а в каком – истинным?
Какие операции называются унарными? Привести примеры.
Какие операции называются бинарными? Привести примеры.
Что такое тернарная операция? Привести пример.
Какая разница между постфиксной и префиксной операцией инкремента (декремента)?
Какие операции присваивания существуют в С++?
Привести примеры выражений, содержащих операции присваивания, операции инкремента (декремента), аддитивные и мультипликативные операции. Пояснить, как они будут выполняться.
Что такое леводопустимое значение? Привести пример.
Чему будет равно значение выражений:
int z=x/y++; если int x=1, y=2;
int w=x%++y, если int x=1, y=2;
int a=++m+n++*sizeof(int); если int m=1, n=2;
float a=4*m/0.3*n; если float m=1.5; int n=5;
int ok=int(0.5*y)

Контрольные вопросы

Слайд 35

Ввод и вывод данных

В языке Си++ нет встроенных средств ввода и

Ввод и вывод данных В языке Си++ нет встроенных средств ввода и
вывода – он осуществляется с помощью функций, типов и объектов, которые находятся в стандартных библиотеках. Существует два основных способа: функции унаследованные из Си и объекты Си++.

Для ввода/вывода данных в стиле Си используются функции, которые описываются в библиотечном файле stdio.h.
1) printf ( форматная строка, список аргументов);

printf ( “Значение числа Пи равно %f\n”, pi);

Форматная строка может содержать
1)   символы печатаемые текстуально;
2)   спецификации преобразования;
3)   управляющие символы.

Слайд 36

Каждому аргументу соответствует своя спецификация преобразования:
%d, %i - десятичное целое число;
%f -

Каждому аргументу соответствует своя спецификация преобразования: %d, %i - десятичное целое число;
число с плавающей точкой;
%e,%E – число с плавающей точкой в экспоненциальной форме;
%u – десятичное число в беззнаковой форме;
%c - символ;
%s - строка.

В форматную строку также могут входить управляющие символы:
\n - управляющий символ новая строка;
\t – табуляция;
\a – звуковой сигнал и др.

Слайд 37

Модификаторы формата.
%[-]m[.p]C, где
-   - задает выравнивание по левому краю,
m – минимальная ширина

Модификаторы формата. %[-]m[.p]C, где - - задает выравнивание по левому краю, m
поля,
p – количество цифр после запятой для чисел с плавающей точкой и минимальное количество выводимых цифр для целых чисел (если цифр в числе меньше, чем значение р, то выводятся начальные нули),
С- спецификация формата вывода.

Слайд 38

Пример
printf("\nСпецификации формата:\n%10.5d-целое, \n%10.5f - с плавающей точкой, \n%10.5e – в экспоненциальной форме, \n%10s -

Пример printf("\nСпецификации формата:\n%10.5d-целое, \n%10.5f - с плавающей точкой, \n%10.5e – в экспоненциальной
строка",10,10.0,10.0,"10");
Будет выведено:
Спецификации формата:
…..00010 – целое
..10.00000 – с плавающей точкой
1.00000е+001 - в экспоненциальной форме
……..10 – строка.

Слайд 39

2) scanf ( форматная строка, список аргументов);

В качестве аргументов используются адреса переменных.

2) scanf ( форматная строка, список аргументов); В качестве аргументов используются адреса
Например:
scanf(“ %d%f ”, &x,&y);
int i;
scanf(“%d”, &i);
Спецификаторы формата
int i;
scanf ("%d", &i); // %d - прочитать целое число
int i;
scanf ("%o", &i); // %o - прочитать восьмеричное число
int i;
scanf ("%x", &i); // %x - прочитать шестнадцатеричное число
float t;
scanf ("%f", &t); // %e(%f) - прочитать вещественное число
char ch;
scanf ("%c", &ch); // %с - прочитать символ
char *str;;
scanf ("%s", str); // %s - прочитать строку

Слайд 40

При использовании библиотеки классов Си++ подключается библиотечный файл iostream.h, в котором определены

При использовании библиотеки классов Си++ подключается библиотечный файл iostream.h, в котором определены
стандартные потоки ввода данных от клавиатуры cin и вывода данных на экран дисплея cout, а также соответствующие операции
1) << - операция записи данных в поток;
2) >> - операция чтения данных из потока.
Например:
#include ;
. . . . . . . . .
cout << “\nВведите количество элементов: ”;
cin >> n;