Глава 5. Базовые элементы языка — КиберПедия 

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

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Глава 5. Базовые элементы языка

2017-07-01 306
Глава 5. Базовые элементы языка 0.00 из 5.00 0 оценок
Заказать работу

ПРОГРАММИРОВАНИЯ (Object Pascal, Turbo Delphi)

§ Синтаксис и семантика языка программирования

§ Методы описания синтаксиса

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

§ Константы

§ Адресация в оперативной памяти

§ Переменные

§ Типы

§ Выражения и операции

§ Скалярные типы данных (логический, целые, символьный, перечисляемый, тип-диапазон, вещественные)

§ Арифметические и логические операции, операции отношения

§ Приоритет операций

§ Структура программы


Билет 17. Синтаксис и семантика языка программирования. Алфавит. Методы формального описания синтаксиса.

 

 

СИНТАКСИС И СЕМАНТИКА

Синтаксис языка программирования – это форма, а семантика – смысл его выражений, операторов и программных единиц.

Формальное описание синтаксиса языка строится с использованием терминалов и нетерминалов. Конструкции языка, для которых требуются определения, называются нетерминальными символами или просто нетерминалами (например, <оператор>, <число>, <условный оператор> и т. д.). Число нетерминалов равно числу правил языка. Собственные символы (символы алфавита) и конструкции языка, для которых не требуется специальное описание, называются терминальными символами или терминалами.

Алфавит языка Delphi Рascal включает:

- прописные и строчные латинские буквы от a до z и от А до Z, а также знак подчеркивания

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

- специальные символы + - * / =, ‘.:; < > [ ] () { } ^ @ $ # & и пробел - составные символы := <>.. <= >= (* *) (..) //

Терминалами также являются зарезервированные слова (begin end array const if then else и т.д.), в состав которых входят стандартные директивы (absolute assembler external far forward near private virtual и др.).

МЕТОДЫ ФОРМАЛЬНОГО ОПИСАНИЯ СИНТАКСИСА ЯЗЫКА

Форма Бэкуса-Наура (БНФ):

<цифра>0123456789

<условный оператор>if <логическое выражение> then

<оператор>

if <логическое выражение> then

<оператор> else <оператор>

Билет 18. Идентификаторы. Константы. Типизированные константы.

Синтаксическая диаграмма
(
условный оператор):
if
логическое
выражение
then
оператор
else
оператор

ИДЕНТИФИКАТОРЫ

Текст программы состоит из лексем. Лексемы языка Delphi Pascal представлены такими категориями как специальные символы, идентификаторы, зарезервированные слова, метки, числовые константы и строковые константы. Две соседние лексемы должны отделяться друг от друга разделителями.

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

Правила построения идентификаторов:

- идентификаторы могут иметь произвольную длину, но значащими будут только первые 255 символов;

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

-
буква
цифра
буква
имена меток могут начинаться как буквой, так и цифрой.

Синтаксическая диаграмма конструкции <идентификатор>


КОНСТАНТЫ

Языки программирования интерпретируют данные как константы или переменные.

Константа – элемент данных, значение которого не изменяется в процессе выполнения программы.

Литерал представляет собой значение константы, записанное непосредственно в программе (например, в выражении 2 + 5.1*х использованы два литерала "2" и

"5.1").

Поименованная константа объявляется в инструкции секции описания констант Const.

Const

Ln10 = 2.3026;

Ln10R = 1 / Ln10;

X = MaxInt div SizeOf(Real);

КОНСТАНТЫ

Значениями констант в языке Delphi Рascal могут быть:

• Целые числа (от -9 223 372 036 854 775 808 (-263) до 9 223 372 036 854 775 807

(263-1)).

• Вещественные числа. Может использоваться формат с фиксированной точкой или формат с плавающей точкой (а = 61.2; b = 3.14е5; c = -72Е-3).

• Шестнадцатеричные числа (в диапазоне от $0000 0000 0000 0000 до $FFFF FFFF FFFF FFFF).

• Логические константы (True, False).

• Символы. Записываются в апострофах, кроме того допускается использование записи символа путем указания его внутреннего кода, которому предшествует символ # (Znak1 = 'd'; Znak2 = 'ф'; Znak3 = #90).

• Строки символов. Любая последовательность символов, заключенная в апострофы. Можно составить из кодов нужных символов с предшествующими каждому коду знаком #.

• Конструкторы множеств. Список элементов множества, обрамленный квадратными скобками (a = [1,2,4..7,12]; b = [red,blue,green]; c = [True]).

• Признак неопределенного указателя - NIL.

АДРЕСАЦИЯ

Оперативная память представляет собой последовательность ячеек емкостью 1 байт (8 бит). Доступ к любой ячейке осуществляется путем указания ее адреса.

MS-DOS. Память разбита на сегменты – непрерывные области памяти размером 64 К (65536 байт). Начало любого сегмента отстоит от начала предыдущего на 16 байт. Смещение – номер ячейки памяти, отсчитанный относительно той ячейки, с которой начинается сегмент.

Логический адрес конкретной ячейки: сегмент: смещение

физический адрес = сегмент*10h + смещение Например, ячейка с физическим адресом 00012h может иметь логическийадрес 0001h: 0002h либо 0000h: 0012h.

Windows. Приложения Windows имеют доступ ко всей памяти компьютера. Используется "страничная" модель памяти. Под адресом будем понимать целое число размером 32 бита (4 байта). Например, 1111FFFFh

 

Билет 19. Переменные. Адресация. Типы.


ПЕРЕМЕННЫЕ

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

Возможна инициализация переменных в их объявлениях:

Var

S: string = 'Start';

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

Const

A: Real = 5.6;

ТИПЫ

Типы с уникальными именами описываются в специальной секции раздела описаний.

Type

LightType = (red, yellow, green);

Var

A, B, StreetLight: LightType;

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

Параметры-атрибуты переменной: имя, адрес, значение, тип, время жизни, область видимости.

 

Билет 20. Выражения и операции (логические, арифметические, отношения) Приоритет операций.

 

 

ВЫРАЖЕНИЯ, ОПЕРАЦИИ

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

(X + sin(Y) - 10)*4

X,sin(Y),10,4 – операнды, "+","-","*" – операции.

Унарные операции относятся к одному операнду и всегда записываются перед ним (not, @, +, -).

Бинарные операции выражают отношение между двумя операндами и записываются между ними (X + Y).

ЛОГИЧЕСКИЙ ТИП

Значениями переменных логических (булевских) типов могут быть логические константы True, False.

Var

X: Boolean;

Логические типы: Boolean (1 байт), ByteBool (1 байт), WordBool (2 байта), LongBool (4 байта).

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

Операнд 1 Операнд 2 and (конъюнкция) or (дизъюнкция) xor (исключающее ИЛИ) not (отрицание)
False False False False False -
True False False True True -
False True False True True -
True True True True False -
True - - - - False
False - - - - True

Результат операций сложения "+", вычитания "-", умножения "*", целочисленного деления div, возвращения остатка от целочисленного деления mod двух переменных X и Y относится к целому типу Integer (либо к Int64, если X или Y имеет тип Int64). Результат операции деления "/" относится к наиболее мощному вещественному типу Extended.
ЦЕЛОЧИСЛЕННЫЕ ТИПЫ
К операндам
целых
типов могут быть применены
арифметические операции
.
Название
Длина, байт
Диапазон значений
Byte
 
 
..
 
ShortInt
 
-
128.. +127
Word
 
0.. 65535
SmallInt
 
-
32768.. +32767
Cardinal
(
LongWord
)
 
 
 
..
 
 
 
 
 
 
Integer
(
LongInt
)
 
-
 
147 483
 
..
+
2 147 483
 
Int64
 
-
 
 
.. +2
 
 

Var X: Byte; Y: ShortInt;

... Z:= X + Y; {Z  Integer}

 

Билет 21. Скалярные типы данных (логические, символьные, перечисляемый, тип-диапазон) Порядковые типы.

 

ЦЕЛОЧИСЛЕННЫЕ ТИПЫ

Арифметические операции сдвига K shl N и K shr N оперируют с двоичным (битовым) представлением целых чисел. Они восстанавливают в качестве результата значение, полученное путем сдвига на N позиций влево или вправо числа К, представленного в двоичном виде. Тип результата – Integer.

2 shl 7 = 256; (2)10 = (10)2; (100000000)2 = (256)10.

161 shr 2 = 40; (161)10 = (10100001)2; (101000)2 = (40)10.

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

Операнд 1
Операнд 2
and
or
xor
not
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
-
-
-
 
 
-
-
-
-
 
12 or 22 = 30; (12)10 = (01100)2; (22)10 = (10110)2; (11110)2 = (30)10. Х: Byte = 5; (X)2 = 00000101; X:= not X = (11111010)2 = (250)10.

X: ShortInt = 5; (X)2 = 0 0000101; X:= not X = (1 1111010)2 = (-6)10.

СИМВОЛЬНЫЕ ТИПЫ

Значениями переменных символьного типа является множество всех символов компьютера. Каждому символу приписывается целое число (код). В основе кодировки лежит 7-битный код ASCII (American Standard Code of Information Interchange). Символы с кодами 128..255 отводятся под национальный алфавит – 1-байтовые кодировки CP866 (DOS), KOI8-R, ANSI CP1251 (Win)). Unicode – 2 байта.

Var

X: Char;

...

X:= 'ф';

X:= #244; { CP 1251}

Символьные типы – Char, ANSIChar (1 байт); WideChar (2 байта).

Применимы встроенные функции:

CHR(X) – преобразует выражение Х: Byte в символ и возвращает этот символ;

UPCASE(X) – возвращает прописную букву, если Х – строчная латинская буква, в противном случае (например, если Х – русская буква) возвращает сам символ Х.

ПЕРЕЧИСЛЯЕМЫЙ ТИП

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

Type

Colors = (red, white, blue);

Var


Поделиться с друзьями:

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

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

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.044 с.