Строковые данные. Типы Char и String

Перечисляемый тип данных. Строковый тип. Множества. Записи. Файлы

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

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

type название типа = (список значений типа);

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

Пример 1. Описание типа с именем week (неделя):

type week = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);

Упорядоченным в списке значений типа константам автоматически присваиваются возрастающие на единицу номера, начиная с нуля. Поэтому к перечисляемым переменным и константам могут быть применены все операции сравнения и стандартные функции из библиотеки системных функций pred(), succ(), ord():

ord(Е)– возвращает номер элемента Ев множестве;

succ(Е)– возвращает следующее значение для Е;

pred(Е)– возвращает предыдущее значение для Е.

Для введенного типа week будут справедливы следующие отношения элементов:

Sunday<Monday<Tuesday<Wednesday<Thursday<Friday<Saturday;

ord(Sunday)=0;

ord(Tuesday)=2;

succ(Friday)=Saturday;

pred(Saturday) = Friday;

Для перечисляемых типов, как и для других порядковых типов, определены функции Low()и High(), которые возвращают начальный и конечный объект типа. Например, для типа week :Low(week)= Sunday,High(week)=Saturday.

Перечисляемые типы описываются в разделе описания типов.

Рассмотренные выше стандартныетипы, введенные дляодиночных величин, также можно эквивалентно представить в виде перечисляемых типов. Например, для типов boolean, char и integer описание можно задать следующим образом (запись вида #xxx означает символ, чей код в таблице ASCII равен xxx):

Type

Boolean= (false, true);

char= #0..#255;

integer= -32768..32767;

Каждая константа может входить только в один из типов. Поэтому, если в программе описан тип week, то в нем нельзя использовать тип day_off (выходные):

Type

day_off = (Sunday, Saturday);

поскольку он содержит константы Sunday, Saturday, уже входящие в типweek.

Если тип описан, то он может быть присвоен другим переменным в разделе описания переменных, например:

var days: week;

Также переменные любого перечисляемого типа можно объявлять без предварительного описания этого типа, например:

var days: (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);

Вопросы для проверки знаний.

1. В чем заключается назначение и каков синтаксис перечисляемого типа ?

2. Как устанавливается порядок для элементов перечисляемого типа ?

3. Где помещаются описания перечисляемых типов ?

4. Может ли одна и та же величина входить в состав множеств элементов различных типов в одной программе ?

5. Как переменные перечисляемого типа можно объявлять без предварительного описания этого типа ?

6. Возможно ли описание типа следующего вида (ответ пояснить) ?

type выходные_дни = (Воскресенье, Суббота);

7. Чему равны значения следующих функций для типа week: ord(Wednesday);ord(Friday)?

8. Чему равны значения следующих функций для типа type day_off = (Sunday, Saturday): Low(day_off); High(day_off)?

Строковые данные. Типы Char и String

Простой стандартный порядковый тип сhar предназначен для одиночных символов, которые представлены в нем при помощи кода ASCII. Он относится к простым типам данных. Тип String предназначен для хранения строковых (литерных) величин до 255 символов (тип сhar), которые занимают 1 байт (8 бит), нумерация их начинается с единицы. Если длина строковой величины не указывается в описании, то по умолчанию для нее в памяти отводится место для 255 символов. Примеры описания строковых величин:

Var S1 : String[40];

Str : String;

Переменной S1будет отведено в памяти 40 байт (или 40×8=320 бит), переменной Str - максимально возможные 255 байт.

Засылать информацию в переменные строкового типа можно при помощи присвоения им:

1) строковых величин (в программном коде они заключаются в апострофы),

2) значения выражений, которые приводят к строковым величинам.

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

Если засылаемая информация занимает не всю область памяти строковой переменной, то оставшееся пространство заполняется пробелами.

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

Пример 1 программы с использованием обращений к символам строковых величин:

Var Str1, Str2: String[20]; Ch1, Ch2 :Char;

Begin

Str1 :=’Сомрuter’;
Str2: =’’;

Ch1=Str1[5]; Ch2=Str2[5];

WriteLn(' Ch1=', Ch1, ' Ch2=', Ch2);

End.

В результате выполнения программы на экран монитора будет выдано сообщение:

Ch1=u Ch2=

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

Рассмотрим функции и действия над строковыми величинами.

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

Пример 2. После выполнения фрагмента из двух операторов:

S:='computer';

Writeln('В слове ', S, ' ', Length(S),' символов')

на экран монитора будет выдано сообщение:

Наши рекомендации