Технологии программирования. Объектно-ориентированные языки программирования. Основные конструкции языка программирования С++

Содержание

Слайд 2


История и назначение языка С++
Имена. Переменные.
Константы. Выражения
Все операции

История и назначение языка С++ Имена. Переменные. Константы. Выражения Все операции языка
языка С++
Программирование линейных структур

План:

Слайд 3

Язык программирования C++ Введение

Первоначальное название «С with Classes».
Основное достоинство – наличие

Язык программирования C++ Введение Первоначальное название «С with Classes». Основное достоинство –
большого количества специальных средств и меха-низмов, упрощающих написа-ние сложных системных про-грамм.
Основной недостаток – незащищенный синтаксис, который часто не позволяет точно идентифицировать ошибку на этапе компиляции программы.

Си - 1972 Денис Ритчи
(1989 Стандарт ANSI,
1999 Новый стандарт)

С++
(начало работы:1979-й год
автор: Бьерн Страуструп)

Standard С++
(1998)

BCPL (1967)

Java

C#

Слайд 4

Простейшие конструкции языка Алфавит и основные лексемы языка программирования

Алфавит языка C++ включает:
1)

Простейшие конструкции языка Алфавит и основные лексемы языка программирования Алфавит языка C++
строчные и прописные буквы латинского алфавита;
2) арабские цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;
3) шестнадцатеричные цифры: 0..9, а..f или A..F;
4) специальные символы: + - * / = < & ; и т. д.;

Слайд 5

ИДЕНТИФИКАТОРЫ

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

ИДЕНТИФИКАТОРЫ Для символического обозначения величин, имен функций и т.п. используются имена или
в языке Си++ – это последовательность знаков, начинающаяся с буквы или знака подчеркивания. В идентификаторах можно использовать заглавные и строчные латинские буквы, цифры и знак подчеркивания. 
Прописные и строчные буквы различаются.
Примеры: ABC abc Abc ABc AbC MY_Primer_1 Prim_123

Слайд 6

Длина идентификаторов произвольная. Примеры правильных идентификаторов:
abc A12 NameOfPerson BYTES_PER_WORD Отметим, что abc и Abc –

Длина идентификаторов произвольная. Примеры правильных идентификаторов: abc A12 NameOfPerson BYTES_PER_WORD Отметим, что
два разных идентификатора, т.е. заглавные и строчные буквы различаются.
Примеры неправильных идентификаторов:
12X a-b Ряд слов в языке Си++ имеет особое значение и не может использоваться в качестве идентификаторов. Такие зарезервированные слова называются ключевыми.

Слайд 7

КЛЮЧЕВЫЕ СЛОВА

Ключевые (служебные) слова – это идентификаторы, зарезервированные в языке для специального

КЛЮЧЕВЫЕ СЛОВА Ключевые (служебные) слова – это идентификаторы, зарезервированные в языке для
применения. Их использование строго регламентировано.
Далее приведен cписок ключевых слов:

Слайд 8

В СЛЕДУЮЩЕМ ПРИМЕРЕ

int max(int x, int y)
{
if (x > y)

В СЛЕДУЮЩЕМ ПРИМЕРЕ int max(int x, int y) { if (x >

return x;
else
return y;
}

Слайд 9

max, x и y –имена или идентификаторы. Слова int, if, return и else – ключевые слова, они не могут быть именами переменных или функций и используются

max, x и y –имена или идентификаторы. Слова int, if, return и
для других целей.

Слайд 10

Описание функции

<Команды препроцессора>
[<Объявление типов, переменных и констант>]
[<Объявления (прототипы) функций>]
<Описание функции main()>
[<Описания других

Описание функции [ ] [ ] [ ] ([ ]) {[ ]
функций>]

<Тип результата или void> <Имя функции> ([<Список параметров>])
{[ < Объявление локальных переменных и констант >]
<Операторы>
}

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

С++ различает прописные и строчные буквы!

Слайд 11

Пример программы на С++

Microsoft Visual C++ (Ex1_01)
#include "stdafx.h"
#include
int a=18,
b=24,

Пример программы на С++ Microsoft Visual C++ (Ex1_01) #include "stdafx.h" #include int

c;
int nod(int a,int b)
{
while (a!=b)
if (a>b) a=a-b;
else b=b-a;
return a;
}
int main()
{
c=nod(a,b);
printf("nod=%d\n", c);
return 0;
}

Команды
препроцессора

Объявление
переменных

Основная
функция

Описание
функции

Слайд 12

Константы и переменные

Основными объектами любой программы являются данные

Данные

Константы

Переменные

Литералы

неинициализированные

инициализированные

поименованные

Константы и переменные Основными объектами любой программы являются данные Данные Константы Переменные Литералы неинициализированные инициализированные поименованные

Слайд 13

Константы

Константы – данные, не изменяемые в процессе выполнения программы.
Поименованные константы –

Константы Константы – данные, не изменяемые в процессе выполнения программы. Поименованные константы
константы, обращение к которым выполняется по имени. Они описываются в разделе описаний.
Литералы –это лексема, представляющая изображение фиксированного числового, строкового или символьного значения, записанная в тексте программы.
Константы делятся на пять групп:
целые,
вещественные,
перечислимые,
символьные,
строковые.
Компилятор, выделив константу, относит ее к той или другой группе по ее «внешнему виду» (по форме записи) в исходном тексте и по числовому значению.

Слайд 14

ПЕРЕМЕННЫЕ

 Переменная – это символическое обозначение величины в программе. Как ясно из названия,  значение   переменной 

ПЕРЕМЕННЫЕ Переменная – это символическое обозначение величины в программе. Как ясно из
(или величина, которую она обозначает) во время выполнения программы может изменяться.

Слайд 15

ПЕРЕМЕННЫЕ

В языке Си++ прежде чем использовать переменную, ее необходимо объявить. Объявить переменную с именем   x можно так:
int x;
В

ПЕРЕМЕННЫЕ В языке Си++ прежде чем использовать переменную, ее необходимо объявить. Объявить
объявлении первым стоит название типа переменной   int (целое число), а затем идентификатор   x – имя переменной. У переменной  x есть тип – в данном случае целое число.

Слайд 16

ПЕРЕМЕННЫЕ


Тип переменной изменить нельзя, т.е. пока переменная   x существует, она всегда будет целого типа.

ПЕРЕМЕННЫЕ Тип переменной изменить нельзя, т.е. пока переменная x существует, она всегда будет целого типа.

Слайд 17

Язык Си++ – это строго типизированный язык. Любая величина, используемая в программе, принадлежит

Язык Си++ – это строго типизированный язык. Любая величина, используемая в программе,
к какому-либо типу. При любом использовании переменных в программе проверяется, применимо ли выражение или операция к типу переменной. Довольно часто смысл выражения зависит от типа участвующих в нем переменных.

Слайд 18

ОСНОВНЫЕ ТИПЫ ДАННЫХ В C++

int — целочисленный тип данных.
float — тип данных

ОСНОВНЫЕ ТИПЫ ДАННЫХ В C++ int — целочисленный тип данных. float —
с плавающей запятой.
double — тип данных с плавающей запятой двойной точности.
char — символьный тип данных.
bool — логический тип данных.

Слайд 19

Технология «Блиц - игра». Заполните таблицу и получите свои балы.

Технология «Блиц - игра». Заполните таблицу и получите свои балы.

Слайд 20

Технология «Блиц - игра». Заполните таблицу и получите свои балы.

Технология «Блиц - игра». Заполните таблицу и получите свои балы.

Слайд 21

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ

Объявление переменной в C++ происходит таким образом: сначала указывается тип данных

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ Объявление переменной в C++ происходит таким образом: сначала указывается тип
для этой переменной а затем название этой переменной.

Слайд 22

int a; // объявление переменной a целого типа.
float b; //

int a; // объявление переменной a целого типа. float b; // объявление
объявление переменной b типа данных с плавающей запятой.
double c = 14.2; // инициализация переменной типа double.
char d = 's'; // инициализация переменной типа char.
bool k = true; // инициализация логической переменной k.

Пример объявления переменных

Слайд 23

1.4 Типы данных

Тип – описатель данных, который определяет:
а) диапазон изменения значения, задавая

1.4 Типы данных Тип – описатель данных, который определяет: а) диапазон изменения
размер ее внутреннего представления;
б) множество операций, которые могут выполняться над этой переменной
в) требуемое для переменной количество памяти при ее начальном распределении
г) интерпретацию двоичного кода значений при последующих обращениях к переменным.
Кроме того, тип используется для контроля типов с целью обнаружения возможных случаев недопустимого присваивания.
В С++ стандартно определено большое количество типов, которые программист может использовать без предварительного описания.

Слайд 24

Фундаментальные типы данных 1. Интегральные типы

Примечание – Для совместимости считается: 0

Фундаментальные типы данных 1. Интегральные типы Примечание – Для совместимости считается: 0
– false; не 0 – true.

Слайд 25

Фундаментальные типы данных (2) 2. Вещественные типы

3. Неопределенный тип void
Нельзя объявлять

Фундаментальные типы данных (2) 2. Вещественные типы 3. Неопределенный тип void Нельзя
значения типа void, он используется только при объявлении
нетипизированных указателей;
функций, не возвращающих значений (процедур).

Слайд 27

1.5 Объявление переменных и поименованных констант

[<Изменчивость>] [<Тип>]<Список идентификаторов> [=<Значение>];
где <Изменчивость> – описатель

1.5 Объявление переменных и поименованных констант [ ] [ ] [= ];
возможности изменения значений: const – поименованная константа,
volatile – переменная, меняющаяся в промежутках между явными обращениями к ней
без указания изменчивости – обычная переменная
<Тип> – описатель типа: int, char, float, double и т.д.;
<Список идентификаторов> – список имен переменных или констант;
<Значение> – начальное значение переменной или значение
константы.

Слайд 28

Примеры объявлений переменных и констант

Неинициализированные переменные:
int f,c,d; float r;
I,j;unsigned int max,min;
сhar

Примеры объявлений переменных и констант Неинициализированные переменные: int f,c,d; float r; I,j;unsigned
c1,c2; unsigned char c5;
Инициализированные переменные
double k=89.34; char ch=‘G’;
Поименованные константы
const long a=6; const float pp=6.6e-34;
На практике все объявления могут быть перемешаны в описаниях программы:
const char simt=‘T’;float max=100,min=-100;
double f,s,eps=0.001;
Переменные и поименованные константы могут быть объявлены в любом месте программы:
вне всех функций, внутри функций, в любом месте функции.
Основное условие – объявление должно стоять до обращения к переменной или константе.

Слайд 29

1.5.1. Перечисляемый тип

Используется для объявления набора поименованных целых констант.
Формат:
enum {<Ид>[=<Целое>] [,<Ид>[<>]…]}
<Список

1.5.1. Перечисляемый тип Используется для объявления набора поименованных целых констант. Формат: enum
переменных>;
Пример:
enum {SUN, MON, TUES, FRI=5, SAT} day;
Константы присваиваются, начиная с нуля или с указанного значения.

Имя
переменной

SUN =0, MON = 1, TUES = 2, FRI=5, SAT=6

Слайд 30

1.6 Объявление типа пользователя


typedef <Описание типа> <Имя объявляемого типа>;
Примеры:
1) typedef unsigned

1.6 Объявление типа пользователя typedef ; Примеры: 1) typedef unsigned int word;
int word;
2) typedef enum {false, true} boolean;

Имя
нового типа

Имя
нового типа

Слайд 31

1.7 Выражения

Выражение – это последовательность операндов, разделителей и знаков операций, задающая вычисление
Выражение

1.7 Выражения Выражение – это последовательность операндов, разделителей и знаков операций, задающая
есть правило для получения значения.
В качестве операндов могут выступать константы, переменные, стандартные функции, определенные в языке.
Порядок операций определяется рангами (приоритетами) и правилами их группирования (ассоциативностью).
Для изменения порядка выполнения операций используются круглые скобки.
Операции делятся на
- унарные;
бинарные.
Бинарные могут быть:
- аддитивные; - поразрядные;
- мультипликативные; - операции отношения
- сдвиговые; - логические
- операции присваивания

Слайд 32

1.8 Операции

Унарные операции
Выполняются над одним операндом
- унарный минус - меняет знак

1.8 Операции Унарные операции Выполняются над одним операндом - унарный минус -
арифметического операнда;
+ унарный плюс - введен для симметрии с унарным минусом;
! логическое отрицание;
& операция получения адреса операнда
* обращение по адресу (операция разыменования)
Порядковые:
++<идентификатор>, <идентификатор>++ (следующее);
- -<идентификатор>, <идентификатор> - - (предыдущее).
Местоположение знаков операций определяет в какой момент осуществляется изменение операнда.
Если знак стоит слева от операнда – то сначала значение изменяется, а потом принимает участие в вычислении.
Если знак стоит справа от операнда – то сначала операнд принимает участие в вычислении, а затем меняется его значение. (i++; a*++i; --i+c; c*i--)

Слайд 33

Операции(2)

БИНАРНЫЕ
Аддитивные: +, -,
Мультипликативные:
* - умножение, если операнды

Операции(2) БИНАРНЫЕ Аддитивные: +, -, Мультипликативные: * - умножение, если операнды целые,
целые, то результат целый;
/ - если делимое и делитель - целые, то результат - целое ,
% - остаток от деления целых чисел.
Пример:
int a=5;int b = 3; float c=9.3

a+b
a / b
a % b
a*b
c / b
(a+b)/(a-b*a)

8

1

2

15

3.1

2

Слайд 34

Операции (3)

2. Операции отношения – применяют к числам, символам– в результате получают

Операции (3) 2. Операции отношения – применяют к числам, символам– в результате
логическое значение:
<, >, ==, !=, <=, >= результат операций отношения – это истина или ложь
В С++ истина – это не 0 (true)
ложь - это 0 (false)
Пример:
int a = 5; int b = 3;

a > b
a == b

не 0

0

Слайд 35

Операции(4)

Логические
&& - конъюнкция (и) арифметических операндов или операций отношений. Результат целочисленный

Операции(4) Логические && - конъюнкция (и) арифметических операндов или операций отношений. Результат
0 (ложь) или не 0 (истина).
|| - дизъюнкция (или) арифметических операндов или отношений. Результат целочисленный 0 (ложь) или не 0 (истина).
(к логическим операциям относится и унарная операция ! -отрицание).
Чаще всего операндами логических операций являются условные выражения.
Логические выражения:
выражение1&&выражение2 – истинно только тогда, когда оба выражения истинны;
выражение1||выражение2 – истинно, хотя бы одно из выражений истинно;
!выражение - истинно, если выражение ложно, и наоборот.
6>2&&3==3 - истина
!(6>2&&3==3) - ложь
x !=0 && 20/x<5 - второе выражение вычисляется, если х!=0.

Слайд 36

Операции (5)

Логические поразрядные
& (и) - поразрядная конъюнкция (и) битовых представлений значений

Операции (5) Логические поразрядные & (и) - поразрядная конъюнкция (и) битовых представлений
целочисленных выражений,
| (или) поразрядная дизъюнкция (или) битовых представлений значений целочисленных выражений,
^ (исключающее или) поразрядная исключающая или битовых представлений значений целочисленных выражений.
Примеры:
6&5 - 4
6|5 - 7
6^5 -3

00000110 & 00000101 ? 00000100

00000110 | 00000101 --> 00000111

00000110 ^ 00000101 ? 00000011

Слайд 37

Операции (6)

Операции сдвига
>> сдвиг вправо битового представления значения левого целочисленного

Операции (6) Операции сдвига >> сдвиг вправо битового представления значения левого целочисленного
операнда на количество разрядов, равное значению правого целочисленного операнда,
<< сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого целочисленного операнда.
Примеры:
4<<2 16
5>>1 2

00000100 << 00010000

4

16

00000101 >> 00000010

5

2

Слайд 38

Операции(7)

Операции присваивания
В С++ присваивание относится к операциям и используется для формирования бинарных

Операции(7) Операции присваивания В С++ присваивание относится к операциям и используется для
выражений. Поэтому в С++ отсутствует отдельный оператор присваивания.
В качестве левого операнда в операциях присваивания может использоваться только переменная.
= += -= *= /= %= &= ^= |= <<= >>=
= - присваивает левому операнду значение выражения правой части;
Остальные операции присваивают левому операнду результат выполнения операции, указанной слева от операции равно, левого операнда и правого.
Примеры:
Int k;
k=35/4;
k*=5-2;
k+=21/3;

8

24

31

Слайд 39

Операции(8)

Условная операция
Единственная операция, которая выполняется над тремя операндами
выражение_1 ? Выражение_2 : выражение_3
Первым

Операции(8) Условная операция Единственная операция, которая выполняется над тремя операндами выражение_1 ?
вычисляется значение выражения_1.
Если оно истинно, т.е. не равно 0, то вычисляется выражение_2, которое становится результатом.
Если при вычислении выражения_1 получится 0, то вычисляется выражение_3, которое становится результатом.
Примеры:
x < 0 ? –x : x;
printf(“%3d%c%”,a,i==n?’ ‘:’\n’);

Слайд 40

Операции (9)

Запятая, как разновидность операции
В С++ несколько выражений могут быть записаны через

Операции (9) Запятая, как разновидность операции В С++ несколько выражений могут быть
запятую.
Выражения, разделенные запятой выполняются последовательно слева направо.
<Выражение1>,<Выражение2>,...<Выражение n>
В качестве результата сохраняется тип и значение самого правого выражения.
Примеры:
int m=5,z;
z=(m=m*5,m*3);
int d,k;
k=(d=4,d*8);
В С++ круглые и квадратные скобки также играют роль бинарных операций (обращение к функциям, обращение к элементам массива и т.д.)

m=25, z=75

d=4, Результат к=32

Слайд 41

Приоритет операций

1. ( ) [ ] -> :: .
2. !

Приоритет операций 1. ( ) [ ] -> :: . 2. !
(не) + - ++ -- &(адрес) *(указатель) sizeof new delete
3. .* ->*
4. * / %
5. + - (бинарные)
6. << >>
7. < <= > >=
8. = = ! =
9. &(поразрядное и)
10. ^(исключающее или)
11. | (поразрядное или)
12. &&
13. ||
14. ?:
15. = *= /= %= += -= &= ^= |= <<= >>=
16. ,

Слайд 42

Примеры выражений

a) int a=10, b=3; float ret; ret=a/b;
б) c=1; b=c++;
в)

Примеры выражений a) int a=10, b=3; float ret; ret=a/b; б) c=1; b=c++;
c=1; sum=++c;
г) c=a<<4;
д) a+=b;
е) a=b=5;
ж) с=(a=5, b=a*a);
з) a=(b=s/k)+n;
и) c=(a>b)?a:b;

ret=3

b=1, c=2

c=2, sum=2

эквивалентно с=a*16;

эквивалентно a=a+b;

эквивалентно b=5; a=b;

эквивалентно a=5; b=a*a; c=b;

эквивалентно b=s/k; a=b+n;

если a>b, то с=a, иначе с=b

Слайд 43

Математические функции

В выражениях можно использовать следующие математические функции из библиотеки :
fabs(<

Математические функции В выражениях можно использовать следующие математические функции из библиотеки :
вещественное выражение>) // абс. значение
abs(<Целое выражение>) // абс. значение
sqrt(<Вещественное выражение>) // √x
exp(<Вещественное выражение>) // ex
log(<Вещественное выражение>) // ln x
log10 (< Вещественное выражение >) // log10(x)
sin(<Вещественное выражение>)
cos(<Вещественное выражение>)
atan(<Вещественное выражение>) // arctg x
tan(< Вещественное выражение >) // tg x
acos (< Вещественное выражение >) // арккосинус
asin (< Вещественное выражение >) // арксинус
sinh(<Вещественное выражение>) // гиперболический синус
cosh(<Вещественное выражение>) //гиперболический косинус
Библиотека
rand () – генерация случайного числа 0 ≤ x < 215-1;
srand (<Ц. выр. >) – инициализация генератора случайных чисел;

Слайд 44

Правила вычисления выражений

При вычислении выражений некоторые операции требуют , чтобы операнды были

Правила вычисления выражений При вычислении выражений некоторые операции требуют , чтобы операнды
соответствующего типа. Если это требование не выполняется – осуществляется стандартное принудительное неявное преобразование типов.
Стандартное преобразование включает преобразование «низших» типов к «высшим».
Такое преобразование гарантирует сохранение значимости.

signed (unsigned) char

signed (unsigned) short

signed (unsigned) int

signed (unsigned) long

float

double

long double

Высшие

Низшие

Слайд 45

Правила вычисления выражений (2)

Для выполнения операций над некоторыми типами данных требуется явное

Правила вычисления выражений (2) Для выполнения операций над некоторыми типами данных требуется
переопределение типов.
Различают:
Функциональное преобразование
<имя типа> (Список выражений)
Примеры:
int(3.14); float(2/3); int(‘A’);
Однако, функциональная запись не подходит для сложного типа.
В этом случае применяется каноническая форма преобразования:
(имя типа)<выражение>
Примеры:
(unsigned long)(x/3+2); (long)25;(char)123;
Если ввести новый тип – тогда можно использовать и функциональное преобразование
typedef unsigned long int uli;
uli(x/3-123);