Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Вопрос 17. Синтаксические диаграммы



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

Синтаксическая диаграмма графически изображает структуру синтаксической единицы.

Каждая синтаксическая диаграмма имеет имя, в качестве которого используется соответствующая метапеременная.

Синтаксическая диаграмма представляет собой ориентированный граф с размеченными ребрами. Для разметки ребер используются метапеременные и метаконстанты. Метасимволы на синтаксической диаграмме не используются. Поэтому метаконстанты в кавычки не заключаются.

Метапеременные заключаются в угловые скобки < >. Для отделения имени синтаксической диаграммы от графа используется метасимвол:: =. Символы < > и:: = являются единственными используемыми метасимволами.

Представление некоторых из метасимволов языка РБНФ в виде ориентированных графов.

1) метасимволу | (Или) соответствует разветвление в синтаксической диаграмме с последующим объединением.

 

В РБНФ это будет записано так: < Переменная> :: = “A”|”B”.

2) Необязательная части конструкции (т.е. метасимволы [ ])

3) Возможность повторения конструкций ноль, один или более раз (метасимволы { })

 

Пример:

Синтаксическая диаграмма определения « Идентификатор» (идентификатор – это последовательность букв, цифр и знаков подчеркивания, начинающаяся буквой или знаком подчеркивания).

Если сравнивать между собой язык РБНФ и синтаксические диаграммы, то можно сделать следующие выводы:

1) Язык РБНФ более строг и точен, более удобен для представления синтаксиса в памяти машины, более компактен.

2) Синтаксические диаграммы более наглядны и просты для понимания, но более громоздки.

 

Вопрос 18. Типы данных

Данные

Все данные в языке Delphi подразделены на типы. Для описания каждого типа данных существует свой стандартный идентификатор: для целых — Integer, для дробных — Real, для строк — string и т.д.

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

Все типы данных в языке Delphi можно расклассифицировать следующим образом:

§ простые типы данных.

§ временной тип данных. Служит для представления значений даты и времени;

§ строковые типы данных. Служат для представления последовательностей из символов, например текста;

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

§ процедурные типы данных. Позволяют манипулировать процедурами и ф-ями как данными,

§ указательные типы данных. Данные этих типов хранят адреса других данных,

§ тип данных с непостоянным типом значений. Служит для представления значений, тип которых заранее неизвестен;

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

Константы

Данные, независимо от типа, имеют некоторое значение и в программе предстают как константы или переменные. Данные, которые получили значение в начале программы и по своей природе изменяться не могут, называются константами. Константы описываются с помощью зарезервированного слова const. За ним идет список имен констант, каждому из которых с помощью знака равенства присваивается значение. Примеры констант: const (DelphiLanguage = 'Object Pascal'; Foot = 304.8; )

Значение константы можно задавать и выражением. Эту возможность удобно использовать для комплексного представления какого-либо понятия. Например, временной промежуток, равный одному месяцу, можно задать так:

const

SecondsInMinute = 60;

SecondsInHour = SecondsInMinute * 60;

Константы бывают и типизированными; их основное назначение — объявление константных значений составных типов данных.

Переменные

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

Простые типы данных

Целочисленные типы данных

Соответственно в языке Delphi имеется несколько целочисленных типов данных

Тип данных Диапазон значений Объем памяти (байт)
Фундаментальные типы данных
Byte 0..255
Word 0..65535
Shortint –128..127
Smallint –32768..32767
Longint –2147483648..214748
Longword 0.. 4294967295
Int64 –2^63..2^63–1
Обобщенные типы данных
Cardinal 0.. 4294967295 4*
Integer –2147483648..214748 4*

 

Вещественные типы данных

Тип данных Диапазон значений Мантисса Объем памяти (байт)
Real 5.0*10–324..1.7*10308 15–16 8*
Real48 2.9*10–39..1.7*1038 11–12
Single 1.5*10–45..3.4*1038 7–8
Double 5.0*10–324..1.7*10308 15–16
Extended 3.4*10–4932..1.1*104932 19–20
Comp –9223372036854775808.. 9223372036854775807 19–20

Необходимо отметить, что тип Real является обобщенным типом данных и по отношению к нему справедливо все то, что было сказано о типах Integer и Cardinal.

Символьные типы данных

Символьные типы применяются для описания данных, значением которых является буква, цифра, знак препинания и другие символы. Существуют два фундаментальных символьных типа данных: AnsiChar и WideChar. Данные типа AnsiChar занимают один байт памяти и кодируют один из 256 возможных символов расширенной кодовой таблицы ANSI, в то время как данные типа WideChar занимают два байта памяти и кодируют один из 65536 символов кодовой таблицы Unicode.

В программе значения переменных и констант символьных типов заключаются в апострофы (не путать с кавычками! ), например: Symbol: = 'A';

Булевские типы данных

Диапазон значений булевских типов представлен 2 константами: True — истина и False — ложь

Тип данных Диапазон значений Объем памяти (байт)
Boolean False (0), True (1)
ByteBool False (0), True (не равно 0)
WordBool False (0), True (не равно 0)
LongBool False (0), True (не равно 0)

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

Определение новых типов данных

Новый тип данных определяется с помощью зарезервированного слова type, за которым следует идентификатор типа, знак равенства и описание. Нетрудно заметить, что идентификаторы новых типов в примере начинаются заглавной буквой T. Синтаксическая конструкция type позволяет создавать новые порядковые типы: перечисляемые типы и интервальные типы.

Перечисляемые типы данных

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

var

Direction: TDirection;

begin

Direction: = North;

end.

Интервальные типы данных

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

type

TDigit = 0..9;

var

Digit: TDigit;

begin

Digit: = 5;

Digit: = 10; // Ошибка! Выход за границы диапазона

end.

Данные перечисляемых и интервальных типов занимают в памяти 1, 2 или 4 байта в зависимости от диапазона значений типа.

Временной тип данных

Для представления значений даты и времени в среде Delphi существует тип TDateTime. Целая часть элемента данных типа TDateTime соответствует количеству дней.Дробная часть элемента данных типа TDateTime соответствует времени дня.

Типы данных со словом type

Если в программе создается новый тип данных, тождественный уже существующему типу данных, то компилятор не делает никаких различий между

Для того чтобы создать действительно новый тип данных, обладающий свойствами уже существующего типа данных, но не тождественный ему, необходимо использовать зарезервированное слово type

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-08; Просмотров: 1340; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.021 с.)
Главная | Случайная страница | Обратная связь