Файл: Лекция 2. Основы программирования на языке С 1 Состав языка.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 35

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


2 Лекция №2. Основы программирования на языке С++
2.1 Состав языка
В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные элементы содержит и алгоритмический язык, только слова называют лексемами (элементарными конструкциями), словосочетания - выражениями, а предложения - операторами. Лексемы образуются из символов, выражения - из лексем и символов, а операторы - из символов, выражений и лексем (рисунок 2.1):

  1. Алфавит языка, или его символы - это основные неделимые знаки, с помощью которых пишутся все тексты на языке.

  2. Лексема, или элементарная конструкция, - минимальная единица языка, имеющая самостоятельный смысл.

  3. Выражение задает правило вычисления некоторого значения.

  4. Оператор задает законченное описание некоторого действия.



Рисунок 2.1 - Состав алгоритмического языка
2.1.1 Алфавит языка
Алфавит языка С++ включает:

  1. прописные и строчные латинские буквы и знак подчеркивания;

  2. арабские цифры от 0 до 9, шестнадцатеричные цифры от A до F;

  3. специальные знаки:

« { } , | [ ] ( ) + - / % * .

' : ? < = > ! & #

; ^

  1. пробельные символы: пробел, символы табуляции, символы перехода на новую строку.

Из символов алфавита формируются лексемы языка:

  1. идентификаторы;

  2. ключевые (зарезервированные) слова;

  3. знаки операций;

  4. константы;

  5. разделители (скобки, точка, запятая, пробельные символы).

Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.
2.1.2 Идентификаторы
Идентификатор - это имя программного объекта. В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, sysop, SySoP и SYSOP - три различных имени. Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра. Пробелы внутри имен не допускаются.

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


  1. идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка;

  2. не рекомендуется начинать идентификаторы с символа подчеркивания, поскольку они могут совпасть с именами системных функций или переменных, и, кроме того, это снижает мобильность программы;

  3. на идентификаторы, используемые для определения внешних переменных, налагаются ограничения компоновщика (использование различных компоновщиков или версий компоновщика накладывает разные требования на имена внешних переменных).


2.1.3 Ключевые слова
Ключевые слова - это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Список ключевых слов С++ приведен в таблице 2.1.

Таблица 2.1 - Список ключевых слов языка С++

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



Продолжение таблицы 2.2

Вещественная

Десятичный:

[цифры].[цифры]
Экспоненциальный:

[цифры][.][цифры]{E|e}[+|-][цифры]

5.7, .001, 35.

0.2E6, .11e-3, 5E10

Символьная

Один или два символа, заключенных в апострофы

'A', 'ю', '*', 'db', '\0', '\n',

'\012', '\x07\x07'

Строковая

Последовательность символов,

заключенная в кавычки

«Здесь был Vasia»,

«\tЗначение r=\0xF5\n»


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

в табл. 2.4.

Если требуется сформировать отрицательнуюцелую или вещественную константу, то перед константой ставится знак унарной операции изменения знака (-), например: -218, -022, -0x3С, -4.8, -0.1e4.

Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты (E или e), порядок - справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10. Обратите внимание, что пробелы внутри числа не допускаются, а для отделения целой части от дробной используется не запятая, а точка.


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

Символ обратной косой черты используется для представления:

  1. кодов, не имеющих графического изображения (например, \a - звуковой сигнал, \n - перевод курсора в начало следующей строки);

  2. символов апострофа ( ' ), обратной косой черты ( \ ), знака вопроса ( ? ) и кавычки ( " );

  3. любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, \073, \0xF5. Числовое значение должно находиться в диапазоне от 0 до 255.

Последовательности символов, начинающиеся с обратной косой черты, называют управляющими, или escape-последовательностями. В таблице 2.3 приведены их допустимые значения. Управляющая последовательность интерпретируется как одиночный символ. Если непосредственно за обратной косой чертой следует символ, не предусмотренный табл. 1.3, результат интерпретации не определен. Если в последовательности цифр встречается недопустимая, она считается концом цифрового кода.
Таблица 2.3 - Управляющие последовательности в языке С++

Изображение

Шестнадцатеричный код

Наименование

\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 Типы данных

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

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

Тип данных определяет:

  1. внутреннее представление данных в памяти компьютера;

  2. множество значений, которые могут принимать величины этого типа;

  3. операции и функции, которые можно применять к величинам этого типа.