Основные понятия программирования.
Классификация языков программирования
Этапы создания программы
Факторы, учитываемые при написании программ
Модель оперативной памяти для программиста
Алфавит языка
Лексемы языка С++
Ключевые слова
Идентификаторы
Идентификаторы
Идентификаторы
Идентификаторы
Знаки операций
Выражения и операторы
Константы
Комментарии
Комментарии
Понятия, которые следует различать
Тип данных
Тип данных
Простые предопределенные типы данных языка С++
Простые предопределенные типы данных языка С++
Спецификаторы типа
Переменные
Описание переменных
Примеры описания переменных
Инициализация переменной
Инициализация переменной
Константы в языке С++
Целочисленные данные
Целочисленные данные
Целочисленные данные
Целочисленные константы
Целочисленные константы
Операция присваивания
Операция присваивания
Арифметические операции
Арифметические операции
Арифметические операции
Арифметические операции
Арифметические операции
Арифметические операции
Арифметические операции
Операции сдвига
Логические операции
Поразрядные логические операции
Логический тип данных
Логический тип данных
Операции отношения
Операции отношения
Логические операции
Символьный тип данных
Символьный тип данных
Управляющие последовательности
487.50K
Category: programmingprogramming

Основные понятия программирования

1. Основные понятия программирования.

2. Классификация языков программирования

1. Машинные коды
2. Ассемблер
3. Языки высокого уровня
– Универсальные
– Прикладные
С++ - универсальный язык высокого уровня
2

3. Этапы создания программы

1.
2.
3.
4.
5.
6.
7.
Написание исходного текста
Препроцессорная подготовка
Трансляция (компиляция)
Компоновка
Загрузка
Исполнение
Отладка
3

4. Факторы, учитываемые при написании программ

• Тип процессора и его разрядность
• Операционная система
• Где хранятся данные
– Оперативная память
– Внешняя память
4

5. Модель оперативной памяти для программиста

• Оперативная память состоит из пронумерованных
ячеек.
• Каждая ячейка хранит 1 байт информации и
рассматривается как двоичный 8-ми битовый вектор.
• Данные могут занимать несколько последовательно
расположенных ячеек
• Программа и данные хранятся в одной памяти
• Память разбивается на порции, называемые
сегментами
• Номер ячейки, с которой начинается порция данных
называется физическим адресом
5

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

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

7. Лексемы языка С++


ключевые (зарезервированные) слова;
идентификаторы;
знаки операций;
константы;
разделители (скобки, точка, запятая,
пробельные символы);
• комментарии.
7

8. Ключевые слова

Ключевые слова предопределены в языке
программирования и имеют вполне
определенный смысл для компилятора.
Использовать эти слова по какому-либо
другому назначению нельзя.
Перечень ключевых слов приводится в
справочниках
8

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

• Идентификаторы – это имена различных
программных объектов (имена переменных,
констант, функций и т.д.).
• Синтаксически правильный идентификатор – это
последовательность латинских букв, цифр и
символов «_» - нижнее подчеркивание,
начинающаяся с буквы или символа «_».
• Важно помнить, что в C++ различается строчное и
прописное написание букв. То есть, например,
идентификаторы ABC, Abc и abc представляют в
программе не один и тот же объект, а три разных
объекта.
9

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

• Использование в собственных
идентификаторах в качестве первого символа
«_» нежелательно, так как так обычно
именуются различные системные объекты, и в
ряде случаев может помешать переносимости
программ с одного компилятора на другой.
Обычно этот символ используется для
выделения отдельных частей
идентификаторов с целью обеспечения более
удобного их восприятия.
10

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

• Пользовательские идентификаторы не должны
совпадать с ключевыми словами языка. При
таком совпадении компилятор выдает
сообщение о синтаксической ошибке.
• Нежелательно совпадение пользовательских
идентификаторов с именами стандартных
функций или переменных, так как при этом
становится невозможным использование
соответствующих стандартных функций и
переменных. В этом случае ошибки при
компиляции программы не возникает.
11

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

• Имена программных объектов
(идентификаторов) должны отражать
назначение именуемых объектов. Простые
(обезличенные) идентификаторы следует
использовать для различных
вспомогательных объектов, когда их
область действия ограничена.
12

13. Знаки операций

• Служат для указания действий над операндами. В
зависимости от количества операндов в C++
имеются унарные, бинарные и одна тернарная
операции.
• Знаки операций могут изображаться одним или
несколькими символами. Если операция содержит в
своем изображении несколько символов, то между
символами не должно быть пробелов.
• Некоторые операции в C++ в зависимости от
контекста могут выполнять разные действия.
• Большинство стандартных операций можно
переопределять (перегружать).
13

14. Выражения и операторы

• Из знаков операций, операндов и круглых скобок строятся
выражения. В качестве операндов могут использоваться
константы, переменные, функции и другие выражения
(константы и переменные считаются частными случаями
выражений).
• Выражение, после которого стоит символ точки с запятой
считается оператром, т.е. законченным действием.
• Несколько операторов могут объединяться в составной
оператор с помощью фигурных скобок, например,
{a=b+3; c=a+k};
14

15. Константы

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

16. Комментарии

• Комментарии – это фрагменты текста,
игнорирующиеся компилятором при обработке
текста программы. Комментарии в текстах
программ используются для различных пояснений к
тексту программы, а также для исключения
временно не нужных фрагментов текста программы
(например, отладочных кодов или вариантов
реализации).
• В комментариях допускается использование
символов любого национального языка
• В C++ имеются комментарии двух видов:
однострочные и многострочные.
16

17. Комментарии

• Однострочный комментарий начинается
двумя символами // (прямой косой черты) и
заканчивается в конце строки текста
программы.
• Многострочный комментарий – начинается
символами /* и заканчивается */ и может
содержать множество строк. Многострочные
комментарии не могут вкладываться друг в
друга. Однострочные комментарии могут
находиться внутри многострочных
комментариев.
17

18. Понятия, которые следует различать

• Тип данных – что это за данные
• Переменная – где хранятся эти данные
• Значения – конкретное значение этих
данных
18

19. Тип данных

Тип данных для каждого программного объекта,
представляющего данные, определяет:
• характер данных (число, со знаком или без знака,
целое или с дробной частью, одиночный символ
или текст, представляющий последовательность
символов и т.д.);
• объем памяти, который занимают в памяти эти
данные;
• диапазон или множество возможных значений;
• правила обработки этих данных (например,
допустимые операции).
19

20. Тип данных

• Типы данных можно разделить на две группы: простые
и структурированные типы.
– Простые типы данных представляют неразделимые данные,
не имеющие внутренней структуры (это, например, числа,
символы и т.д.).
– Структурированные типы данных, как это вытекает из их
названия, имеют внутреннюю структуру.
Структурированные типы строятся на основе простых типов
данных.
• Другой уровень классификации разделяет все типы
данных на предопределенные (изначально встроенные
в язык программирования) и пользовательские (типы
данных, определяемые программистом) типы данных.
20

21. Простые предопределенные типы данных языка С++

Основные (предопределенные) типы данных часто
называют арифметическими, поскольку их можно
использовать в арифметических операциях.
Для описания основных типов определены
следующие ключевые слова:
•int (целый);
•float (вещественный);
•double (вещественный тип с двойной точностью);
•bool (логический);
•char (символьный).
21

22. Простые предопределенные типы данных языка С++

• Типы int, bool и char относят к группе
целочисленных (целых) типов, а float и
double - к группе вещественных типов типов с плавающей точкой.
• Код, который формирует компилятор для
обработки целых величин, отличается от
кода для величин с плавающей точкой.
22

23. Спецификаторы типа

Существует четыре спецификатора типа, уточняющих внутреннее
представление и диапазон значений стандартных типов:
• short (короткий);
• long (длинный);
• signed (знаковый);
• unsigned (без знаковый).
Спецификаторы добавляются слева к названию типа, например,
так:
• short int – короткое целое;
• unsigned short int - короткое целое без знака.
Спецификаторы могут в произвольном порядке. Например:
unsigned short int эквивалентно short unsigned int.
23

24. Переменные

• Переменная — это именованная область памяти, в
которой хранятся данные определенного типа.
• Каждая переменная имеет имя и значение.
• Именем переменной является идентификатор,
придуманный программистом, и служит для
обращения к области памяти, в которой хранится
значение этой переменной. Идентификатор
переменной преобразуется в адрес памяти, где
хранится переменная, в процессе компиляции
программы. Перед использованием любая
переменная должна быть описана.
24

25. Описание переменных

Общее правил определения переменной можно
сформулировать так:
• [класс памяти] <тип данных>
<идентификатор - имя> [инициализатор];
• Понятие класс памяти определяет такие
важные характеристики как время жизни и
область видимости переменных. Эти понятия
будет рассмотрено позднее.
25

26. Примеры описания переменных

int а; // переменная a типа int (целого типа)
double х; // переменная х типа double
(вещественного типа с двойной точностью)
unsigned short int d; // переменная d –
короткое целое без знака
Однотипные переменные можно определять
в одной строке:
int i, j, k;
(Что здесь не так?)
26

27. Инициализация переменной

Описание переменной можно совместить с ее инициализацией:
int а = 1213; // переменная a инициализирована значением 1213
double х = 0.003; // переменная х инициализирована значением 0.003
unsigned short int d = 13; /* переменная d инициализирована значением
13 */
Существует альтернативный способ инициализации переменных.
Следующие примеры эквивалентны предыдущим:
int а (1213); // переменная a инициализирована значением 1213
double х (0.003); // переменная х инициализирована значением 0.003
unsigned short int d (13); /* переменная d инициализирована значением
13 */
Определения неинициализированных и инициализированных
однотипных переменных можно совмещать в одной строке:
int i = 0, j, k (10);
27

28. Инициализация переменной

В качестве инициализирующего значения
можно использовать любые допустимые
выражения. Например:
double y = a * x; /* переменная y
инициализирована значением равным
произведению значений переменных a и x */
28

29. Константы в языке С++

Константы бывают двух видов: константы – литералы и именованные
константы.
Константы – литералы представляют собой сами значения.
Например:
123 -245 0.003 -12.45 ’R’ ”Это текст”
Тип данных, которому принадлежит констант – литера, определяется
компилятором автоматически по виду самого значения. Способы
записи констант – литералов разных типов будет рассмотрены
позже при изучении соответствующих типов данных.
Именованные константы задаются с помощью ключевого слова
const:
const double Pi = 3.14;
const int c1 = 1000, c2 = 2000;
const char point = ’.’;
29

30. Целочисленные данные

• Размер типа int не определяется стандартом, а
зависит от компьютера и компилятора. Для 16разрядного процессора под величины этого типа
отводится 2 байта – в этом случае диапазон
возможных значений составляет -32 768 ... 32 767
(2 в степени 16 различных значений). Для 32разрядного - 4 байта – диапазон значений -2 147
483 648 ... 2 147 483 647 (2 в степени 32 различных
значений)
30

31. Целочисленные данные

• Спецификатор short перед именем типа указывает
компилятору, что под число требуется отвести 2 байта
независимо от разрядности процессора.
• Спецификатор long означает, что целая величина будет
занимать 4 байта. Таким образом, на 16-разрядном
компьютере эквиваленты int и short int, а на 32-разрядном
— int и long int.
• При определении переменных вместо short int или long
int можно использовать более короткие обозначения:
short или long соответственно:
• short a;
long b;
31

32. Целочисленные данные


Использование типов int, short int (short), long int (long)
подразумевает представление целых чисел со знаком, поэтому
спецификатор signed можно не указывать.
• Внутреннее представление величины целого типа — целое число в
двоичном коде. Например, число +22 типа short int (short)
представляются в памяти так:
Номера разрядов: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Значения разрядов: 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0
Отрицательное число -22 выглядит следующим образом:
Номера разрядов: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Значения разрядов: 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0
32

33. Целочисленные константы

Целые константы литералы можно задавать в трех форматах: в
десятичном, восьмеричном и в шестнадцатеричном.
В десятичном формате целые значения записываются в обычном
виде:
1345 +34 -245
В восьмеричном формате сначала записывается 0 (нуль), а за ним
восьмеричные разряды самого числа:
011 07345 -0456
В шестнадцатеричном формате значащим разрядам числа должны
предшествовать символы 0x или 0X:
0x12B5 -0xAF2B 0X1FF02
33

34. Целочисленные константы

• Константам, встречающимся в программе, приписывается
тот или иной тип в соответствии с их видом. Если этот тип
по каким-либо причинам не устраивает программиста, он
может явно указать требуемый тип с помощью суффиксов
L, l (long) и u, U (unsigned). Например, константа 32L будет
иметь тип long и занимать 4 байта. Можно использовать
суффиксы L и U одновременно, например, Ox22UL или
05LU.
34

35. Операция присваивания

Формат операции:
<Переменная> = <Выражение>
Например: a = b; b = 3 * a; c = 1.234;
Сначала вычисляется значение выражения с правой
стороны, а затем полученное значение присваивается
переменной в левой части операции (значение выражения
записывается в область памяти переменной). Старое
значение переменной при этом безвозвратно теряется.
• В языке C++ возможно множественное присваивание:
<Переменная1> = <Переменная2> = … = <ПеременнаяN> =
<Выражение>
35

36. Операция присваивания

• При выполнении операции присваивания тип значения
выражения автоматически преобразуется к типу левого
операнда (к типу данных переменной в левой части).
При этом возможны потери данных или точности
• int i = 100000, k;
• short j = 10000, m;
• k = j; // Короткое целое преобразуется к целому без
потерь
• m = i; // Преобразование целого к короткому целому
приводит к искажению данных. На экран будет выведено:
-31072
36

37. Арифметические операции

• Унарный плюс (+) и унарный минус (-)
Единственный операнд любого арифметического
типа. Формат записи:
• + < Выражение >
• - < Выражение >
• Унарный плюс возвращает значение операнда без
изменений.
• Унарный минус (его иногда называют
арифметическим отрицанием) меняет знак
операнда на обратный.
37

38. Арифметические операции

Сложение (+) и вычитание (-) – бинарные операции.
Операнды могут быть любых арифметических типов
данных. Примеры записи:
a+b a–b
При выполнении операций возможны ошибки переполнения
и некорректного преобразования типов данных
операндов. Например:
unsigned short n = 0, m;
m = n - 1; //На экран будет выведено 65535
n = m + 1; // На экран будет выведено 0
38

39. Арифметические операции

• Инкремент (++) и декремент (--) – унарные операции
увеличения и уменьшения операнда на 1 соответственно.
Операнд может быть любого арифметического типа
данных.
• Операции имеют две формы – префиксную (++a, --a) и
постфиксную (a++, a--).
• Независимо от формы операция инкремента
эквивалентна следующему оператору:
• a = a + 1;
• а операция декремента следующему:
• a = a - 1;
39

40. Арифметические операции

• Разница между префиксной и постфиксной
формами этих операций заключается в том,
что при префиксной форме, переменная
сначала меняет свое значение, а потом это
измененное значение обрабатывается.
• В постфиксной форме значение
переменной сначала обрабатывается и
только потом ее значение изменяется на 1.
40

41. Арифметические операции

Умножение - * - бинарная операция. Примеры записи:
a*b
2*3
Операнды могут быть любого арифметического типа данных.
Тип данных результата операции определяется правилами
неявного преобразования типов.
При выполнении возможен выход реального значения
результата за допустимый диапазон значений типа
данных – при этом значение результата операции трудно
предсказать. Например:
1000000 * 1000000; // Результат: -727379968
41

42. Арифметические операции

• Деление - / - бинарная операция. Примеры
записи:
• a/b
2/3
• Если оба операнда являются целыми, то
результат деления будет целым. В этом случае
целый результат получается отбрасыванием
дробной части от полученного реального
значения (не округление). Например:
• 5 / 3 - результат равен 1.
42

43. Арифметические операции

• Остаток от деления - % - бинарная операция. Операнды
только целого типа. Результат операции целого типа.
Например:
• 5 % 1 - результат 0
• 5 % 2 - результат 1
• 5 % 3 - результат 2
• 5 % 4 - результат 1
• 5 % 5 - результат 0
• 5 % 6 - результат 5…..
• Если второй операнд равен 0, возникает ошибка режима
исполнения (деление на 0).
43

44. Операции сдвига

Операции сдвига - << и >> - бинарные операции. Операнды
целого типа. Результат также целого типа. Формат записи:
< Операнд 1 > << < Операнд 2 > - сдвиг влево
< Операнд 1 > >> < Операнд 2 > - сдвиг вправо
Операция сдвига влево осуществляет перемещение битов
левого операнда 1 в сторону больших разрядов на количество
разрядов, равное значению правого операнда 2.
Операция сдвига вправо осуществляет перемещение битов
левого операнда 1 в сторону меньших разрядов на
количество разрядов, равное значению правого операнда 2.
44

45. Логические операции

A
B
0
0
1
1
0
1
0
1
A И B A ИЛИ B A исключающее ИЛИ B
0
0
0
1
0
1
1
1
0
1
1
0
НЕ A
1
1
0
0
45

46. Поразрядные логические операции

К этой группе операций относятся:
~ - побитовое отрицание (побитовое НЕ) - унарная
операция;
& - побитовая конъюнкция (побитовое И) - бинарная
операция;
| - побитовая дизъюнкция (побитовое ИЛИ) - бинарная
операция;
^ - побитовое исключающее ИЛИ - бинарная операция.
Операндами этих операций целочисленных типов данных.
Результат также целочисленный.
46

47. Логический тип данных

• Величины логического типа могут принимать
только значения true и false, являющиеся
зарезервированными словами. Внутренняя
форма представления значения false - О (нуль).
Любое другое значение интерпретируется как
true. При преобразовании к целому типу true
имеет значение 1 (единица).
• В памяти переменные этого типа занимают 1 байт.
47

48. Логический тип данных

Определения переменных этого типа
выглядят, например, так:
bool b1, b2 = true, b3 (false), b4 = 1, b5 = 0;
Константы – литералы задаются ключевыми
словами true и false.
48

49. Операции отношения

Операции этой группы служат для сравнения
значений. Сюда входят следующие операции:
•== - равно;
•!= - не равно;
•> - больше;
•>= - больше или равно;
•< - меньше;
•<= - меньше или равно.
49

50. Операции отношения

• Все эти операции бинарные. В качестве
операндов могут быть использованы выражения
любых арифметических типов данных.
• Результат этих операций всегда логического типа
(bool).
• Примеры:
• a == b, a != b, a > 10, (a - 3) >= (b + 10).
50

51. Логические операции

• Эти операции используются при построении
сложных логических выражений.
• В эту группу входят 3 операции:
!
- логическое отрицание (логическое НЕ);
&& - конъюнкция (логическое И);
||
- дизъюнкция (логическое ИЛИ).
51

52. Символьный тип данных

• Для обозначения этого типа используется
ключевое слово char.
• Тип char может быть со знаком или без знака. В
величинах со знаком можно хранить значения в
диапазоне от -128 до 127. По умолчанию тип char
являемся знаковым, то есть спецификатор signed
использовать не обязательно. При использовании
спецификатора unsigned значения могут
находиться в пределах от 0 до 255.
52

53. Символьный тип данных

• Константы - литералы символьного типа
представляют собой символы, заключенные в
апострофы. Например:
’A’ ’!’ ’#’ ’f’ ’ш’ ’я’
• В языке C++ существует понятие управляющих
или ESCAPE – последовательностей.
53

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

• Управляющие последовательности начинаются символом
обратной косой черты и служат:
• Для представления символов, не имеющих графического
изображения. Например: ‘\n’ – перевод экранного
курсора в начало следующей строки; ‘\t’ символ
табуляции и т.д.
• Для представления некоторых специальных символов, а
именно: знака косой черты, апострофа, знака вопроса и
кавычки – ‘\\’, ‘\’’, ‘\?’, ‘\”’.
• Для представления любого из 256 символов таблицы ASCII
с помощью его восьмеричного или шестнадцатеричного
номера. Например: ‘\054’, ‘\x4A’.
54
English     Русский Rules