
- •Оглавление
- •Комбинированный урок №12
- •Алгоритмы обработки символьной информации
- •Типы данных, используемые для обработки символьной информации
- •Операция присваивания
- •Операция сцепления
- •Операции отношения
- •Функции и команды обработки строк Процедуры
- •Функции
- •Примеры программ работы со строковыми данными
- •Вариант 1. Слова в тексте разделены одним пробелом. Тест
- •Var Text : String; {заданный непустой текст}
- •I, Number : Integer; {Number — количество слов в тексте}
- •Вариант 2. Слова в тексте разделены произвольным количеством пробелов.
- •Var Text : String; {заданный текст}
- •I, Number : Integer; {Number - количество слов в тексте}
- •Система тестов
- •If Flag then WriteLn(' — перевертыш. ')
- •Insert(Slovo2, Text, p); {вставка подстроки Slovo2 }
- •Var Words : Array[1..10] of String; {массив слов}
- •I, j, nWords : Integer; {nWords — количество слов}
- •Система тестов
- •Множества
- •Операции над множествами
- •Объединение Пересечение Разность
- •Контрольные вопросы
Лекция:
Символьные переменные и строки.
Организация и размещение в памяти.
Процедуры и функции обработки строк
Страница.
Оглавление
Алгоритмы обработки символьной информации 1
Функции и команды обработки строк 3
Примеры программ работы со строковыми данными 5
Записи 7
Множества 8
Операции над множествами 9
Контрольные вопросы 11
Комбинированный урок №12
Тема: Символьные переменные и строки. Организация и размещение в памяти. Процедуры и функции обработки строк
Цель: изучить приемы работы с данными типа «строка», приобрести навыки использования строковых процедур и функций Паскаля.
Алгоритмы обработки символьной информации
Символьная информация — это информация, отображаемая с помощью символов (букв, цифр, знаков операций и др.). IBM-совместимые компьютеры обрабатывают 256 различных символов, каждый из которых кодируется одним байтом. Соответствие символов и байтов задается таблицей кодировки, в которой для каждого символа указывается соответствующий байт.
Символы с кодами от 0 до 127 построены по стандарту ASCII (American Standard Code for Information Interchange — Американский стандартный код обмена информацией, читается "аски"). Вторая половина таблицы (коды 128 ... 255) в нашей стране содержит русские буквы (кириллицу) и символы псевдографики. Для того, чтобы определить по этим таблицам код того или иного символа, нужно сложить номер строки с номером столбца, в которых он расположен. Так, код цифры 5 равен 05+048 = 053.
Рисунок 1 - Стандартная кодировка фирмы IBM: а) для кодов 0...127; b) для кодов 128...255
Стандартный отечественный знакогенератор строится по рекомендациям Международного консультационного комитета по телеграфии и телефонии (МККТТ). Расположение символов во второй половине таблицы этого знакогенератора (рис.2,а) резко отличается от принятого фирмой IBM, что затрудняет использование зарубежного программного обеспечения на отечественных ПК. В связи с этим, стандартный (так называемый ГОСТовский) вариант кодировки часто заменяется альтернативным (рис.2,b), главное достоинство которого - расположение символов псевдографики на тех же местах, что и в знакогенераторе IBM. Недостаток такого знакогенератора заключается в том, что символы кириллицы не образуют непрерывный массив. Вариант, показанный на рис. 2,b в настоящее время получил наибольшее распространение на отечественных ПК. Именно на него рассчитаны практически все программы отечественного производства. Он стал фактическим стандартом для зарубежных фирм, изготовляющих ПК для экспорта в нашу страну.
Рисунок 2 - Варианты кодировки для кодов 128...255: а) по рекомендациям МККТТ; b) наиболее популярный
Символьная информация в алгоритмах и программах описывается данными двух типов: символьным и литерным. Они отличаются друг от друга тем, что значением символьной переменной является один символ, а литерной — строка символов.
Строка - это последовательность символов кодовой таблицы персональной ЭВМ. При использовании в выражениях строка-константа заключается в апострофы. Длина строки равняется количеству символов в этой строке и может изменяться от 0 до 255.
Для определения данных строкового типа используется идентификатор string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию длина строки равна 255 байт. Переменную строкового типа можно задать через описание типа в разделе определения типов или непосредственно в разделе описания переменных.
Форма описания строковых данных:
Type имя типа=String [максимальная длина строки];
Var имя строковой переменной : имя типа;
или
Var имя строковой переменной : String [максимальная длина строки];
Пример: Type str=String[30];
Var C1,C2:str;
или
Var C3,C4:String[25];
Объем памяти в байтах, требуемый для размещения строки, равен ее максимальной длине плюс 1 байт, в котором запоминается длина данной строки. Допустимо использование типизированных констант строкового типа, например:
Const S1 : String[4]=’ТБИП’;
S2 : String[4]=#107#116#102#44; {ktf.}
S3 : String[10]=’Да‘;
Знак # означает, что символ представляется его ASCII кодом.
Как и в массивах, к отдельным символам строки можно обратиться с помощью индексов в квадратных скобках: S1[2], S2[3]. При этом символ с нулевым индексом S1[0] содержит код, равный числу символов в строке S1.
Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых констант, переменных, строковых функций и знаков операций. Над строковыми данными допустимы операции присваивания, сцепления и отношения.