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