Цепочка символов которая в программе непосредственно задает значение

Аннотация: Вводятся базовые для всего дальнейшего изложения понятия: из каких простейших «кирпичиков» состоят все тексты на языке программирования, что понимают под типом данных и какие встроенные типы данных есть в языке C#.

Состав языка

Презентацию к данной лекции Вы можете скачать здесь.

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

Алфавит и лексемы

Все тексты на языке пишутся с помощью его алфавита. В C# используется кодировка символов Unicode. Кодировкой, или кодовой таблицей (character set), называется соответствие между символами и кодирующими их числами. Кодировка Unicode позволяет представить символы всех существующих алфавитов одновременно. Каждому символу соответствует свой уникальный код.

#26. Указатели. Проще простого | Язык C для начинающих

Алфавит C# включает:

  • буквы (латинские и национальных алфавитов) и символ подчеркивания ( _ ), который употребляется наряду с буквами;
  • цифры ;
  • специальные символы, например + , * , < и
  • пробельные символы (пробел и символы табуляции);
  • символы перевода строки.

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

Лексема (token) — это минимальная единица языка, имеющая самостоятельный смысл. Существуют следующие виды лексем:

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

Лексемы языка программирования аналогичны словам естественного языка. Например, лексемами являются число 128 (но не его часть 12), имя Vasia , ключевое слово goto и знак операции сложения + . Далее мы рассмотрим лексемы подробнее.

Директивы препроцессора пришли в C# из его предшественника — языка С++. Препроцессором называется предварительная стадия компиляции, на которой формируется окончательный вид исходного текста программы. Например, с помощью директив (инструкций, команд) препроцессора можно включить или выключить из процесса компиляции фрагменты кода. Директивы препроцессора не играют в C# такой важной роли, как в С++.

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

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

Оператор задает законченное описание некоторого действия, данных или элемента программы. Например:

int a;

Это — оператор описания целочисленной переменной a .

ТА. Лекция 8. Грамматики

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

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

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

В идентификаторах C# разрешается использовать, помимо латинских букв, буквы национальных алфавитов. Например, правильными являются идентификаторы Фёкла и calc . Более того, можно применять даже так называемые escape-последовательности Unicode, то есть представлять символ с помощью его кода в шестнадцатеричном виде с префиксом u , например, u00F2 .

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

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

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

Ключевые слова — это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Список ключевых слов C# приведен в таблице 2.1. Как видите, их не так уж и много!

Таблица 2.1. Ключевые слова C#
abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual void
volatile while

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

Знак операции — это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Например, в выражении a += b знак += является знаком операции, а a и b — операндами. Символы, составляющие знак операций, могут быть специальными, например, + , , | и < , и буквенными, такими как as или new .

Читайте также:
Какую программу выбрать бухгалтеру

Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов (один, два и три операнда соответственно). Один и тот же знак может интерпретироваться по-разному в зависимости от контекста.

Разделители используются для разделения или, наоборот, группирования элементов. Примеры разделителей: скобки, точка, запятая. Ниже перечислены все знаки операций и разделители, использующиеся в C#:

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

Литералами, или константами, называют неизменяемые величины. В C# есть логические, целые, вещественные, символьные и строковые константы, а также константа null . Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов данных по ее внешнему виду. Программист может задать тип константы и самостоятельно.

Описание и примеры констант каждого типа приведены в таблице 2.2. Примеры, иллюстрирующие наиболее часто употребляемые формы констант, выделены полужирным шрифтом.

true false
8 0 199226 8u 0Lu 199226L
0xA 0x1B8 0X00FF 0xAU 0x1B8LU 0X00FFl
5.7 .001 35. 5.7F .001d 35. 5F .001f 35m
0.2E6 .11e+3 5E-10 0.2E6D .11e–3 5E10
‘A’ ‘ю’ ‘*’ ‘’ ‘n’ ‘xF’ ‘x74’ ‘uA81B’

Логических литералов всего два: true и false . Они широко используются в качестве признаков наличия или отсутствия чего-либо.

Целые литералы могут быть представлены либо в десятичной, либо в шестнадцатеричной системе счисления, а вещественные — только в десятичной системе, но в двух формах: с фиксированной точкой и с порядком. Вещественная константа с порядком представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты ( E или e ), порядок — справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10 (например, 1.3e2 = 1,3 x 10 2 = 130). Пробелы внутри константы не допускаются.

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

Символьная константа представляет собой любой символ в кодировке Unicode. Символьные константы записываются в одной из четырех форм:

  • «обычный» символ, имеющий графическое представление (кроме апострофа и символа перевода строки) — ‘A’ , ‘ю’ , ‘*’ ;
  • управляющая последовательность — ‘’ , ‘n’ ;
  • символ в виде шестнадцатеричного кода — ‘xF’ , ‘x74’ ;
  • символ в виде escape-последовательности Unicode — ‘uA81B’ .

Управляющей последовательностью, или простой escape-последовательностью, называют определенный символ, предваряемый обратной косой чертой. Управляющая последовательность интерпретируется как одиночный символ и используется для представления:

  • кодов, не имеющих графического изображения (например, n — переход в начало следующей строки);
  • символов, имеющих специальное значение в строковых и символьных литералах, например, апострофа ( ‘ ).

Допустимые значения последовательностей приведены в таблице 2.3.

Таблица 2.3. Управляющие последовательности в С# Вид Наименование
a Звуковой сигнал
b Возврат на шаг
f Перевод страницы (формата)
n Перевод строки
r Возврат каретки
t Горизонтальная табуляция
v Вертикальная табуляция
\ Обратная косая черта
Апостроф
« Кавычка
Нуль-символ

Символ, представленный в виде шестнадцатеричного кода, начинается с префикса x , за которым следует код символа. Числовое значение должно находиться в диапазоне от 0 до 2 16 – 1, иначе возникает ошибка компиляции.

Escape-последовательности Unicode служат для представления символа в кодировке Unicode с помощью его кода в шестнадцатеричном виде с префиксом u или U , например, u00F2 , U00010011 . Коды в диапазоне от U10000 до U10FFFF представляются в виде двух последовательных символов; коды, превышающие U10FFFF , не поддерживаются.

Управляющие последовательности обоих видов могут использоваться и в строковых константах, называемых иначе строковыми литералами. Например, если требуется вывести несколько строк, можно объединить их в один литерал, отделив одну строку от другой символами n :

«Никто не доволен своейnвнешностью, но каждый доволенnсвоим умом»

Этот литерал при выводе будет выглядеть так:

Никто не доволен своей внешностью, но каждый доволен своим умом

Строка может быть пустой (записывается парой смежных двойных кавычек «» ). Пустая символьная константа недопустима.

Константа null представляет собой значение, задаваемое по умолчанию для величин так называемых ссылочных типов, которые мы рассмотрим далее в этой лекции.

Комментарии

Комментарии предназначены для записи пояснений к программе и формирования документации. Компилятор комментарии игнорирует. Внутри комментария можно использовать любые символы. В C# есть два вида комментариев: однострочные и многострочные.

Однострочный комментарий начинается с двух символов прямой косой черты ( // ) и заканчивается символом перехода на новую строку, многострочный заключается между символами-скобками /* и */ и может занимать часть строки, целую строку или несколько строк. Комментарии не вкладываются друг в друга.

Кроме того, в языке есть еще одна разновидность комментариев, которые начинаются с трех подряд идущих символов косой черты ( /// ). Они предназначены для формирования документации к программе в формате XML. Компилятор извлекает эти комментарии из программы, проверяет их соответствие правилам и записывает их в отдельный файл.

Читайте также:
Как изменить программу открывающую файлы

Источник: intuit.ru

Глава 9 Формальные

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

Далее цепочки символов будем обозначать греческими буквами: а, (3, у.

Итак, цепочка — это последовательность, в которую могут входить любые допус­тимые символы. Строка, которую вы сейчас читаете, является примером цепочки, допустимые символы в которой — строчные и заглавные русские буквы, знаки препинания и символ пробела. Но цепочка — это необязательно некоторая ос­мысленная последовательность символов. Последовательность «аввв.магрьь ,.лл» — тоже пример цепочки символов.

Для цепочки символов важен состав и количество символов в ней, а также поря­док символов в цепочке. Один и тот же символ может произвольное число раз ходить в цепочку. Поэтому цепочки «а» и «аа», а также «аб» и «бя» — это раз-ичные цепочки символов. Цепочки символов аир равны (совпадают), а = р, 0° Ли они имеют один и тот же состав символов, одно и то же их количество и

и наковый порядок следования символов в цепочке, «к*

личество символов в цепочке называют длиной цепочкжДлнна цепочки сим- л °в а обозначается как |а|. Очевидно, что если а — р, то и~|а| = |р|.

(ofi 9ВНо ^ оп ерацией над цепочками символов является операция конкатенации Ъе Динения или сложения) цепочек.

348 Глава 9. Формальные языки и

Конкатенация (сложение, объединение) двух цепочек символов — это допи вание второй цепочки в конец первой. Конкатенация цепочек аир обознач ся как ар. Выполнить конкатенацию цепочек просто: например, если а : а Р = «ег», то ар = «с

Так как в цепочке важен порядок символов, то очевидно, что операция конка нации не обладает свойством коммутативности, то есть в общем счучае 3 a r такие, что аР^Ра. Также очевидно, что конкатенация обладает свойством ас циативности, то есть (сф)у = а(Ру).

Можно выделить еще две операции над цепочками.

Обращение цепочки — это запись символов цепочки в обратном порядке. Обра­щение цепочки а обозначается как a R . Если a = «абвг», то a R = «гвба». Для опе­рации обращения справедливо следующее равенство V a,p: (aP) R = p R a R .

Итерация (повторение) цепочки п раз, где neN, n > 0 — это конкатенация це­почки самой с собой п раз. Итерация цепочки a n раз обозначается как а п . Для операции повторения справедливы следующие равенства V а: а 1 = а, а 2 = аа а 3 = ааа, . и т. д.

Среди всех цепочек символов выделяется одна особенная — пустая цепочка. Пустая цепочка символов — это цепочка, не содержащая ни одного символа. Пустую цепочку здесь везде будем обозначать греческой буквой X (в литературе ее иногда обозначают латинской буквой е или греческой s).

Для пустой цепочки справедливы следующие равенства:

  1. N = 0;
  2. Va: Ха = аХ = a;
  3. №-;
  4. Vn>0: Xn = X;
  5. Va: a 0 — X.
  • определить множество допустимых символов языка;
  • определить множество правильных программ языка;
  • задать смысл для каждой правильной программы.
  • изложить смысл программы, написанной на языке программирования, на дру­ гом языке, более понятном тому, кому адресована программа;
  • использовать для проверки смысла некоторую «идеальную машину», которая предназначена для выполнения программ, написанных на данном языке.
  • VT — множество терминальных символов;
  • VN — множество нетерминальных символов: VNnVT = 0;
  • множество терминальных символов VT содержит двенадцать элементов: де­ сять десятичных цифр и два знака;
  • множество нетерминальных символов VN содержит три элемента: символы , и ;
  • множество правил содержит 15 правил, которые записаны в три строки (то есть имеются только три различных правых части правил);
  • целевым символом грамматики является символ .

Источник: studfile.net

Алфавит, идентификаторы, ключевые слова и константы C++

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

Алфавит C++

Алфавит C++ включает:

  • прописные и строчные латинские буквы и знак подчеркивания;
  • арабские цифры от 0 до 9;
  • специальные знаки: ? < >, ¦ [ ] ( ) + — / % * . ‘ : ? < = >! ^
  • пробельные символы: пробел, символы табуляции, символы перехода на новую строку.

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

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

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

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

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

Читайте также:
Как перевести на русский программу wps office

Алфавит, идентификаторы, ключевые слова и константы C++

СоветДля улучшения читаемости программы следует давать объектам осмысленные имена. Существует соглашение о правилах создания имен, называемое венгерской нотацией (поскольку предложил ее сотрудник компании Microsoft венгр по национальности), по которому каждое слово, составляющее идентификатор, начинается с прописной буквы, а вначале ставится префикс, соответствующий типу величины, например, iMaxLength, IpfnSetFirstDialog.
Другая традиция — разделять слова, составляющие имя, знаками подчеркивания: maxjength, number_of_galosh.

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

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

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

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

Список ключевых слов C++
asm else new this
auto enum operator throw
bool explicit private 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
dynamic_cast namespace template

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

Знак операции — это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов. Знаки операций приведены в отдельной заметке – Операции языка C++

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

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

Константы

Константами называют неизменяемые величины. Различаются целые, вещественные, символьные и строковые константы. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду (формат константы можно указать самостоятельно).

Форматы констант, соответствующие каждому типу, приведены в таблице ниже.

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

следуют восьмеричные цифры

Шестнадцатеричный: 0х или 0Х,

за которым следуют шестнадцатеричные

Не следует забывать, что у каждого типа данных есть диапазон допустимых значений.

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

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

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

Все строковые литералы рассматриваются компилятором как различные объекты.

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

“Никто не доволен своей
внешностью, но все довольны
своим умом”

полностью эквивалентна строке

“Никто не доволен своей внешностью, но все довольны своим умом”

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

Алфавит, идентификаторы, ключевые слова и константы C++

Обратите внимание на разницу между строкой из одного символа, например, «А», и символьной константой ?А?.

Пустая символьная константа недопустима.

Комментарии

Комментарий либо начинается с двух символов «прямая косая черта» (//) и заканчивается символом перехода на новую строку, либо заключается между символами-скобками /* и */. Внутри комментария можно использовать любые допустимые на данном компьютере символы, а не только символы из алфавита языка C++, поскольку компилятор комментарии игнорирует. Вложенные комментарии-скобки стандартом не допускаются, хотя в некоторых компиляторах разрешены.

По материалам книги «Программирование на языке высокого уровня CC++», Павловская Т.А.

Источник: itandlife.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru