1 Алгоритмы обработки строк Алгоритмы
1
Алгоритмы обработки строк Алгоритмы для работы со строками нацелены на поиск заданного образца P в тексте T. Формально задача называется задачей поиска подстрок. Алгоритм должен определить позицию s подстроки P в тексте T. Позиция может быть допустимой, если : 0 ≤ s ≤ n-m и T[s+1. . s+m] = P[1. . m] Задача. Найти подстроку в строке. Поиск подстроки сводится к определению позиции s подстроки P в тексте T. Текст (S) Длина строка r k l a b c c d b f z a cтроки n Подстрока (P) Длина строка a b c подстроки m Время поиска подстроки просмотре всей строки оценивается формулой: t≈θ((n-m+1)*m) Более быстрые алгоритмы для поиска подстрок обеспечиваются структурами данных типа таблицы или деревья 2 Пример_работы_со_строками. doc
Логический тип данных Наименование типа Длина Boolean 1 байт Логические операции: not b 1 байт Byte. Boolean and x and b Word. Boolean 2 байта or x or b 4 байта xor z xor b Long. Boolean Исключающее «ИЛИ» Старшинство операций в Результат равен истине только выражениях, содержащих при истинности одного из операции над разными высказываний типами данных: Логические поразрядные 1. Унарные @, not операции 2. Мультипликативные: *, / , div, mod, and, shl, shr Shl Сдвиг влево числа 3. Аддитивные: Shr Сдвиг вправо числа +, -, or, xor Функция odd(x) 4. Отношения: b: =odd(x) b равно истине, as, in, <, <= , >= , <> если x нечетно If b then writeln(‘ х нечетное’); 3
Операторы циклов в языке ОПЕРАТОРЫ ЦИКЛОВ Все повторяющие процессы обработки данных оформляются операторами циклов. Цикл «Пока» . While <Условие для выполнения действий> do <действие в цикле> ; i: =1; Цикл «До» Циклы с постоянным While i <= n do шагом Repeat For i: =1 to n do begin <действия в цикле> Until <условие возврата на begin s[i]: =0; ……… { шаг +1} повторение действий i: =i+1; до получения истинного end; значения условия > For i: =n downto 1 do Правила выхода i: =1; begin {шаг -1} из цикла Repeat ……… s[i] : = 0; end; Никаких других изменений i: =i+1; шага в этой Until i> n; структуре нет
Операторы цикла типа For • Вложенные циклы 1. Нельзя изменять параметр For i………. do цикла for внутри цикла begin For j……. . do 2. Войти в цикл можно только begin через его заголовок ……… Внутренний цикл 3. Конец вложенного цикла end; должен быть ранее …………. . внешнего цикла end; Внешний цикл 5
Операторы управления для циклов Изменение порядка выполнения циклов обеспечивается операторами: Break; Выполняется немедленный выход из цикла к следующему оператору программы Continue; Продолжение цикла будет, даже при невыполнении предыдущей итерации цикла Exit; Немедленный выход из подпрограммы Halt; Завершение программы Переход по метке Goto <Метка>
Массивы • Массив – это набор элементов одного типа, доступ к которым обеспечивается по номеру (индексу) • Описание массива в программе: type <имя массива> = array <[диапазон индексов]> of <тип элементов массива>; • Для выбора элемента массива надо указать только его индекс (номер в последовательности значений). • Номер первого элемента – Low(<имя переменной массива>) • Номер последнего элемента - High(<имя переменной массива>) • Длина массива в памяти Length (<имя переменной массива>) • Многомерный массив – это массив, имеющий несколько измерений (2 и выше). type <имя массива> = array <[диапазон индексов], … . …<диапазон индексов]> > of <тип элементов массива>; 7
Объявление массивов 2. Динамические массивы Определение типа: 1. Статические массивы Type mas_dyn= array of real; Определение типа: ss=string[60]; mas_ds = array of ss; Type aa =array [1. . 20] of real; mas_2 d=array of real; ss = array [1. . 60] of string[60]; Var m_d : mas_dyn; или m_s : mas_ds; Const n = 30; m_2 d: mas_2 d; m =1. . 10; Begin type ab = array [1. . n] of integer; setlength(m_d, 0); sb = array [m] of string[30]; setlength(m_2 d, 10); Выбор элемента массива: dd_ab = array [1. . n, 1. . n] of real; Двумерный массив m_d [i] m_s[j] m_2 d[i, j] Var a: aa; или m_d^ [i] m_s^[j] s: ss; a 1: ab; sbb: sb; ad: dd_ab; m_2 d^[i, j] Begin Индексы массивов a 1[i] sbb[k] ad[i, j] изменяются от 0 до n-1. i, j, k изменяются от 1 до Длина массива n=length(m_d); 8 n или m
Физическое представление массивов 1. Статический массив i a 1 a 2 …. . an-1 an n - у статического массива постоянная величина Вставить новый элемент в массив. . Последовательность действий: • Проверить возможность добавления элемента массива • Сместить вправо все элементы после i-ого элемента • Вставить новый элемент вместо i-ого элемента • Сохранить новую размерность массива адрес 2. Динамический массив i a 0 a 1 ……. . an-1 • Увеличить n на количество вставляемых значений • Задать новую длину массива Setlength(a, n); • Сместить вправо все элементы после i-ого элемента 9 • Вставить новый элемент в динамический массив:
Основные действия с массивами данных 1. Ввод/вывод массивов 2. Поиск заданного значения в массиве 3. Удаление элемента из массива 4. Добавление нового элемента на заданное место 5. Сортировка массива по заданному признаку Замечание. Массивы одного типа можно переприсваивать: Type aa=array [1. . 20] of real; var a, b: aa; begin <ввод массива a> b: =a; 10 // Получаем копию массива a
Информатика_Л7.pptx
- Количество слайдов: 10