Литерный тип (CHAR) в языке программирования Паскаль

Литерный (символьный) тип обозначается именем CHAR, он является стандартным и в программе не описывается. Значениями этого типа являются элементы набора литер (символов), определяемого реализацией языка. Некоторые из литер не имеют графического представления - это управляющие литеры. Все литеры перенумерованы, начиная с 0. Полный набор литер в Турбо-Паскаль состоит из 256 элементов с номерами от 0 до 255.

Все литеры фиксированы и упорядочены. Отношение порядка между ними такое же, как и между их порядковыми номерами. Так 'A'>'0', потому что номер 'A' - 65, а номер '0' - 48.

Две стандартные функции дают отображение литер на их номера и наоборот. Это следующие функции: ORD(C), где C - литера. Значением этой функции является номер литеры C; CHR(N), где N - целое число от 0 до 255. Значением этой функции является литера с номером N.

Эти функции являются обратными по отношению друг к другу, то есть CHR(ORD(C)) = C и ORD(CHR(N)) = N.

Для элементов типа CHAR выполнимы также стандартные функции PRED и SUCC.

Строковый тип (STRING) в языке программирования Паскаль

Строки в языке программирования Паскаль - это последовательности литер. В качестве ограничителя строк-констант используются апострофы, например: 'PASCAL', 'компьютер', '25'.

В языке Турбо-Паскаль определен стандартный строковый тип STRING. В определении строкового типа должна быть указана в квадратных скобках максимальная длина строки данного типа. Максимальная длина - целочисленная константа в диапазоне от 0 до 255.(В старших версиях Турбо-Паскаля разрешено не указывать N, в этом случае считается, что N=255.)

Примеры:

TYPE ABC = STRING[100];

SCREENLINE = STRING[80];

XYZ=STRING;

Строковые выражения состоят из строковых констант, переменных, имен строковых функций и операторов. Знак "+" используется для слияния (конкатенации) строк. Если длина результата больше 255 символов, то возникает ошибка. При сравнении двух строк истина получается тогда и только тогда, когда сравниваемые строки совпадают по-символьно и имеют одинаковую длину (то есть принадлежат одному и тому же типу).

Типы STRING[N] для различных N и CHAR совместимы. Строки и символы могут употребляться в одних и тех же выражениях.

Строковая переменная занимает в памяти место, равное в байтах максимальной длине плюс один. Тип STRING[N] в Турбо-Паскале представляет-

ся как ARRAY[0..N] OF CHAR.

К любому элементу строки так же, как к элементу одинарного массива. В результате получается величина типа CHAR.

Например, если

VAR A:STRING[8];

и A:='COMPUTER',

то A[3] равно'M' , A[5] - 'U'.

В компоненте строки с индексом 0 находится символ, номер которого есть текущая длина строки. То есть ORD(A[0]) есть текущая длина строки. Например, если A:='DAY' то ORD(A[0])=3.

Строковые процедуры и функции в Турбо-Паскале

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

3.1. Процедура DELETE.

Синтаксис:

DELETE(var S:String;Pos,Len:Integer);

Убирает из строки S Len символов начиная с Pos .Если Len больше длины S то ничего не происходит . Если Pos+Lеn больше длины строки то удаляются все символы до конца строки .

3.2. Процедура INSERT.

Синтаксис :

INSERT(S:String;var D:String;Pos:Integer);

Вставляет строку S в строку D начиная с символа с номером Pos . Если Pos больше длины D то S и D сливаются . Если длина результата при этом больше максимальной длины D то в D записываются только самые левые символы .

3.3. Процедура STR.

Синтаксис :

STR(I:Integer;var S:String);

STR(R:Real;var S:String);

Преобразует I или R из числа в строку и записывает эту строку в S.

ВНИМАНИЕ ! Процедура Str не дожна входить в функции, вызываемые в процедурах WRITE и WRITELN .

3.4. Процедура VAL.

Синтаксис :

VAL(S:String;var R:Real;var P:Integer);

VAL(S:String;var I,P:Integer);

Преобразует строковую переменную S в число ( тип зависит от типа переменной I или R соответственно ) . Если в строке S ошибок нет, то P равно 0, иначе значение R (или I) неопределено, а P присваевается номер первого ошибочного символа .

3.5. Функция CONCAT.

Синтаксис :

CONCAT(S1,S2,...,Sn:String):String;

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

3.6. Функция COPY.

Синтаксис :

COPY(S:String;Pos,Len:Integer):String;

Возвращает строку , полученную из Len символов строки S начиная с позиции Pos . Если Pos больше,чем длина строки S то возвращается пустая строка . Если Pos + Len больше ,чем длина строки S то возвращаются только символы , принадлежащие строке S .

3.7. Функция LENGTH.

Синтаксис :

LENGTH(S:String):Integer;

Возвращает длину строки S .

3.8. Функция POS.

Синтаксис :

POS(Pattern,Sourse:String):Integer;

Возвращает номер символа , начиная с которого Pattern входит в Sourse . Если вхождения нет , то возвращается 0 .

Примеры программ

Пример 4.1. Написать программу, которая записывает строку в обратном порядке и выводит ее на экран.

Программа 4.1.

PROGRAM PR;

USES CRT;

VAR A,B:STRING[10];

I,N:INTEGER;

BEGIN

CLRSCR;

WRITELN('Введите строку длиною не более 10 символов:');

READLN(A);

N:=LENGTH(A);

B:='';

FOR I:=1 TO N DO

B:=B+A[N+1-I];

WRITELN(B)

END.

Пример 4.2. Подсчитать число вхождений некоторого слова в заданный текст.

Программа 4.2.

PROGRAM PR42;

USES CRT;

TYPE TEXT=STRING[100];

WORDS=STRING[10];

VAR A,B:TEXT;

C:WORDS;

P,N,D:INTEGER;

BEGIN

CLRSCR;

WRITELN('Введите текст длиною не более 100 символов');

READLN(A);

B:=A;

WRITELN('Введите слово длиною не более 10 символов');

READLN(C);

N:=0;

D:=LENGTH(C);

P:=POS(C,B);

WHILE P>0 DO

BEGIN

N:=N+1;

DELETE(B,P,D);

P:=POS(C,B)

END;

WRITELN;

WRITELN('Число вхождений слова "',C,'" в текст :');

WRITELN;

WRITELN(A);

WRITELN;

WRITELN('равно ',N)

END.

12 Рекомендуемая литература

Информатика: Учебник. – 3-е перераб. Изд. /Под ред. Н.В. Макаровой. – М.: Финансы и статистика, 2001. – 768 с.

Информатика для юристов и экономистов: Учеб. для вузов /Под ред. С.В. Симоновича. – СПб.: Питер, 2001. - 688 с.

Информатика. Базовый курс /Симонович С.В. и др. – СПб.: Издательство "Питер", 1999.- 640 с.

Информатика: Учеб. Пособие для студентов пед. вузов /Могилев А..В., Пак Н.И., Хеннер Е.К. М.: Изд. Центр "Акадкмия", 2000. – 816 с.

Бахарева Н.Ф. и др. Машинные алгоритмы обработки информации: Методические указания ОГТУ – Оренбург: 1995. – 40 с.

Microsoft Windows 95. Шаг за шагом. Практическое пособие./Пер. с англ., М.: ЭКОМ, 1996 -320 с.

Мюллер Д. Нортон П. Полное руководство по Windows 95 Питера Нортона. М.: Бином, 1998 -728 с.

Ресурсы Microsoft Windows 95. М.: Изд. отд. Русская редакция 1996 – 656 с.

Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение – СПб.: Питер 2001. – 736 с.

Персон Р., Роуз К. Мicrosoft Word 97 в подлиннике: Пер. с англ. - СПб.: ВНV, 1997.-1120 с.

Microsoft Office 97: наглядно и конкретно: Иллюстрированный справочник. - М.: Русская редакция, 1997. -352с.

Новиков Ф., Яценко А. Microsoft Office 97 в целом. -СПб.: ВНV, 1998. –624с.

Microsoft Office 97: наглядно и конкретно: Иллюстрированный справочник. - М.: Русская редакция, 1997. –352 с.

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