Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Конспект лекций - 2012 1-18

.pdf
Скачиваний:
6
Добавлен:
07.02.2016
Размер:
301.93 Кб
Скачать

11

Разберём подробно каждую лексическую единицу этой программы.

Комментарии. Функция main; операторные скобки; return; оператор вывода; оператор разрешения области видимости; строковый литерал;

Тема 2. Состав языка. Типы данных

Состав языка

В состав языка C++ входит:

Алфавит языка - символы языка, при помощи которых записываются программы на языке;

Лексемы - неделимая единица языка, имеющая самостоятельный смысл;

Выражения - задают правила вычислений некоторого значения;

Операторы - задают описание некоторого действия.

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

TВсе тексты на языке пишутся с помощью его алфавита. Алфавит

C++ включает:

прописные и строчные латинские буквы и символ подчеркивания (_),

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

арабские цифры от 0 до 9;

специальные символы, например +, *, { и &;

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

 

 

 

 

 

12

T

Алфавит

языка

в

стандарте

назы

символов. Кроме того, существует понятие

"набор символов

 

реализации" - все множество символов, доступных на данном

 

компьютере. Этот набор содержит базовый набор в качестве

 

подмножества.

 

 

 

 

T

Из символов базового набора составляются лексемы языка и

 

директивы препроцессора. Символы из набора реализации используются для написания комментариев. Компилятор комментарии игнорирует.

Лексемы

Существуют следующие виды лексем:

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

ключевые слова;

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

• разделители ( ( ) { } [ ]

< > , ; ‘ « пробельные символы);

 

• литералы (константы).

 

 

 

T

Границы лексем определяются другими лексемами, такими, как

 

разделители или знаки операций.

 

 

T

Лексемы

языка

программирования

ана

естественного языка. Например, лексемами являются константа 128

 

(но не ее часть 12), имя

Peter, ключевое слово goto и знак операции

 

сложения +. Из лексем составляются выражения и операторы.

 

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

Например, выражение a + b задает правило вычисления суммы величин a и b.

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

13

T Операторы делят на исполняемые и неисполняемые, простые и составные. Исполняемые операторы задают действия над данными.

Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями.

Например, int a; - это оператор описания целочисленной переменной a.

T Составной оператор , или блок -

заключенная в фигурные скобки. Блоки могут быть вложенными.

TКаждый элемент языка определяется синтаксисом и семантикой.

Синтаксические определения устанавливают правила построения

элементов языка, а семантика определяет их смысл и правила

использования.

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

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

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

TЯзык C++ чувствителен к регистру букв. Это означает, что компилятор распознает прописные и строчные буквы как разные символы. Идентификаторы name и Name рассматриваются как два разных идентификатора.

14

Ключевые слова и зарезервированные идентификаторы

TКлючевые слова - это зарезервированные идентификаторы,

которые имеют специальное значение для компилятора. Их можно

использовать только в том смысле, в котором они определены. Список

ключевых слов С++:

asm

do

if

return

typedef

auto

double

inline

short

typeid

bool

dynamic_cast int

signed

typename

break

else

long

sizeof

union

case

enum

mutable

static

unsigned

catch

explicit

namespace static_cast

using

char

export

new

struct

virtual

class

extern

operator

switch

void

const

false

private

template

volatile

const_cast

float

protected this

wchar_t

continue

for

public

throw

while

default

friend

register

true

 

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

Знак операции - это один или более символов, определающих действие над операндами. Внутри знака операции пробелы не допускаются. Символы, составляющие знак операции, могут быть как специальными (+ | < / ?), так и буквенными (new, delete). Операции по количеству операндов делятся на унарные, бинарные, тернарный. В

зависимости от контекста один и тот же знак может интерпретироваться по-разному. Все знаки операций представляют собой отдельные лексемы. Исключение составляют скобки и ? :.

15

Большинство стандартных операций может быт перегружено

(переопределено).

Константы

Константами называются неизменяемые величины. Существуют логические, целые, вещественные, символьные и строковые константы.

Компилятор, выделив константу в качестве лексемы, относит её по внешнему виду к одному из типов. Программист может задать тип константы и явным образом.

 

Константа

Формат

 

Пример

 

 

 

 

 

 

 

 

Логическая

Ключевые слова true, false

 

true, false

 

 

 

 

 

 

 

Целая

Десятичный (последовательность десятичных

4, 23, 324

 

 

 

цифр, начинающихся не с нуля, если число не

 

 

 

 

ноль)

 

 

 

 

 

Восьмеричный (ноль, за которым следуют

02, 05,

 

 

 

восьмеричные цифры от 1 до 7)

023754

 

 

 

Шестнадцатиричный (0x, за которым следуют

0xA, 0x1B,

 

 

 

шестнадцатиричные цифры 0-9, A-F)

0xFAFB

 

 

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

Десятичный ([цифры].[цифры])

 

5.3, 4., .3

 

 

 

 

 

 

 

 

Экспоненциальный ([цифры].[цифры]{E|e}[+-]

0.4e5, .2e-4,

 

 

 

[цифры])

 

3E11

 

 

Символьная

Один или более символов, заключённых в

‘A’, ‘o’, ‘ba’, ‘\n’

 

 

 

одинарные кавычки

 

 

 

 

Строковая

Последовательность символов, заключённая в

«Hello», «My

 

 

 

двойные кавычки

 

name is \n

 

 

 

 

 

Computer»

 

T

Если

требуется

сформировать

отрицател

вещественную константу, то перед ней ставится знак унарной операции

изменения знака (-), например, -5.

 

 

 

 

16

T

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

константа

в

экспоненциа

представляется в виде мантиссы и порядка. Значение константы

определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10 (например, 2.5e11 это 2,5 * 1011). При записи

вещественного числа могут быть опущены либо целая часть, либо

 

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

 

T

Символьный литерал - это один или более символов, заключенных

в одиночные кавычки (апострофы). Внутри апострофов можно задать

любой символ из набора символов реализации. Пустая символьная

 

константа недопустима.

 

 

 

T

Н е к о т о р ы е

с и м в о л ы

н а б о р а

р е а л и з а

непечатаемыми. Они предназначены для управления процессом

 

отображения печатаемых символов на экране или принтере. Для

 

представления в программе непечатаемых символов используется

 

управляющая последовательность-последовательность символов,

начинающаяся с обратной косой черты \.

 

 

В общем виде управляющая последовательность может быть задана в

двух формах:

 

 

 

\000

 

 

 

 

\xhhh

 

 

 

 

T

Здесь 000 представляет собой последовательность от одной до

трех восьмеричных цифр, а hhh - последовательность от одной до трех шестнадцатеричных цифр, которая задает код символа. При выводе кода символа на принтер или экран вместо кода изображается печатаемый символ или выполняется определяемое кодом действие

17

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

Комментарии

 

 

 

T

Комментарии

предназначены

для

пояснен

Комментарии бывают многострочными (произвольный текст,

 

начинающийся последовательностью символов /* и заканчивающийся

 

*/) и однострочными

(произвольный текст, начинающийся

 

последовательностью символов // ).

 

 

Директивы препроцессора

 

 

 

T

Директивы

препроцессора

предназначены

исходного текста программы перед компиляцией. Любая директива должна начинаться с символа #. На каждой строке может располагаться только одна директива. Например, по директиве

#include <iostream>

в текст программы будет включено содержимое файла с именем iostream.

Структура программы на языке C++

Программа на языке C++ представляет собой набор функций, .

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

TОпределение функции имеет вид:

18

тип_возвращаемого_значения имя_функции([список_параметров])

{

операторы

}

Типы данных

TОсновная цель любой программы состоит в обработке данных.

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

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

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

множество их возможных значений (связанное с внутренним представлением данных в памяти компьютера);

допустимые действия над данными (операции и функции).

T Программист задает тип каждой в

программе, исходя из характеристик реальных объектов, которые представляют эти величины. Обязательное указание типа позволяет компилятору проверять, правильно ли используется объект в конструкциях языка. От типа величины зависят машинные команды,

которые будут использоваться для обработки данных.