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, например:
typeByteSet = set ofbyte; CharSet = set ofchar; Digits = set of'0'..'9'; // подмножества типа char
Сами множества задаются в виде перечисления их элементов (возможно с использованием диапазонов), заключенные в квадратные скобки:
var Vowels : CharSet; // можно было написать vowels : set ofchar; Good : Digits; // можно было написать good : set of'0'..'9';
…
Vowels :=['A ', 'E ', 'O', 'I', 'U']; // Элементы явно перечислены
Good:=['3'.. '5', '10']; // Диапазон и отдельный элемент
Для проверки принадлежности элемента множеству существует операция in:
var c : char;
…
ifc in Vowels theninc(n); // Если с – гласная, то увеличить n на 1
На обороте страницы приведена программа, которая вводит текстовую строку с экрана и выводит ее на экран азбукой Морзе, заодно проигрывая ее. В этой программе используется много нового: работа с модулем Sound, массив из строк, индексация массива не целыми числами, а типом char, функция задержки выполнения Sleep, функция перевода буквы в верхний регистр Upcase, работа с множеством.
Задание 16
1. Внимательно изучите текст программы ABCMorse, задайте преподавателю вопросы.
2. Напишите программу, которая вводит текстовую строку, подсчитывает, сколько в ней гласных букв, согласных букв, знаков препинания. (3 балла)
3. Напишите программу, которая вводит из файла 10 текстовых строк и выводит их в другой файл, отсортированными в алфавитном порядке. Используйте алгоритм сортировки занятия №13, и операцию сравнения строк < или >. (5 баллов)
4. Основываясь на программе ABCMorse придумайте интересную задачу на использование текстовых строк и множеств. (доп. баллы)
- 44 -
Файл morse.txt
·-
-···
·--
--·
-··
·
···-
--··
··
·---
-·-
·-··
--
-·
---
·--·
·-·
···
-
··-
··-·
····
-·-·
---·
----
--·-
--·--
-·--
-··-
··-··
··--
·-·-
ProgramABCMorze;
UsesSounds,CRT;
varA : array['А '..'Я '] ofstring [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);
forc:='А' to'Я' doreadln(f,A[c]);
close(f);
// Выводим таблицу на экран
forc:='А' to'Я' dowrite(c,' ',A[c]:5,' ');
// Загружаем звуки
dash:=LoadSound('dash.wav'); dot:=LoadSound('dot.wav');
// Вводим текстовую строку
writeln; write('Введите сообщение '); readln(s);
fori:=1 tolength(s) do// Разбираем ее по символам
ifUpcase (s[i]) in ['А '..'Я '] then// Проверка принадлежности
begin// Если это русская буква (перевод в заглавные – Upcase)
morze:=A[Upcase(s[i])]; // Читаем s[i] элемент массива A в строку morze
forj:=1 toLength(morze) do// Разбираем строку Morze и проигрываем её
Читать дальше