| Каталог | Индекс раздела |
| Назад | Оглавление | Вперед |
1. ЦЕЛЬ РАБОТЫ: Изучение символьных типов данных CHAR и STRING и операций над ними.
2. ОСНОВНЫЕ СВЕДЕНИЯ
Наряду с числовой информацией в Паскале используется алфавитно-цифровая или символьная информация, которая включает в себя заглавные, строчные буквы, цифры от 0 до 9 и вспомогательные символы. Для описания символьных переменных используется тип данных CHAR или STRING.
2.1. Тип данных CHAR
Каждая переменная символьного типа может принимать значение только одного символа. Все символы упорядочены в соответствии с принятым в ЭВМ коде (например ASCII). При этом порядковый номер символов называется кодом (например, код латинского символа 'А ' равен 65; символа '3' равен 51).
Для символьных данных не определены никакие арифметические операции, но они могут сравниваться по своим кодам, участвовать в чтении, печати, операторах присваивания. Существуют две стандартные функции преобразования :
1) ORD(C) принимает значение кода символа С; например:
ORD('А')=65
2) значение функции CHR(I) является символ с кодом I; например:
CHR(ORD(C))=C; CHR(65) = A;
Строка - это последовательность символов. Строку можно представить как массив, элементы которого имеют тип CHАR. Например:
BUK: array[1..17] of char;
Массив BUK - массив символов, который содержит 17 символов. Если символов меньше, то строка дополняется пробелами справа. В противном случае возникает ошибка несоответствия типов. Так как массивы символов являются обычными массивами с элементами типа CHAR, они обладают всеми свойствами массивов.
Пример: Из набора 10 любых символов напечатать только заглавные английские буквы и их коды.
program lr2;
type sl =array [1..10] of char;
var s: sl; {описание массива символов}
i: integer;
begin
writeln ('введите 10 символов'):
for i:=l to 10 do readln (s[i]); {ввод массива}
for i:=l to 10 do
if (s[i]>='A') and (s[i]<= 'Z') then
writeln ('Символ :', s[i], ' его код =', ord(s[i]);
readln;
end.
2.2. Тип данных STRING
В Турбо Паскале предусмотрен тип данных STRING. Переменная типа STRING может принимать значения переменной длины. Максимально возможная длина переменной 255 символов. Например:
str: STRING[200]; ow: STRING[10];
В скобках указывается максимальная длина для данной переменной. Для ввода значений типа STRING необходимо использовать READLN, а не READ. За один раз может быть введена только одна строка. Две строки можно сравнивать, используя операции отношения (сначала сравниваются самые левые символы, если они равны, то сравниваются следующие). Для работы с переменными типа STRING используют следующие стандартные процедуры и функции:
- Функция
LENGTH
C:=LENGTH(str);ПеременнойСбудет присвоено целое значение, показывающее количествo символов в строковой переменнойstr.- Функция
СОNCAТ- сцепление строк в порядке их перечисления.
str:=CONCAT(st1,st2,...,stN);str- переменная типаSTRING, состоящая из строкst1,...,stN.- Функция
POS
P:=POS (st1, st2);Р-целое число, показывающее номер позиции, с которой начинается строкаst1в строкest2.- Функция
COPY
S1:=COPY( str, I, J);Sl- символьная подстрока, выделенная из строкиstrс позицииI, длинойJсимволов.- Процедура
DELETE(Str, I, J)
Из строкиstrудаляетсяJсимволов, начиная с позицииI.- Процедура
INSERT(Str1, Str2, I)
СтрокаStr1вставляется с позицииIв строкуStr2.- Процедура
STR(V, S1)
Числовое значение переменнойVпреобразуется в строку символов и записывается в строкуS1.- Процедура
VAL(S1, V, C)
Строковое выражениеS1преобразуется в величину целочисленного или вещественного типа и записывается в переменнойV. Если при этом ошибок не обнаруживается, тоСбудет равно 0 . В противном случае значениеСбудет равно номеру позиции первого ошибочного символа, иVбудет не определено. СтрокаS1не должна содержать незначащих пробелов, переменнаяVможет быть целой или вещественной, а переменнаяС- только целой .
Пример: Подсчитать количество слов во введенной с клавиатуры строке.
program lr2;
var
s: string[30];
kol, i, n: integer;
begin
writeln ('введите строку'); readln (s);
kol:=0; {счетчик количества слов}
n:= length(s); {определяем длину введенного текста}
s:= concat(' ',s); {добавляем пробел к первому слову}
for i:=1 to n do
if (copy (s,i,1)=' ') and (copy (s,i+1,1)<>' ')
then kol := kol+1;{подсчет количества слов}
writeln (s,' количество слов= ', kol);
readln
end.
3. ВЫПОЛНЕНИЕ РАБОТЫ
- Набрать и откомпилировать приведенные выше программы, исправить выявленные ошибки. Ввести разные исходные данные, убедиться в правильности выполнения программ.
- Составить программы с использованием символьных данных согласно вариантам заданий, откомпилировать их, проверить полученные результаты.
Варианты заданий. Текст вводится с клавиатуры в символьную переменную. Исходный текст и результаты распечатать.
- Вывести на печать список слов, имеющих приставку (несколько букв), задаваемую с терминала.
- Раздвинуть заданный текст, вставив введенную с клавиатуры последовательность символов после 1-го символа каждого слова.
- В заданном тексте слова разделены запятыми. Напечатать список слов, начинающихся с символа, введенного с клавиатуры.
- Определить наличие слов в заданном тексте, содержащих сочетание символов, задаваемое с экрана.
- Из заданной последовательности слов удалить слова, содержащие числа.
- Каждое слово текста преобразовать таким образом, чтобы оно читалось слева направо.
- Подсчитать количество слов, разделенных запятыми, содержащих
kгласных букв (k- задается с экрана).- Из введенного текста сначала распечатать слова, заканчивающиеся на согласную букву, а потом на гласную букву.
4. КОНТРОЛЬНЫЕ ВОПРОСЫ
- Описание переменных символьного типа.
- Функции преобразования переменных символьного типа.
- Отличие типов данных
STRINGиCHAR.- Приведите конкретные примеры использования каждой функции и процедуры.
| Каталог | Индекс раздела |
| Назад | Оглавление | Вперед |