Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обработка текстов данных записи лекция 3.docx
Скачиваний:
2
Добавлен:
14.04.2019
Размер:
31.1 Кб
Скачать

8

Обработка текстовых данных. Решение задач с использованием записей.

Начиная с версии 7.0, в языке ТР существует три типа текстовых данных: символьные - Char, строчные - String и, так называемые asciiz-строки.

Символьная константа – это один символ в кавычках, например, 'A', '5', '?' и т.д. Она занимает 1 байт памяти.

Символьная переменная описывается словом Char.

Так оператор Var S, T, Sim: char; обозначает, что в программе будут использованы три символьные переменные S, T, Sim. Для каждой из них будет выделен 1 байт памяти, куда нужно записать соответствующее значение. Это можно сделать разными способами, например, в операторе присвоения: S:='*'; . Оператор Read(S) обеспечит ввод символа с клавиатуры.

Символьные данные можно объединять в массив, например:

Var p: array[1..50] of char;

Функция Р – это строка из 50 символов. Ее можно ввести в цикле.

For i:=1 to 50 do read(P[i]); readln;

Существует возможность работы с элементами массива Char, как с элементами обычных массивов. Например:

P[i]:=’ ’;

If P[i]=’*’ then writeln(P[i]);

Страничку текста можно представить двумерным массивом.

Var Str: array[1..60,1..80] of char;

Однако существует ограниченный класс задач, при решении которых удобно использовать данные Char.

Наиболее удобны для работы с текстами данные String. Переменная такого типа может иметь длину 255 байтов.

Строчная константа описывается служебным словом String, после которого может стоять в квадратных скобках число – длина строки. Например:

Var t: string[50];

S,Q: string;

В этом случае для переменной Т будет выделен 51 байт памяти, а для переменных S и Q – по 256 байтов. В эту память можно записать конкретную последовательность символов, длина последовательности может быть меньше, чем выделено. Так, после выполнения оператора

Т:='алгоритм сортировки';

В выделенной памяти будет размещено 20 символов, так что в T[1] будет символ a, а в T[2]‘л’ и т.д.

Строку можно ввести с клавиатуры при помощи оператора Readln, например:

Readln (Т); .

Для ввода каждой строки используется отдельный Readln, это дает возможность вводить строку любой длины.

Две переменные нельзя вводить одним оператором Readln.

Readln (S,Q); - неверно.

Правильно Readln (S); Readln(Q);

При вводе текста сначала после первой фразы, а потом после второй нажать Enter.

В библиотеке языка есть несколько важных подпрограмм для выполнения различных операций со строками String.

Функция Pos(подстрока, строка) определяет первую слева позицию, начиная с которой подстрока входит в строку. Функция Pos(S1,S2) ищет в S2(с левого края) подстроку S1. Если S1 в S2 нет, результат равен нулю.

Функция Copy(строкаS1, NPoz, Kоlsim) выделяет из строки S1 подстроку, начиная с позиции NPoz длиной Kоlsim символов.

Функция Length(строка) определяет количество символов в строке.

Процедура Insert(подстрока, строка, NPoz) выполняет операцию вставки подстроки в строку, начиная с позиции NPoz.

Процедура Delete(строка, NPoz, Kоlsim) удаляет из строки подстроку с позиции NPoz, длиной Kоlsim.

Пример.

Слова в предложении отделены символом пробел. Определить количество слов, которые начинаются и заканчиваются одинаковыми символами.

Uses crt; {ищем слова с одинаковыми первыми и последними символами}