Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

заданием типов данных.

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 20.5.2024

Ограниченный и перечислимый типы данных.

Наглядность программы можно существенно улучшить самостоятельным заданием типов данных.Ограниченный тип (тип-диапазон)

-задается минимальным и максимальным значениями переменной базового типа:непосредственное указание ограниченного типа при объявлении переменной в разделе var: var month: 1..12; bukva: 'к'..'т'; через описание типа:  cifra = 0..9; var k: cifra;Перечислимый (перечисленный, перечисляемый) тип- перечисляются все значения, которые может принимать переменная такого типа:непосредственное задание при объявлении переменной в разделе var: var color:(red,green,blue);через описание типа:type color=(red,green,blue); var c:color;В идентификаторах значений используются только ЛАТИНСКИЕ буквы.Каждое значение перечислимого типа получает порядковый номер от 0 до 65536 :Поэтому перечислимый тип можно использовать в операторах case и for. Для перечислимого типа не используются операторы write и read.

Числовые типы данных Pascal-Паскаль

В пределах одного языка могут быть реализованы различные подмножества множества целых чисел. Диапазон возможных значений целых числовых типов зависит от их внутреннего представления, которое может занимать один, два или четыре байта. Так, в Паскале 7.0 используются следующие целые числовые типы данных:С целыми числовыми типами данных Паскаля можно выполнять следующие операции:Арифметические:сложение(+);вычитание(-);умножение(*);остаток от деления (mod);возведение в степень; унарный плюс (+);унарный минус (-).Операции отношения:отношение равенства (=);отношение неравенства (<>); отношение меньше (<); отношение больше (>);отношение не меньше (>=);отношение не больше (<=).При действиях с целыми числовыми типами данных тип результата будет соответствовать типу операндов, а если операнды относятся к различным целым типам, - типу того операнда, который имеет максимальную мощность.Возможное переполнение результата никак не контролируется что может привести к ошибкам. результатом деления является не целое, а вещественное число.К вещественному числовому типу данных относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей запятой и фиксированным числом цифр. С плавающей точкой каждый числовой тип данных представляется в виде двух групп цифр. Первая группа цифр называется мантиссой, вторая – порядком.Числовой тип данных в форме с плавающей точкой может быть представлено так: X= {+|-}MP{+ | -} r, где M– мантисса числа; r– порядок числа(r – целое число);P–основание системы счисления.При описании вещественной переменной типа real в памяти компьютера будет создана переменная размерностью 4 байта. При этом 3 байта будут отданы под мантиссу, а один – под порядок.Над действительными числовыми типами данных можно выполнять следующие операции:Арифметические:сложение (+);вычитание(-);умножение(*);деление(/); возведение в степень;унарный плюс (+);унарный минус (-).Операции отношения: отношение неравенства (<>); отношение меньше (<);отношение больше (>); отношение не меньше (>=);отношение не больше (<=).В Паскале почти невозможны неявные преобразования числовых типов данных. Исключение сделано только для типа integer, который разрешается использовать в выражениях типа real. Например, если переменные описаны следующим образом:Var X : integer;  Y: real; то оператор Y := X+2; будет синтаксически правильным, хотя справа от знака присваивания стоит целочисленное выражение, а слева – вещественная переменная, компилятор сделает преобразование числовых типов данных автоматически. Обратное же преобразование автоматически типа real в тип integer в Паскале невозможно.Для преобразования real в integer имеются две встроенные функции: round(x) округляет вещественное x до ближайшего целого, trunc(x) усекает вещественное число путем отбрасывания дробной части.

Множества в языке Pascal

Множество—это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в множестве называется элементом множества. Все элементы множества должны принадлежать одному из порядковых типов, содержащему не более 256 значений. Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечислением. Область значений типа множество — набор всевозможных подмножеств, составленных из элементов базового типа. В выражениях на языке Паскаль значения элементов множества указываются в квадратных скобках: [1,2,3,4], ['а',‘b','с'], ['a'..'z']. Если множество не имеет элементов, оно называется пустым и обозначается как []. Количество элементов множества называется его мощностью. Множество может принимать все значения базового типа. Базовый тип не должен превышать 256 возможных значений.Базовым типом множества могут быть byte, char, boolean и производные от них типы. Множество в памяти хранится как массив битов, в котором каждый бит указывает является ли элемент принадлежащим объявленному множеству или нет. Максимальное число элементов множества 256, а данные типа множество могут занимать не более 32 байт. Не имеет значения порядок записи элементов множества внутри конструктора. Например, [1, 2, 3] и [3, 2, 1]—это эквивалентные множества. Каждый элемент в множестве учитывается только один раз. Поэтому множество [1, 2, 3, 4, 2, 3, 4, 5] эквивалентно [1..5]. Переменные множественного типа описываются так:Var <идентификатор> : set of <базовый тип>; Например:  Var A, D : Set Of Byte; B : Set Of 'a'..'z'; C : Set Of Boolean; Нельзя вводить значения во множественную переменную процедурой ввода и выводить процедурой вывода. Множественная переменная может получить конкретное значение только в результате выполнения оператора присваивания:<множественная переменная> := <множественное выражение>; Например: A : = [50, 100, 150, 200];B : = ['m', 'n', 'k']; C : = [True, False]; D : = A;Выражения могут включать в себя операции над множествами. Объединением двух множеств A и B называется множество, состоящее из элементов, входящих хотя бы в одно из множеств A или B. Знак операции объединения в Паскале «+».Пересечением двух множеств A и B называется множество, состоящее из элементов, одновременно входящих во множество A и во множество B. Знак операции пересечения в Паскале «*»Разностью двух множеств A и B называется множество, состоящее из элементов множества A, не входящих во множество B.

Массивы

Массивы - это совокупности однотипных элементов. Характеризуются они следующим: каждый компонент массива может быть явно обозначен и к нему имеется прямой доступ; число компонент массива определяется при его описании и в дальнейшем не меняется.Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент. Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон). Описание типа массива задается следующим образом: type имя типа = array[ список индексов ] of тип Здесь имя типа - правильный идентификатор; список индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных. Вводить и выводить массивы можно только поэлементно.Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например: var a,b,c: array[1..10] of integer;Если типы массивов идентичны, то в программе один массив может быть присвоен другому. В этом случае значения всех переменных одного массива будет присвоены соответствующим элементам второго массива. Над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно. Так как тип, идущий за ключевым словом of в описании массива, - любой тип Турбо Паскаль, то он может быть и другим массивом.Таким образом возникает понятие многомерного массива. Глубина вложенности массивов произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничена, однако не может быть более 65520 байт. Работа с многомерными массивами почти всегда связана с организацией вложенных циклов. Так, чтобы заполнить двумерный массив (матрицу) случайными числами, используют конструкцию вида: for i:=1 to m do  for j:=1 to n do a[i,j]:=random(10); Для "красивого" вывода матрицы на экран используйте такой цикл: for i:=1 to m do begin for j:=1 to n do write(a[i,j]:5);  writeln;end;

Строки

Строка (string) - это последовательность литер Тип данных (string) определяет строки с максимальной длиной 255 символов. Переменная этого типа может принимать значения переменной длины.Например,MaxLine : string;City : string[30] Строковая переменная может иметь атрибут длины, определяющий ее максимальную длину.Текущая длина строковой переменной может быть определена с помощью встроенной функции Length. Для заданного значения типа string эта функция возвращает целое значение, показывающее количество литер в строке.Выражения, в которых операндами служат строки, называются строковыми выражениями.Над строками определены следующие операции:1. Операция конкатенации  (+) применяется для сцепления нескольких строк в одну.2. Операции отношения (=, <>, >, <, >=, <=) проводят посимвольное сравнение двух строк слева направо до первого несовпадающего символа. Большей считается та строка, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Результат выполнения операций отношения над строками всегда имеет булевский тип.Если строки имеют различную длину, но в их общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная.Строки считаются равными, если они совпадают по длине и содержат одни и те же символы на соответствующих местах в строке.Для присваивания строковой переменной результата строкового выражения используется оператор присваивания. Если значение переменной после выполнения оператора присваивания превышает по длине максимально допустимую при описании величину, то все лишние символы справа отбрасываются.Допускается смешение в одном выражении операндов строкового и символьного типа.К отдельным символам строки можно обратиться по номеру (индексу) данного символа в строке. Для хранения строковых переменных выделяется количество байтов памяти, на единицу большее максимальной длины строки. Начальный байт этой памяти отводится для хранения текущей длины строки, следующие байты - для символов самой строки. Так как элементы строк стандартно нумеруются целыми числами, начиная с единицы, байт с длиной строки можно считать нулевым ее элементом. Такая структура памяти допускает прямой доступ к ее элементам.Для обработки строковых данных можно использовать встроенные процедуры и функции:Delete (Str, Poz, N) - удаление N символов строки Str, начиная с позиции Poz.Insert (What, Where, Poz) - вставка строки What в строку Where, начиная с позиции Poz.Copy (Str, Poz, Nstr) - выделяет подстроку длиной Nstr, начиная с позиции Poz, из строки Str.Concat (Str1, Str2, ..., StrN) - выполняет сцепление строк в том порядке, в каком указаны в списке параметров.Pos (What, Where) - обнаруживает первое появление подстроки What в строке Where.UpCase (Ch) - преобразует строчную букву в прописную.Str (Number, Stroka) - преобразует число в строку.Val (Stroka, Number, Code) - преобразует строку в число и выдает код правильности преобразования

Файлы

Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства. При работе с файлами выполняются операции ввода - вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода-это пересылка данных из основной памяти на внешнее устройство.Файлы на внешних устройствах часто называют физическими файлами.Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Турбо Паскаль поддерживает три файловых типа: текстовые файлы; типизированные файлы; нетипизированные файлы.Доступ к файлу в программе происходит с помощью переменных файлового типа. Переменную файлового типа описывают одним из трех способов:  file of тип - типизированный файл(указан тип компоненты); text - текстовый файл; file - нетипизированный файл. Стандартные процедуры и функцииAssign(f, FileName)связывает файловую переменную f с физическим файлом, полное имя которого задано в строке FileName. После связи файловой переменной с дисковым именем файла в программе нужно указать направление передачи данных (открыть файл). В зависимости от этого направления говорят о чтении из файла или записи в файл. Reset(f) открывает для чтения файл, с которым связана файловая переменная f. После успешного выполнения процедуры Reset файл готов к чтению из него первого элемента. Процедура завершается с сообщением об ошибке, если указанный файл не найден. Если f - типизированный файл, то процедурой reset он открывается для чтения и записи одновременно. Rewrite(f) открывает для записи файл, с которым связана файловая переменная f. После успешного выполнения этой процедуры файл готов к записи в него первого элемента. Если указанный файл уже существовал, то все данные из него уничтожаются. Close(f)закрывает открытый до этого файл с файловой переменной f. Вызов процедуры Close необходим при завершении работы с файлом. Если по какой-то причине процедура Close не будет выполнена, файл все-же будет создан на внешнем устройстве, но содержимое последнего буфера в него не будет перенесено. EOF(f): boolean возвращает значение TRUE, когда при чтении достигнут конец файла. Это означает, что уже прочитан последний элемент в файле или файл после открытия оказался пуст. Rename(f, NewName) позволяет переименовать физический файл на диске, связанный с файловой переменной f. Переименование возможно после закрытия файла. Erase(f)уничтожает физический файл на диске, который был связан с файловой переменной f. Файл к моменту вызова процедуры Erase должен быть закрыт.

Типизированный файл 

Это последовательность компонент любого заданного типа (кроме типа "файл"). Доступ к компонентам файла осуществляется по их порядковым номерам. Компоненты нумеруются, начиная с 0. После открытия файла указатель (номер текущей компоненты) стоит в его начале на нулевом компоненте. После каждого чтения или записи указатель сдвигается к следующему компоненту. Запись в файл: Write(f, список переменных);Процедура записывает в файл f всю информацию из списка переменных. Чтение из файла: Read(f, список переменных);Процедура читает из файла f компоненты в указанные переменные. Тип файловых компонент и переменных должны совпадать. Если будет сделана попытка чтения несуществующих компонент, то произойдет ошибочное завершение программы. Смещение указателя файла: Seek(f, n);Процедура смещает указатель файла f на n-ную позицию. Нумерация в файле начинается с 0. Определение количества компонент: FileSize(f): longint;Функция возвращает количество компонент в файле f. Определение позиции указателя: FilePos(f): longint;Функция возвращает порядковый номер текущего компонента файла f. Отсечение последних компонент файла: Truncate(f);Процедура отсекает конец файла, начиная с текущей позиции включительно.

Текстовый файл

Это совокупность строк, разделенных метками конца строки. Сам файл заканчивается меткой конца файла. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Одновременная запись и чтение запрещены. Чтение из текстового файла: Read(f, список переменных);ReadLn(f, список переменных);

Процедуры читают информацию из файла f в переменные. Способ чтения зависит от типа переменных, стоящих в списке. В переменную char помещаются символы из файла. В числовую переменную: пропускаются символы-разделители, начальные пробелы и считывается значение числа до появления следующего разделителя. В переменную типа string помещается количество символов, равное длине строки, но только в том случае, если раньше не встретились символы конца строки или конца файла. Отличие ReadLn от Read в том, что в нем после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки. Если список переменных отсутствует, то процедура ReadLn(f) пропускает строку при чтении текстового файла. Запись в текстовый файл: Write(f, список переменных);WriteLn(f, список переменных);Процедуры записывают информацию в текстовый файл. Способ записи зависит от типа переменных в списке (как и при выводе на экран). Учитывается формат вывода. WriteLn от Write отличается тем, что после записи всех значений из переменных записывает еще и метку конца строки (формируется законченная строка файла).

Процедуры и функции

Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок. Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими. Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур. Формат описания процедуры имеет вид: procedure имя процедуры (формальные параметры);раздел описаний процедуры begin исполняемая часть процедуры end; Формат описания функции: function имя функции (формальные параметры):тип результата; раздел описаний функции begin исполняемая часть функции end; Формальные параметры в заголовке процедур и функций записываются в виде: var имя праметра: имя типа и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать. Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.  Вызов процедуры производится оператором, имеющим следующий формат: имя  процедуры(список фактических параметров);При вызове фактические параметры как бы подставляются вместо формальных, стоящих на тех же местах в заголовке. Таким образом происходит передача входных параметров, затем выполняются операторы исполняемой части процедуры, после чего происходит возврат в вызывающий блок. Передача выходных параметров происходит непосредственно во время работы исполняемой части. Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду: имя функции := результат;Имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее. пример var x,y,m,n: integer;procedure MaxNumber(a,b: integer; var max: integer);beginifa>bthenmax:=aelse max:=b;end;beginwrite('Введите x,y ');readln(x,y);MaxNumber(x,y,m); MaxNumber(2,x+y,n);writeln('m=',m,'n=',n);end.С использованием функций function MaxNumber(a,b: integer): integer; var max: integer; begin if a>b then max:=a else max:=b;MaxNumber := max;end;begin write('Введитеx,y');readln(x,y);m := MaxNumber(x,y); n := MaxNumber(2,x+y);writeln('m=',m,'n=',n);end.

Передача параметров

Передача параметров может производиться двумя способами-по значению и по ссылке.Параметры, передаваемые по значению,называют параметрами-значениями, передаваемые по ссылке- параметрами-переменными. Последние отличаются тем, что в заголовке процедуры перед ними ставится служебное слово var. При первом способе значения фактических параметров копируются в соответствующие формальные параметры. При изменении этих значений в ходе выполнения процедуры исходные данные измениться не могут.При втором способе все изменения, происходящие в теле процедуры с формальными параметрами, приводят к немедленным аналогичным изменениям соответствующих им фактических параметров. Изменения происходят с переменными вызывающего блока, поэтому по ссылке передаются выходные параметры. При вызове соответствующие им фактические параметры могут быть только переменными. Входные параметры нужно передавать по значению, а выходные - по ссылке. Практически это сводится к расстановке в заголовке процедуры описателя var при всех параметрах, которые обозначают результат работы подпрограммы.Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой подпрограмме.Они задаются в заголовке подпрограммы в виде списка формальных параметров, разбитого на группы, разделенные точками с запятыми. В группу формальных параметров включаются однотипные параметры одной категории.Все формальные параметры можно разбить на четыре категории:параметры-значения;параметры-переменные;параметры-константы;параметры-процедуры и параметры-функции.Для каждого формального параметра следует указать имя и тип, а в случае параметра-переменной или параметра-константы-его категорию.Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. При обращении к подпрограмме формальные параметры заменяются на соответствующие фактические вызывающей программы или подпрограммы.

Назначение модулей

Модули инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования.Важная особенность модулей заключается в том, что компилятор размещает их программный код в отдельном сегменте памяти. Длина сегмента не может превышать 64 Кбайт, однако количество одновременно используемых модулей ограничивается лишь доступной памятью, что позволяет создавать большие программы. Структура модулей ПаскаляUnit <имя_модуля>; interface <интерфейсная часть>; implementation < исполняемая часть >; begin  <инициирующая часть>; end.UNIT–зарезервированное слово; INTERFACE–зарезервированное слово;начинает интерфейсную часть модуля;IMPLEMENTATION– зарезервированное слово;BEGIN – зарезервированное слово; начинает инициирующую часть модуля; причем конструкция begin <инициирующая часть> необязательна; END – зарезервированное слово – признак конца модуля. Заголовок модуля Паскаля состоит из зарезервированного слова unit и следующего за ним имени модуля. Для правильной работы среды Турбо Паскаля и возможности подключения средств, облегчающих разработку больших программ, имя модуля Паскаля должно совпадать с именем дискового файла, в который помещается исходный текст модуля.Связи с другими модулями и основной программой устанавливается специальным предложением: uses<список модулей> Интерфейсная часть открывается зарезервированным словом  INTERFACE . В этой части содержатся объявления всех глобальных объектов модуля, которые должны быть доступны основной программе и другим модулям Паскаля. При объявлении глобальных подпрограмм в интерфейсной части указывается только их заголовок, например: Пример фрагмента программы Unit complexn; Interface Type Complex= record Re, im: real; End; Procedure AddC(x,y: complex, var z: complex);Procedure MulC (x,y: complex, var z: complex); Объявление подпрограмм в интерфейсной части автоматически сопровождается их компиляцией с использованием дальней модели памяти. Максимальная длина сегмента даных 65536 байт. Порядок появления различных разделов объявлений и их количество может быть произвольным. Исполняемая часть модуля Паскаля начинается зарезервированным словом  IMPLEMENTATION и содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и блоки, а также метки.Локальная переменная - переменная, объявленная внутри какой-либо функции. Областью видимости локальных переменных является тело функции, в которой эта переменная объявлена. Локальная переменная может быть проинициализирована константой или выражением, соответствующими ее типу.Глобальная переменная - переменная, объявленная за пределами всех функций. Областью видимости глобальных переменных является вся программа. Глобальная переменная не локализована ни на каком уровне. Глобальная переменная может быть проинициализирована только соответствующей ее типу константой. Инициализация глобальных переменных производится однократно перед началом исполнения специальных функций.

Методы сортировки массивов

Сортировкой или упорядочением массива называется расположение его элементов по возрастанию(убыванию).Если не все элементы различны, то надо говорить о неубывающем (невозрастающем) порядке. Метод "пузырька"Элементы с большим значением всплывают вверх. При первом проходе вдоль массива, начиная проход "снизу", берется первый элемент и поочередно сравнивается с последующими. При этом:

если встречается более "легкий" (с меньшим значением) элемент, то они меняются местами;при встрече с более "тяжелым" элементом, последний становится "эталоном" для сравнения, и все следующие сравниваются с ним .В результате наибольший элемент оказывается в самом верху массива.Во время второго прохода вдоль массива находится второй по величине элемент, который помещается под элементом, найденным при первом проходе, т.е на вторую сверху позицию, и т.д.Сортировка вставкамиНа j-ом этапе мы "вставляем" j-ый элемент M[j] в нужную позицию среди элементов  M[1], M[2],. . ., M[j-1], которые уже упорядочены. После этой вставки первые j элементов массива M будут упорядочены.

 Сортировка посредством выбораНа j-ом этапе выбирается элемент наименьший среди M[j], M[j+1],. . ., M[N] и меняется местами с элементом M[j]. В результате после j-го этапа все элементы M[j], M[j+1],. . ., M[N]будут упорядочены.

Алгоритмы поиска

Задачи поиска элемента, обладающего заданными свойствами, достаточно часто приходится решать применительно к массивам.Если массив не отсортирован, то поиск неэффективен. Вообще, с развитием информационных и информационно-поисковых систем рационализация алгоритмов поиска является актуальной задачей. Функция i n_array() проверяет, присутствует ли в массиве заданный элемент. Если поиск окажется удачным, функция возвращает TRUE, в противном случае возвращается FALSE.Алгоритм поиска строки в подстроке. Обозначеное S - слово, в котором ищется образец X. Пусть m и n - длины слов S и X соответственно. Можно сравнить со словом X все подслова S, которые начинаются с позиций 1,2,...,m-n+1 в слове S; в случае равенства выводится соответствующая позиция.В слове A, длина которого равна m, ищется образец X длины n. Вырежем "окошечко" размером n оно двигается по входному слову. Совпадает ли слово в "окошечке" с заданным образцом? Фиксируется некоторая числовая функция на словах длины n, тогда задача сводится к сравнению чисел, что, несомненно, быстрее. Если значения этой функции на слове в "окошечке" и на образце различны, то совпадения нет. Только если значения одинаковы, необходимо проверять последовательно совпадение по буквам.Этот алгоритм выполняет линейный проход по строке (n шагов) и линейный проход по всему тексту (m шагов), стало быть, общее время работы есть O(n+m). При этом не учитывается временная сложность вычисления хеш-функции, так как, суть алгоритма в том и заключается, чтобы данная функция была настолько легко вычисляемой, что ее работа не влияла на общую работу алгоритма.




1. На тему- Становление и развитие Экономической Теории Выполнил- студент 1го курса гр
2. Реферат- Адаптация
3. Українська культура Архітектура Росії XVIII-XIX століття
4. .Генри Кавендиш родился в Ницце в 1731 году
5. ДДПУ ПІДСУМКИ ПЕДАГОГІЧНОЇ ПРАКТИКИ Студентка курсу групи факультету .
6. Первая война России c Францией в эпоху Наполеона (1799 1800 г
7. Индивидуализация в процессе воспитания старшеклассников.html
8. внеклассная работа по русскому языку.html
9. Тема- Расчёт основных параметров активной виброизоляции Исполнитель студент 4 курса группы 2
10. олеум тобто розчин SO3 в H2SO4
11. темах УЧЕТ УСТАВНОГО КАПИТАЛА ФОРМИРОВАНИЕ БУХГАЛТЕРСКОГО БАЛАНСА ПОЯСНИТЕЛЬНАЯ ЗА
12. Строковый тип данных в языке Pascal
13. ТЕМА 3 ПРОГРАММНЫЕ СРЕДСТВА РЕАЛИЗАЦИИ ИНФОРМАЦИОННЫХ ПРОЦЕССОВ
14. Тема- Этапы развития экономической теорииТермин экономика впервые упомянут в сочинении
15. тема Залози внутрішньої секреціїРозділ- Біологія Ендокринна система
16. тематизация и реализация знаний полученных при изучении общепрофессиональных и специальных дисциплин в усл
17. група островів Егейського моря які знаходяться біля берегів Малої Азії
18. Динамический расчет автомобиля ГАЗ-3302
19. РЕФЕРАТ НА ТЕМУ- ldquo;Етіологія та клінічні прояви холериrdquo; Холера choler особливо небезпечна
20. Наиболее часто используемой функцией коммутационного программного обеспечения является функция перед