Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Turbo Pascal / Stud_1_1 / LecRus / MainPart.doc
Скачиваний:
117
Добавлен:
03.03.2016
Размер:
5.03 Mб
Скачать

2. Вещественные числа (числа с плавающей запятой).

ПЭВМ имеет несколько типов вещественных чисел, различающихся количеством разрядов, отведенных для мантиссы и порядка числа. Мы будем рассматривать тип real.

Тип real - это двоичное число, занимающее 6 байт памяти. Нумерация двоичных разрядов 0, 1, 2, ... , 47. Первые пять байтов занимает мантисса числа, шестой байт - характеристика. Нулевой бит отведен для знака числа. Отрицательные числа изображаются в прямом коде.

Характеристика - это преобразованный определенным образом порядок числа.

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

= + 1000 0000 = + 80 = + 128 ,

где - характеристика числа, - его порядок.

Это приводит к смещению значения порядка на 128, в связи с чем характеристику называют также смещенным порядком.

Характеристика всегда положительная.

Если - 128  < 0, то 0  < 128;

если = 0, то = 128;

если 0 < 127, то 128 <  255.

Максимальной характеристике = 255 соответствует порядок = 127, минимальной характеристике = 0 - порядок = -128. При этом получаем соответственно максимальное и минимальное значения вещественного числа:

= 1   1.7  ; = 1   2.95  .

Примечание. Если в программе задать x > 1.7  , то при трансляции будет выведено на экран сообщение «Const out of range» (Константа вне допустимых границ), если задать x < 2.95  , то переменной x будет присвоено нулевое значение.

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

Пример 4.

687,25 = 2AF,4 = 0,2AF4  = 0, 0010 1010 1111 0100  =

= 0, 1010 1011 1101  (после нормализации мантиссы) =

= 0010 1011 1101 0000 0000 0000 0000 0000 0000 0000 1000 1010

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

Здесь порядок = 10, характеристика = 10 + 128 = A + 80 = 8A.

В формате real имеем 2B D0 00 00 00 8A .

Для отрицательного числа достаточно записать единицу в нулевой разряд, что эквивалентно добавлению значения 8 к первой цифре положительного числа. В этом случае для числа 687,25 получим AB D0 00 00 00 8A (первая цифра A = 2 + 8 = 0010 + 1000 = 1010).

3. Логические данные.

Логические переменные и логические операции относятся к области математики, которая называется алгеброй логики. В алгебре логики рассматриваются высказывания, в отношении которых имеет смысл говорить об их истинности или ложности. Например, "снег белый", "сегодня - пятница", " > 0", "" и т.д. Истинность высказывания может принимать одно из двух значений: 0 (высказывание ложное) или 1 (высказывание истинное). Алгебра логики широко применяется при проектировании и анализе работы устройств ЭВМ, поскольку элементы, входящие в состав таких устройств, являются бинарными (двоичными) и могут находиться лишь в одном из двух возможных состояний, которые обозначаются соответственно 0 и 1. В программировании операции алгебры логики используются при вычислении логических выражений.

Алгебра логики определяет 16 логических операций. Наиболее важными из них являются три: отрицание, логическое умножение и логическое сложение.

а) Отрицание ( операция НЕ ). Таблица операции:

Читается: "Не нуль есть единица".

б) Логическое умножение (конъюнкция, операция И). Таблица операции:

0  0 = 0

0  1 = 0

1  0 = 0

1  1 = 1

Читается: "Нуль и нуль есть нуль".

в) Логическое сложение (дизъюнкция, операция ИЛИ). Таблица операции:

0  0 = 0

0  1 = 1

1  0 = 1

1  1 = 1

Читается: "Нуль или нуль есть нуль".

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

Пример 5. Пусть мы имеем два поля X и Y длиной 4 байта:

X = F570 1A8B ; Y = 37E4 90CD .

Здесь шестнадцатеричная запись используется только с целью компактности представления содержимого поля памяти.

Тогда

= 0 A 8 F E 5 7 4

X /\ Y = 3 5 6 0 1 0 8 9

X \/ Y = F 7 F 4 9 A C F

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

Л Е К С Е М Ы И Р А З Д Е Л И Т Е Л И

Программа на Паскале состоит из лексем и разделителей. Лексема - это минимальная значимая единица языка, состоящая из одного или нескольких последовательных символов.

Лексемами являются следующие элементы:

- специальные символы;

- зарезервированные слова;

- числа;

- строки символов;

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

- метки.

Разделителями в Паскале являются:

- пробел;

- конец строки (разделитель строк);

- примечание (комментарий).

Пробел - это пустое место в тексте на бумаге или на экране дисплея.

Представим, что мы записываем в память ЭВМ произвольный текст. Слова в тексте разделены пробелами. Память ЭВМ - это линейная последовательность байтов. В каждом байте содержится один символ текста. Пробел, как и буквы в словах, отображается вполне конкретным содержимым байта.

Соответствие между символом и его кодом представлено в кодовых таблицах. Для ПЭВМ обычно используется таблица ASCII (American Standard Code for Information Interchange). В этой таблице записаны 256 символов с порядковыми номерами 0 .. 255 (цифры, прописные и строчные буквы, знаки операций, знаки препинания и др.). Порядковый номер символа в таблице ASCII - это код данного символа.

Первые 32 символа ASCII - управляющие символы, которые используются при обращении к внешним устройствам. Эти символы имеют названия, но не имеют графического обозначения. Обычно в программе их задают порядковым номером в таблице ASCII. Например, #7, #12 (символ "#" - это знак номера). Порядковым номером можно задавать и другие символы. Например, #32 (пробел), #158 (буква "Ю"). Содержимое байта для пробела будет иметь значение 3210 = 2016 =001000002, для буквы "Ю" – 15810= 9E16 = 100111102.

Текст "Programming in Pascal" будет изображен следующей последовательностью байтов:

50726F6772616D6D696E6720696E2050617363616C

Память ЭВМ можно представить в виде длинной ленты, разделенной на ячейки (байты). Такая лента представляет собой одномерный объект. В отличие от плоскости (листа бумаги), являющейся двумерным объектом, на ленте нельзя записать строки текста друг под другом. Следовательно, необходимо использовать какой-либо символ для обозначения строк записанного текста. Таким символом является "Конец строки", используемый для разделения текста в памяти ЭВМ на отдельные строки, длина которых может быть различной. Этому символу соответствуют два последовательных байта с кодами #13 и #10.

Комментарий в программе определяется парой символов, обозначающих его начало и окончание. В качестве таких символов могут использоваться "{" и "}" или "(*" и "*)". Текст комментария, заключенный в фигурные скобки, может содержать любые символы ASCII, кроме символов начала и конца комментария. Символы "(*" и "*)" имеют более высокий приоритет; между ними могут быть символы "{" и "}". Комментарий не влияет на работу программы и предназначен для лучшего понимания программы человеком. При трансляции все комментарии удаляются из программы.

Лексемы в Паскаль-программе обязательно разделяются одним или несколькими символами-разделителями. Обычно это пробелы.

При конструировании лексем используются буквы и цифры. К буквам относятся прописные и строчные латинские буквы (но не буквы национального алфавита, в частности русского): A B C D ... X Y Z a b c d ... x y z . Цифры: 0 1 2 3 4 5 6 7 8 9 .

1. Специальные символы (их количество равно 27):

+ - * / . , : ; ' ^ = <> > < >= <= ( ) [ ] { } := .. @ $ #

Примечание. Символом "<>" в Паскале обозначается операция отношения "не равно" (""), символом ">=" - операция "больше или равно" (""), символом "<=" - операция "меньше или равно" (""). Символ «^» (тильда) в дальнейшем используется для обозначения динамических переменных.

Соседние файлы в папке LecRus