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

Paskal_ucheb_posob_ch1_21_11_2011

.pdf
Скачиваний:
47
Добавлен:
09.04.2015
Размер:
943 Кб
Скачать

11

Идентификатор вещественного типа относится к числу стандартных идентификаторов, которые могут быть Real, Single, Double, Extended или

Comp.

12

ЛЕКЦИЯ 2. Часть 2. Порядковые типы.

Порядковые типы представляют собой подмножество простых типов. Все простые типы, отличные от вещественных типов, являются порядковыми и выделяются по следующим четырем характеристикам.

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

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

К любому значению порядкового типа можно применить стандартную функцию Pred, возвращающую значение, предшествующее этому значению. Если эта функция применяется к первому значению в этом порядковом типе, то выдается сообщение об ошибке.

К любому значению порядкового типа можно применить стандартную функцию Succ, возвращающую значение, следующее за этим. Если эта функция применяется к последнему значению в этом порядковом типе, то выдается сообщение об ошибке.

Turbo Pascal имеет семь встроенных порядковых типов: Integer (целый), Shortint (короткий целый), Longint (длинный целый), Byte (длиной в байт), Word (длиной в слово), Boolean (логический) и Char (символьный). Кроме того, имеется два других класса порядковых типов, определяемых пользователем: перечислимые типы и типы поддиапазона.

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

Целые числа - это числа, с помощью которых Вы учились считать (1, 5, -21 и 752, например).

Вещественные числа имеют дробные части (3.14159) и экспоненты(2.579*1024). Они также известны как числа с плавающей точкой.

13

Символы - это любые буквы алфавита, символы и цифры 0-9. Они могут использоваться отдельно (а, z, !, 3) или объединяться в символьные строки ('Это только проверка').

Булевские выражения имеют только два значения: TRUE или FALSE (истина или ложь). Они используются в условных выражениях.

Указатели - это адреса ячеек памяти, содержащих информацию.

Целые числа

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

ВTurbo Pascal поддерживается целочисленный тип MaxInt = 32767, допуская значение – 32 768. Переменная целочисленного типа занимает 2 байта. В Turbo Pascal, кроме того, поддерживается четыре других целочисленных типов данных, каждый из которых имеет свой диапазон значений.

Тип

Знак/

Диапазон

Размер в

 

безнак.

 

байтах

Byte (целое дли-

б/з

0..255

1 (2^8)

ной в байт

 

 

 

Shortint (корот-

±

-128..127

1(2^8)

кое целое)

 

 

 

Integer (целое)

±

-32768..32767

2(2^16)

Word (длиной в

б/з

0..65535

2(2^16)

слово)

 

 

 

Longint (длинное

±

-2147483648..2147483647

4(2^32)

целое)

 

 

 

 

Таблица 1. Целочисленные типы данных.

 

Turbo Pascal позволяет использовать шестнадцатеричные целые значения (основание 16). При описании шестнадцатеричной константы перед ней указывается знак доллара $, например $27=39.

14

ЛЕКЦИЯ 3.

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

В стандартном Паскале тип Real представляет значение с плавающей точкой, содержащее мантиссу и экспоненту - степень числа 10.

Количество значащих цифр в мантиссе и диапазон значений экспоненты зависят от компьютера. В Turbo Pascal данные вещественного типа

имеют размер в 6 байт, с 11 значащими цифрами мантиссы и экспоненты от 10-38 до 1038.

Кроме того Turbo Pascal поддерживает стандарт IEEE 754 для двоичной арифметики с плавающей точкой. В этом случае добавляются типы данных с Single, Double, Extended и Comp:

Если у вас есть процессор 8087, и включена работа с числовым сопроцессором ({$N+}), Turbo Pascal генерирует инструкции 8087 для поддержки этих типов и выполнения всех операций с плавающей точкой на

8087.

Если у Вас нет 8087, но Вы хотите использовать IEEE типы, Вы можете указать эмулировать процессор 8087, разрешая и эмуляцию 8087 и обработку с плавающей точкой (директивы {$E+,N+}).

Turbo Pascal подключает специальную библиотеку, которая выполняет операции с плавающей точкой, так же как процессор 8087.

 

Тип

Диапазон

Значение

Размер в бай-

 

 

 

 

цифры

тах

Single

одинарной

1.5Е-45..

7-8

4

точностью)

 

+3.4Е38

 

 

Real (вещественный)

2.9Е-39..

11-12

6

 

 

 

+1.7Е38*

 

 

Double

двойной

5.0Е-324..

15-16

8

точностью)

 

+1.7Е308

 

 

Extended

(повышен-

1.9Е-4951..

19-20

10

ной точности)

+1.1Е4932

 

 

Comp (сложный)**

(-2Е+63)..

19-20

8

 

 

 

+1..(2Е+63)-1

 

 

Таблица 2. Вещественные типы данных

* Значение 1.7Е38 эквивалентно 1.7 * 10+38 **Сomp – принимает только целые значения

Примечание: При компиляции в режиме числового сопроцессора, {$N+}, возвращаемые значения в программах с плавающей точкой в моду-

леSystem (Sqrt, Pi, Sin и т.д.) имеют тип Еxtended вместо Real.

Арифметические функции

п/п

Функция

Назначение

 

Тип ар-

Тип

 

 

 

 

 

гумента

функции

1.

abs(x)

Вычисление абсолютного зна-

real

real

 

 

чения Х

 

 

integer

integer

2.

sqr(x)

Вычисление квадрата Х

 

real

real

 

 

 

 

 

 

 

 

 

 

 

 

integer

integer

3.

sin(x)

Вычисление синуса Х

 

real

real

 

 

 

 

 

integer

real

4.

cos(x)

Вычисление косинуса Х

 

real

real

 

 

 

 

 

integer

real

5.

arctan(x)

Вычисление арктангенса Х

real

real

 

 

 

 

 

integer

real

6.

exp(x)

Вычисление экспоненты Х

real

real

 

 

 

 

 

integer

real

7.

ln(x)

Вычисление

натурального ло-

real

real

 

 

гарифма Х

 

 

integer

real

8.

log(x)

Вычисление десятичного лога-

real

real

 

 

рифма Х

 

 

integer

real

9.

sqrt(x)

Вычисление

квадратного кор-

real

real

 

 

ня из Х

 

 

integer

real

10.

A div B

Вычисление

частного

(целой

integer

integer

 

 

части) при делении А на В

 

 

11.

A mod B

Вычисление остатка при деле-

integer

integer

 

 

нии А на В

 

 

 

 

12.

trunc(x)

Нахождение целой части Х

real

integer

 

 

 

 

 

integer

integer

13.

round(x)

Округление Х в сторону бли-

real

real

 

 

жайшего целого

 

integer

integer

14.

odd(x)

Принимает значение true, если

integer

boolean

 

 

Х – нечетное и значение false,

 

 

 

 

если Х - четное

 

 

 

15.

ord(x)

1. Нахождение порядкового

boolean

integer

 

 

номера элемента Х в перечне

Перечис-

integer

 

 

допустимых

значений

(счет

лимый

 

 

 

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

начинается с 0)

 

 

 

 

 

 

 

 

 

2. Номер целого числа равен

integer

integer

 

 

его значению ord(x)=x

 

 

 

 

3.Определение номера символа

char

integer

 

 

языка в десятичной системе

 

 

 

 

счисления

 

 

16.

chr(x)

Определение символа языка в

integer

char

 

 

десятичной системе счисления

 

 

 

 

в таблице ASCII кодов

 

 

17.

succ(x)

Нахождение элемента который

integer

integer

 

 

следует за Х в перечне допу-

Boolean

Boolean

 

 

стимых элементов

char

char

 

 

 

 

 

 

перечис-

перечис-

 

 

 

лимый

лимый

18.

pred(x)

Нахождение элемента который

integer

integer

 

 

предшествует Х в перечне до-

Boolean

Boolean

 

 

пустимых элементов

 

 

 

 

char

char

 

 

 

 

 

 

перечис-

перечис-

 

 

 

лимый

лимый

Таблица 3. Арифметические функции

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

Научившись записывать числовые данные, выучим запись и использование символьных и строковых данных. Паскаль позволяет определять тип Char, имеющий размер в один байт и содержащий один символ. Символьные константы содержат один символ, заключенный в апострофы ('A','e','г','2'). Заметим, что '2' означает символ 2, а 2 означает целое число 2 (и 2.0 - вещественное число).

В Turbo Pascal существуют два дополнительных способа описания символьных констант: с помощью символа "^" и символа числа "#". Символы с кодами от 0 до 31 - управляющие символы. Они обозначаются аббревиатурами (CR - возврат каретки, LF - перевод строки, ESC - выход) или с помощью двух клавиш, одна из которых Ctrl + буква. Значение буквы получается прибавлением 64 к управляющему коду. Например, управляющий символ кода ASCII 7 известен как Del или Ctrl-G. Turbo Pascal дает возможность представить символы с помощью "^", за которым следует буква (или символ). Так, "^G" то же самое, что и Ctrl-G. "^G" можно использовать в операторах Turbo Pascal: Writeln (^G). Этот метод применим только к управляющим символам.

17

Вторая возможность обозначения - использование символа номера "#", за которым следует код ASCII. Так, #7 то же самое, что и "^G", #65 - 'A', a #233 - один из специальных псевдографических символов IBM PC.

В большинстве случаев используются строки символов. В Turbo Pascal реализована эта возможность.

Рассмотрим программу:

program Hello; var

Name: String[30];

begin

Write('What is your name? ');Readln(Name);Writeln('Hello, ', Name) end.

Рисунок 3. Копия экрана с результатами работы программы

Переменная Name объявлена, как string (строка), и под нее резервируется 30 байт (для 30 символов). Кроме того, Turbo Pascal отводит еще один байт (нулевой), в котором содержится текущая длина строки. В этом случае, независимо от того, какой длины будет введено имя, оператор Writeln распечатает имя указанной длины. Если будет введено имя больше 30 символов, то будут использоваться только первые 30 символов, а остальные будут проигнорированы.

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

18

Константы строкового типа.

Объявление типизированной (типизированной) константы строкового типа содержит максимальную длину строки и ее начальное значение: const

Heading: string [7] = `Section'; Newline: string [2] = #13#10; TrueStr : string [5] = `Yes'; FalseStr : string [5] = `No';

Перечислимые типы

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

При указании идентификатора в списке идентификаторов перечислимого типа он объявляется как константа для блока, в котором объявляется перечислимый тип. Типом этой константы является объявленный перечислимый тип.

Порядковый номер перечислимой константы определяется ее позицией в списке идентификаторов при объявлении. Перечислимый тип, в котором описывается константа, становится ее типом. Первая перечислимая константа в списке имеет порядковый номер 0.

Приведем примеры перечислимого типа:

type

Suit = (Club, Diamond, Heart, Spade);

Согласно этим объявлениям diamond является константой типа Suit. При применении функции Ord к значению перечислимого типа она

возвращает целое число, которое показывает, какое положение занимает это значение по отношению к другим значениям этого перечислимого типа. Согласно предшествующим объявлениям, Ord (Club) возвращает 0, Ord (Diamond) возвращает 1 и так далее.

Тип поддиапазона (ограниченный тип)

Тип поддиапазона представляет собой диапазон значений из порядкового типа, называемого главным типом. Определение типа поддиапазона включает наименьшее и наибольшее значения в поддиапазоне; оно имеет следующий синтаксис:

 

 

19

 

Тип

Константа

..

Константа

поддиапозона

 

 

 

Рисунок 4. Синтаксис типа поддипозон

Обе константы должны быть одного порядкового типа. Типы поддиапазона, имеющие вид а .. b, требуют, чтобы а был меньше или равен b.

Приведем примеры типов поддиапазона:

0 .. 99 -128 .. 127

Club .. Heart

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

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

const

X = 50;

Y = 10;

type

Color = (Red, Green, Blue); Scale = (X - Y) * 2 .. (X + Y) * 2;

Синтаксис стандартного Паскаля ставит непременным условием, что если определение типа началось с круглой скобки, то это перечислимый тип, подобно типу Color, определенному выше. Однако целью объявления Scale является задание типа поддиапазона. Решением этой проблемы является либо переделка первого выражения поддиапазона так, чтобы оно не начиналось с круглой скобки, или задание другой константы, равной значению этого выражения, и затем использование этой константы в определении типа:

type

Scale = 2 * (X - Y) .. (X + Y) * 2;

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

Встроенный тип Boolean данных в Turbo Pascal имеет два возможных значения: True и Falsе (истина и ложь). Можно объявить переменную типа Boolean и присвоить ей значение True или False, или же, что более важно, присвоить ей значение выражения, которое при вычислении принимает одно из этих значений.

20

Булевское выражение - это выражение, которое принимает значение True или False. Оно состоит из выражений отношений, булевских операторов, булевских переменных и/или других булевских выражений. Например:

while (Index <= Limit) and not Done do...

While содержит булевское выражение. Булевское выражение в этом случае все, что находится между ключевыми словами while и do. Done - это переменная (или функция) булевского типа.

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

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

Имена, которые даются константам, типам данных, переменным, функциям, известны как идентификаторы.

Идентификаторы используются для:

Integer, Real, String - встроенных типов данных;

Hello, DoSum, Ratio - названия основных программ и модулей; Name, A, B, Sum, Ratio - переменных определенных;

Write, Writeln, Readln - имен встроенных процедур.

Turbo Pascal имеет несколько правил образования идентификаторов. Краткое описание правил:

Все идентификаторы начинаются с буквы или знака подчеркивания (a..z, A..Z, _). Последующими символами могут быть буква, знак подчеркивания, цифра (0-9). Другие символы недопустимы.

Идентификаторы рассматриваются без учета регистров (прописные и строчные буквы не различаются). Это значит, что a..z тождественно

A..Z. Например index тоже самое что и Index, и INDEX.

Идентификаторы могут иметь различную длину, но используются только первые 63 символа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]