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

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

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

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

Добавлен: 22.11.2023

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

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

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


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. операции и функции, которые можно применять к величинам этого типа.