Файл: Лекция 2. Основы программирования на языке С 1 Состав языка.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.11.2023
Просмотров: 149
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
2 Лекция №2. Основы программирования на языке С++
2.1 Состав языка
В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные элементы содержит и алгоритмический язык, только слова называют лексемами (элементарными конструкциями), словосочетания - выражениями, а предложения - операторами. Лексемы образуются из символов, выражения - из лексем и символов, а операторы - из символов, выражений и лексем (рисунок 2.1):
-
Алфавит языка, или его символы - это основные неделимые знаки, с помощью которых пишутся все тексты на языке.
-
Лексема, или элементарная конструкция, - минимальная единица языка, имеющая самостоятельный смысл.
-
Выражение задает правило вычисления некоторого значения.
-
Оператор задает законченное описание некоторого действия.
Рисунок 2.1 - Состав алгоритмического языка
2.1.1 Алфавит языка
Алфавит языка С++ включает:
-
прописные и строчные латинские буквы и знак подчеркивания;
-
арабские цифры от 0 до 9, шестнадцатеричные цифры от A до F;
-
специальные знаки:
« { } , | [ ] ( ) + - / % * .
' : ? < = > ! & #
; ^Алфавит языка, или его символы - это основные неделимые знаки, с помощью которых пишутся все тексты на языке.
Лексема, или элементарная конструкция, - минимальная единица языка, имеющая самостоятельный смысл.
Выражение задает правило вычисления некоторого значения.
Оператор задает законченное описание некоторого действия.
прописные и строчные латинские буквы и знак подчеркивания;
арабские цифры от 0 до 9, шестнадцатеричные цифры от A до F;
специальные знаки:
-
пробельные символы: пробел, символы табуляции, символы перехода на новую строку.
-
идентификаторы; -
ключевые (зарезервированные) слова; -
знаки операций; -
константы; -
разделители (скобки, точка, запятая, пробельные символы).
-
идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка; -
не рекомендуется начинать идентификаторы с символа подчеркивания, поскольку они могут совпасть с именами системных функций или переменных, и, кроме того, это снижает мобильность программы; -
на идентификаторы, используемые для определения внешних переменных, налагаются ограничения компоновщика (использование различных компоновщиков или версий компоновщика накладывает разные требования на имена внешних переменных).
| asm | else | new | this |
| auto | enum | operator | throw |
| bool | explicit | privte | true |
| break | export | protected | try |
| case | extern | public | typedef |
| catch | false | register | typeid |
| char | float | reinterpret_cast | typename |
| class | For | return | union |
| const | friend | short | unsigned |
| const_cast | Goto | signed | using |
| continue | If | sizeof | virtual |
| default | inline | static | void |
| delete | Int | static_cast | volatile |
| do | long | struct | wchar_t |
| double | mutable | switch | while |
2.1.4 Знаки операцийЗнак операции - это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов. Один и тот же знак может интерпретироваться по-разному в зависимости от контекста. Все знаки операций за исключением [ ], ( ) и ? : представляют собой отдельные лексемы.2.1.5 КонстантыКонстантами называют неизменяемые величины. Различаются целые, вещественные, символьные и строковые константы. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду 1. Форматы констант, соответствующие каждому типу, приведены в табл. 2.2.Таблица 2.2 - Константы в языке С++
| Константа | Формат | Примеры |
| Целая | Десятичный: последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль Восьмеричный: нуль, за которым следуют восьмеричные цифры (0,1,2,3,4,5,6,7) Шестнадцатеричный: 0х или 0Х, за которым следуют шестнадцатеричные цифры (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) | 8, 0, 199226 01, 020, 07155 0xA, 0x1B8, 0X00FF |
| Вещественная | Десятичный: [цифры].[цифры] Экспоненциальный: [цифры][.][цифры]{E|e}[+|-][цифры] | 5.7, .001, 35. 0.2E6, .11e-3, 5E10 |
| Символьная | Один или два символа, заключенных в апострофы | 'A', 'ю', '*', 'db', '\0', '\n', '\012', '\x07\x07' |
| Строковая | Последовательность символов, заключенная в кавычки | «Здесь был Vasia», «\tЗначение r=\0xF5\n» |
Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип char. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом (о типах данных рассказывается в следующем разделе).Символ обратной косой черты используется для представления:
-
кодов, не имеющих графического изображения (например, \a - звуковой сигнал, \n - перевод курсора в начало следующей строки); -
символов апострофа ( ' ), обратной косой черты ( \ ), знака вопроса ( ? ) и кавычки ( " ); -
любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, \073, \0xF5. Числовое значение должно находиться в диапазоне от 0 до 255.
| Изображение | Шестнадцатеричный код | Наименование |
| \a | 7 | Звуковой сигнал |
| \b | 8 | Возврат на шаг |
| \f | C | Перевод страницы (формата) |
| \n | A | Перевод строки |
| \r | D | Возврат каретки |
| \t | 9 | Горизонтальная табуляция |
| \v | B | Вертикальная табуляция |
| \\ | 5C | Обратная косая черта |
| \' | 27 | Апостроф |
| \" | 22 | Кавычка |
| \? | 3F | Вопросительный знак |
| \0ddd | - | Восьмеричный код символа |
| \0xddd | ddd | Шестнадцатеричный код символа |
Управляющие последовательности могут использоваться и в строковых константах, называемых иначе строковыми литералами. Например, если внутри строки требуется записать кавычку, ее предваряют косой чертой, по которой компилятор отличает ее от кавычки, ограничивающей строку:"Издательский дом \"Питер\""Все строковые литералы рассматриваются компилятором как различные объекты. Строковые константы, отделенные в программе только пробельными символами, при компиляции объединяются в одну. Длинную строковую константу можно разместить на нескольких строках, используя в качестве знака переноса обратную косую черту, за которой следует перевод строки. Эти символы игнорируются компилятором, при этом следующая строка воспринимается как продолжение предыдущей. Например, строка"Никто не доволен своей \внешностью, но все довольны \своим умом"полностью эквивалентна строке"Никто не доволен своей внешностью, но все довольны своим умом"В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0. Поэтому длина строки всегда на единицу больше количества символов в ее записи. Таким образом, пустая строка " " имеет длину 1 байт. Обратите внимание на разницу между строкой из одного символа, например, "A", и символьной константой 'A'. Пустая символьная константа недопустима. 2.1.6 КомментарииКомментарий либо начинается с двух символов «прямая косая черта» (//) и заканчивается символом перехода на новую строку, либо заключается между символами - скобками /* и */. Внутри комментария можно использовать любые допустимые на данном компьютере символы, а не только символы из алфавита языка C++, поскольку компилятор комментарии игнорирует. Вложенные комментарии - скобки стандартом не допускаются, хотя в некоторых компиляторах разрешены.2.2 Типы данных Основная цель любой программы состоит в обработке данных. Данные различного типа хранятся и обрабатываются по-разному. В любом алгоритмическомязыке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.Тип данных определяет:
-
внутреннее представление данных в памяти компьютера; -
множество значений, которые могут принимать величины этого типа; -
операции и функции, которые можно применять к величинам этого типа.