Выбрать главу
Стандартные процедуры и функции для работы со строками

Имя и параметры

Типы параметров

Тип возвращаемого значения

Действие

Length(s)

s - string

integer

возвращает длину строки s

Copy(s,index,count)

s - string, index и count - integer

string

возвращает подстроку строки s длины count, начиная с позиции index

Delete(s,index,count)

s - string,

удаляет в строке s count символов index и начиная с позиции index count - integer

Insert(subs,s,index)

s, subs - string, index - integer

вставляет подстроку subs в строку s с позиции index

Pos(subs,s)

s, subs- string

integer

возвращает позицию первой подстроки subs в строке s (или 0 если подстрока не найдена)

SetLength(s,n)

s - string, n - integer

устанавливает длину строки s равной n

Str(x,s)

Str(x:n,s)

Str(x:n:m,s)

s - string, x - integer, real и n, m - integer

преобразует x к строковому представлению (во втором и третьем случаях согласно формату вывода, устанавливаемому n и m) и записывает результат в строку s

Val(s,v,code)

s - string, v - integer, real, и code - integer

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

Concat(s1,...,sn)

s1,..., sn - string

string

возвращает строку, являющуюся string результатом слияния строк s1,..., sn.

Результат тот же, что у выражения s1+s2+...+sn

UpCase(c)

c - char

char

возвращает символ c, преобразованный к верхнему регистру

LowCase(c)

c - char

char

возвращает символ c, преобразованный к нижнему регистру

UpperCase(s)

s - string

string

возвращает строку s, преобразованную к верхнему регистру

LowerCase(s)

s - string

string

возвращает строку s, преобразованную к нижнему регистру

Trim(s)

s - string

string

возвращает копию строки s с удаленными лидирующими и заключительными пробелами

- 43 -

Тема №16 Множества символов

В языке Pascal есть очень интересный тип данных множество. Множество представляет собой набор элементов одного порядкового типа. Элементы множества считаются неупорядоченными; каждый элемент может входить во множество не более одного раза. Тип множества описывается следующим образом: set of базовый тип;

В качестве базового может быть любой порядковый тип с элементами, для которых функция Ord возвращает значения в диапазоне от 0 до 255. К таким типам, из изученных нами, относятся тип char и byte (а также их подмножества).[16] Аналогично массивам можно определить название нового типа в секции type, например:

type ByteSet = set of byte; CharSet = set of char; Digits = set of '0'..'9'; // подмножества типа char

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

var Vowels : CharSet; // можно было написать vowels : set of char; Good : Digits; // можно было написать good : set of '0'..'9';

Vowels :=['A ', 'E ', 'O', 'I', 'U']; // Элементы явно перечислены

Good:=['3'.. '5', '10']; // Диапазон и отдельный элемент

Для проверки принадлежности элемента множеству существует операция in:

var c : char;

if c in Vowels then inc(n); // Если с – гласная, то увеличить n на 1

На обороте страницы приведена программа, которая вводит текстовую строку с экрана и выводит ее на экран азбукой Морзе, заодно проигрывая ее. В этой программе используется много нового: работа с модулем Sound, массив из строк, индексация массива не целыми числами, а типом char, функция задержки выполнения Sleep, функция перевода буквы в верхний регистр Upcase, работа с множеством.

Задание 16

1. Внимательно изучите текст программы ABCMorse, задайте преподавателю вопросы.

2. Напишите программу, которая вводит текстовую строку, подсчитывает, сколько в ней гласных букв, согласных букв, знаков препинания. (3 балла)

3. Напишите программу, которая вводит из файла 10 текстовых строк и выводит их в другой файл, отсортированными в алфавитном порядке. Используйте алгоритм сортировки занятия №13, и операцию сравнения строк < или >. (5 баллов)

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

- 44 -

Файл morse.txt

·-

-···

·--

--·

-··

·

···-

--··

··

·---

-·-

·-··

--

---

·--·

·-·

···

-

··-

··-·

····

-·-·

---·

----

--·-

--·--

-·--

-··-

··-··

··--

·-·-

Program ABCMorze;

Uses Sounds,CRT;

var A : array ['А '..'Я '] of string [5];

c : char;

f : text;

s : string;

i,j : integer;

dash, dot : integer;

morze : string [5];

begin

// Читаем файл и заполняем массив строк A['А'], A['Б'], A['Я'] азбукой Морзе

assign (f,'morze.txt'); reset (f);

for c:='А' to 'Я' do readln(f,A[c]);

close(f);

// Выводим таблицу на экран

for c:='А' to 'Я' do write(c,' ',A[c]:5,' ');

// Загружаем звуки

dash:=LoadSound('dash.wav'); dot:=LoadSound('dot.wav');

// Вводим текстовую строку

writeln; write('Введите сообщение '); readln(s);

for i:=1 to length(s) do // Разбираем ее по символам

if Upcase (s[i]) in ['А '..'Я '] then // Проверка принадлежности

begin // Если это русская буква (перевод в заглавные – Upcase)

morze:=A[Upcase(s[i])]; // Читаем s[i] элемент массива A в строку morze

вернуться

16

Другие возможные базовые типы – перечисления (об этом позже).