ОБРАБОТКА ТЕКСТОВЫХ ДАННЫХ. РЕШЕНИЕ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ЗАПИСЕЙ.
Начиная с версии 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 (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; {ищем слова с одинаковыми первыми и последними символами}