Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
другие 1-10 ответы.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
40.08 Кб
Скачать

Строковые данные: процедуры и функции работы со строками.

Строковый тип string— тип данных, значениями которого является произвольная последовательность (строка) символов алфавита. Каждая переменная такого типа (строковая переменная) может быть представлена фиксированным количеством байтов либо иметь произвольную длину.

В представлении строк в памяти компьютера существует два принципиально разных подхода.

Представление массивом символов - строки представляются массивом символов; при этом размер массива хранится в отдельной (служебной) области.

Метод «завершающего байта» - заключается в использовании «завершающего байта». Одно из возможных значений символов алфавита (как правило, это символ с кодом 0) выбирается в качестве признака конца строки, и строка хранится как последовательность байтов от начала до конца.

Простейшие операции со строками

  • получение символа по номеру позиции (индексу) — в большинстве языков это тривиальная операция;

  • конкатенация (соединение) строк.

Производные операции

  • получение подстроки по индексам начала и конца;

  • проверка вхождения одной строки в другую (поиск подстроки в строке);

  • проверка на совпадение строк (с учётом или без учёта регистра символов);

  • получение длины строки;

  • замена подстроки в строке.

Операции при трактовке строк как списков

  • свёртка;

  • отображение одного списка на другой;

  • фильтрация списка по критерию.

Более сложные операции

  • нахождение минимальной надстроки, содержащей все указанные строки;

  • поиск в двух массивах строк совпадающих последовательностей (задача о плагиате).

Возможные задачи для строк на естественном языке

  • сравнение на близость указанных строк по заданному критерию;

  • определение языка и кодировки текста на основании вероятностей символов и слогов.

Записи: работа с записями, записи с вариантами.

Данные, описывающие существенные стороны того или иного объекта путем включения в описание нескольких, часто разнотипных, элементов, называют записью (record). В языке Паскаль запись определяется путем указания служебного слова record и перечисления входящих в запись элементов с указанием типов этих элементов.

Такая структура называется двухуровневым деревом. В Паскале эта информация может храниться в одной переменной типа record (запись).

Type anketa=record    fio: string[45];     pol: char;     dat_r: string[8];     adres: string[50];     curs: 1..5;     grupp: string[3]; end;

Двухуровневая запись. Уровней может быть и больше:

Type anketa1=record    fio: string[45];     pol: char;     dat_r: record;     god: integer;      mes: string[10];      den: 1..31; end;  adres: record     gorod: string[25];      ulica: string [20];      dom, kv: integer; end;  curs: 1..5;     grupp: string[3];  end;

Можем заполнить поле/вытащить из него данные, обратившись к нужному полю :

student.curs :=3;

Единственная операция, которую можно произвести над однотипными записями Паскаля – это присваивание. Все другие операции производятся над отдельными полями записи.

Записи с вариантами в различных ситуациях могут иметь различную структуру.

Type   Entry = Record       Autor, Title : String;       Year : 1..2000;       Case EntryType of         Book : (Publisher, City : String);         Magazine : (MagName : String,         Volume, Issue : Integer)     End;

Описание делится на две части: фиксированную и вариантную. Поля Autor, Title, Year составляют фиксированную часть. Оставшаяся часть описания Entry образует вариантную часть, структура которой, подобно хамелеону, может меняться в пределах двух альтернативных определений - Book и Magazine.

Замечания:

Любая запись (record) может иметь только одну вариантную часть (case), вариантная часть должна помещаться после постоянной части, среди идентификаторов полей не должно быть одинаковых.

Множества: операции; примеры использования множеств.

Множество — это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в множестве называется элементом множества.

Все элементы множества должны принадлежать одному из порядковых типов, содержащему не более 256 значений. Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечислением.

Область значений типа множество — набор всевозможных подмножеств, составленных из элементов базового типа. В выражениях на языке Паскаль значения элементов множества указываются в квадратных скобках: [1,2,3,4], ['а',‘b','с'], ['a'..'z'].

Если множество не имеет элементов, оно называется пустым и обозначается как []. Количество элементов множества называется его мощностью.

Множество может принимать все значения базового типа. Базовый тип не должен превышать 256 возможных значений. Поэтому базовым типом множества могут быть byte, char, boolean и производные от них типы.

Множество в памяти хранится как массив битов, в котором каждый бит указывает является ли элемент принадлежащим объявленному множеству или нет. Максимальное число элементов множества 256, а данные типа множество могут занимать не более 32 байт.

Var A, D : Set Of Byte;

A : = [50, 100, 150, 200];

D : = A;

Операции: объединение (+) : [1, 2, 3, 4] + [3, 4, 5, 6] => [1, 2, 3, 4, 5, 6], пересечение (*) : [1, 2, 3, 4] * [3, 4, 5, 6] => [3, 4], разность (-) : [1, 2, 3, 4] - [3, 4, 5, 6] => [1, 2], [3, 4, 5, 6] - [1, 2, 3, 4] => [5, 6], операция вхождения (операция, устанавливающая связь между множеством и скалярной величиной, тип которой совпадает с базовым типом множества. Если x — такая скалярная величина, а M — множество, то операция вхождения записывается так: x in M. Результат — логическая величина true, если значение x входит в множество M, и false — в противном случае).

Добавить новый элемент в множество можно с использованием операции объединения. Например, a:= a+[5]. include (M, A) M – множество, A – переменная того же типа, что и элементы множества M. Тот же пример можно записать так: Include (a, 5)

Исключить элемент из множества можно с помощью операции «разность множеств». Например, a:= a-[5]. Exclude: exclude (M, A) M – множество, A – переменная того же типа, что и элементы множества M. Тот же пример можно записать так: Exclude (a, 5)