Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование(лекции).pdf
Скачиваний:
183
Добавлен:
14.02.2015
Размер:
1.89 Mб
Скачать

Лекция 6. Перечисляемый тип, тип-диапазон

var

TextColor: (black, white, green);

Значения, входящие в перечисляемый тип, являются константами. Действия над ними подчиняются правилам, применимым к константам. Каждое значение в перечисляемом типе занимает в памяти 2 байта. Поэтому число элементов не должно превышать 65535.

Перечисляемый тип упорядоченное множество .Его элементы пронумерованы начиная от 0 в порядке следования в описании. Ко всем перечисляемым типам применимы операции отношения (если оба операнда одного типа). Порядок устанавливается последовательностью перечисления констант.

Для аргументов, относящихся к ординальным типам существуют такие предописанные функции:

succ(X) следующее за X pred(X) предшествующее X ord(X) ординальный номер X

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

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

Тип-диапазон

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

Тип-диапазон задается границами своих значений внутри базового типа: <мин.знач.> . . <макс.знач.> Где:

<мин.знач.> - минимальное значение типа-диапазона; <макс.знач.> - максимальное его значение. Примеры:

type

Workdays = Mon . . Fri;

Index = 0 . . 63;

Letter = 'A' . . 'Z'; Natural = 0 . . MaxInt;

Positive = 1 . . MaxInt;

Тип-диапазон необязательно описывать в разделе type, а можно указывать

29

П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"

непосредственно при объявлении переменной.

При объявлении типа-диапазона нужно руководствоваться следующими правилами:

два символа . . рассматриваются как один символ, поэтому между ними недопустимы пробелы;

левая граница диапазона не должна превышать его правую границу.

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

В стандартную библиотеку Паскаля включены две функции, поддерживающие работу с типами-диапазонами:

high(x) возвращает максимальное значение типа диапазона- , к которому принадлежит переменная x;

low(x) возвращает минимальное значение типа диапазона- , к которому принадлежит переменная x;

Лекция 7. С троки

Объявление с трок

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

Строка это последовательность символов .Каждый символ занимает 1байт памяти код( ASCII). Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными.

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

'Пример строки' Строковая переменная описывается в разделе описания переменных следующим образом: var

<идентификатор>: String[<максимальная длина строки>]

Например: var

Name: String[20]

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

var

Name: string;

Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один (нулевой) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна

30

Лекция 7. Строки

превышать максимальной по описанию величины.

Символы внутри строки индексируются (нумеруются) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например:

Name[5], Name[i], slovo[k+l].

Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.

Тип string и стандартный тип char совместимы. Строки и символы могут употребляться в одних и тех же выражениях.

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

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

Например:

'ЭВМ' + ' IВМ' + ' РС .

В результате получится строка: 'ЭВМ IBM PC .

Длина результирующей строки не должна превышать 255.

Сравнение с трок

Операции отношения =, <, >, <=, >=, <> производят сравнение двух строк, в результате чего получается логическая величина (true или false). Операция отношения имеет более низкий приоритет, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и больше считается та строка, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки.

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

Пример:

Выражение

Результат

 

 

'cosm1' < 'cosm2'

True

 

 

'pascal' > 'PASCAL'

True

 

 

'Ключ_' <> 'Ключ'

True

 

 

'MS DOS' = 'MS DOS'

True

 

 

Функции для рабо ты со с троками

Функция Copy(S, Poz, N) выделяет из строки s подстроку длиной в N символов, начиная с позиции Poz. N и Poz целочисленные выражения .

31

П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"

Пример:

Значение s

 

Выражение

Результат

'ABCDEFG'

 

Copy(S, 2, 3)

'BCD'

 

 

 

 

 

'ABCDEFG'

 

Copy(S, 4, 4)

'DEFG'

 

 

 

 

Функция Concat(S1, S2, . . . , SN) выполняет сцепление (конкатенацию) строк S1, . . . , SN в

одну строку.

 

 

 

Пример:

 

 

 

 

 

 

 

Выражение

 

 

Результат

 

 

 

 

Concat('АА', 'XX', 'Y')

 

 

'AAXXY'

 

 

Функция Length(S) определяет текущую длину строки S. Результат значение целого

типа.

 

 

 

Пример:

 

 

 

 

 

 

Значение s

Выражение

Результат

 

 

 

'test-5'

Length(S)

6

 

 

 

'(А+В) * С'

Length(S)

7

Функция Pos (S1, S2) обнаруживает первое появление в строке S2 подстроки S1. Результат

целое число ,равное номеру позиции ,где находится первый символ подстроки S1. Если в строке S2 подстроки S1 не обнаружено, то результат равен 0.

Пример:

Значение s

Выражение

Результат

 

 

 

 

 

'abcdef'

Pos ('cd', S2)

3

 

 

 

 

 

'abcdcdef'

Pos('cd', S2)

3

 

 

 

 

 

'abcdef'

Pos('k', S2)

0

 

 

 

 

 

Процедура Delete(S, Poz, N) выполняет удаление N символов из строки s, начиная с

позиции Poz.

 

 

 

Пример:

 

 

 

 

 

 

 

Исходное значение s

Оператор

Конечное значение S

 

 

 

 

'abcdefg'

Delete(S, 3, 2)

'abefg'

 

 

 

 

'abcdefg'

Delete(S, 2, 6)

'a'

В результате выполнения процедуры уменьшается текущая длина строки в переменной S. Процедура insert(S1, S2, Poz) выполняет вставку строки S1 в строку S2, начиная с позиции

Poz.

Пример:

Исходное значение S2

Оператор

Конечное значение S2

 

 

 

'ЭВМ PC'

Insert('IBM-', S2, 5)

'ЭВМ IBM-PC'

 

 

 

'Рис. 2'

Insert('N', S2, 6)

'Рис. N2'

 

 

 

32