Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kostin_1sem_Zachyot_Otvety.pdf
Скачиваний:
4
Добавлен:
16.04.2015
Размер:
280.45 Кб
Скачать

© Vogal, Green, NSG inc. 2009

Билет №13.

Структурированный (сложный) тип – тип, который строит новые типы на основе старых по средствам структуризации.

Структурные типы:

массив

запись

множество

файл

1)

Массивы [смотри билет №14]

2)

Запись

Представляет собой совокупность ограниченного числа логически связанных компонент, принадлежащих к разным типам. Компоненты записи называются полями, каждое из которых определяется именем. Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип этого поля. Поля записи могут относиться к любому типу, допустимому в языке Паскаль, за исключением файлового типа.

Описание записи в языке Паскаль осуществляется с помощью служебного слова RECORD, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом END.

Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи:

type TRec = Record FIO: String[20]; TEL: String[7] end;

var rec: TRec;

Записи отличаются от массивов тем, что , во-первых, к компонентам записи необходимо обращаться по имени, во-вторых, все компоненты записи необязательно должны принадлежать одному типу.

Обращение к записи в целом допускается только в опеpатоpах пpисваивания, где слева и спpава от знака пpисваивания используются имена записей одинакового типа. Во всех остальных случаях опеpиpуют отдельными полями записей. Чтобы обpатиться к отдельной компоненте записи, необходимо задать имя записи и чеpез точку указать имя нужного поля, напpимеp:

TRec.FIO

TRec.TEL

3) Множество Понятие множества в языке Паскаль основывается на математическом представлении о

конечных множествах: это ограниченная совокупность различных элементов. Для построения конкретного множественного типа используется перечисляемый или интервальный тип данных. Тип элементов, составляющих множество, называется базовым типом.

Множественный тип описывается с помощью служебных слов SET OF, например: type M = Set of B;

Здесь М - множественный тип, В - базовый тип. Пример описания переменной множественного типа:

type

M = Set of 'A'..'D';

var

MS: M;

Принадлежность переменных к множественному типу может быть определена прямо в разделе описания переменных:

var C: Set of 0..7; 4) Файл

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

© Vogal, Green, NSG inc. 2009

Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.

Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.

При работе с файлами выполняются операции ввода - вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл).

Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид:

'LAB1.DAT'

'c:\ABC150\pr.txt' 'my_files'

Типы файлов Турбо Паскаль Турбо Паскаль поддерживает три файловых типа:

текстовые файлы; типизированные файлы;

нетипизированные файлы.

Доступ к файлу в программе происходит с помощью переменных файлового типа. Переменную файлового типа описывают одним из трех способов:

file of <тип> - типизированный файл (указан тип компоненты);

text - текстовый файл;

file - нетипизированный файл.

Примеры описания файловых переменных: var

f1: file of char; f2: file of integer; f3: file;

t: text;

Билет №14.

Структурированный (сложный) тип – тип, который строит новые типы на основе старых по средствам структуризации.

Структурные типы:

массив

запись

множество

файл

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

Индекс массива — целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива.

Массив относится к статическим типам данных!

Структурная организация.

Общий вид

© Vogal, Green, NSG inc. 2009

Структура представляет собой фиксированное количество ячеек, которые имеют свои координаты - индексы. Индексация производится в порядке возрастания значений индексов. В каждой из ячеек располагается данное. Одна ячейка есть один элемент массива. Все данные, помещаемые в ячейки массива, одного типа (элементы массива однотипны). Количество ячеек (элементов массива) определяется количеством индексов, т.е. типом индекса, так как тип однозначно определяет множество значений.

Структурная организация данных типа массив.

Элементы массива располагаются в памяти подряд. Объем памяти определяется по формуле: количество ячеек массива умножить на объем памяти, занимаемый одним элементом. Объем памяти под элемент массива однозначно определяется типом элемента.

Множество операций

Не существует операций над массивами целиком (за исключением унарной операции определения адреса переменной типа массив). Можно выполнять операции только над элементами массива. Над элементами массива допустимы все операции, определенные для типа элемента.

Определение элемента массива

Пример:

Vector:array[1..10] of real;

Slovo:array[‘a’..’z’]of integer;

A:array[boolean] of inreger;

Массив называется многомерным, если его элементами являются данные типа массив. Пример:

X:array[1..3] of array[1..10] of real подобная запись равносильна следующий

X:array[1..3,1..10] of real;

A:array[1..3,’a’..’z’] of real

Билет №15.

Вычислительная сложность алгоритма - количество элементарных операций, затрачиваемых алгоритмом для решения конкретной задачи. Сложность зависит не только от размерности входных данных, но и от самих данных. Очевидно, что чем сложнее алгоритм в вычислительном плане, тем больше времени и вычислительных ресурсов потребует его выполнение.

© Vogal, Green, NSG inc. 2009

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

Различают временную и пространственную сложность. Первая определяет время, требуемое на решение задачи заданной размерности с помощью данного алгоритма, а вторая - количество требуемых ресурсов (памяти), при тех же условиях.

Каждый вычислительный алгоритм может быть отнесен к одному из двух классов сложности. В данном случае это множество задач, для решения которых известны алгоритмы, схожие по трудоемкости. В классе P вычислительные затраты линейно растут с увеличением размерности. Например, время, требуемое на уборку снега, прямо пропорционально площади. Если ее увеличить вдвое, то и временные затраты также возрастут в два раза. Класс NP включает задачи для решения которых известны только алгоритмы, сложность которых экспоненциально зависит от размерности данных. Поэтому они, как правило, неэффективны при работе с большими множествами. Примером является задача поиска выхода из лабиринта, временные затраты на который экспоненциально растут с увеличением числа разветвлений.

Примеры оценки сложности :

Время работы алгоритма, выполняющего только операции чтения и занесения n данных в оперативной памяти, определяется формулой t=an+b, где a – время чтения-записи, b – суммарное время вспомогательных операций. Здесь имеет место линейная зависимость от n, и сложность алгоритма поэтому называется линейной. Коэффициенты a и b неизвестны, но зависят от ЭВМ, транслятора и т.д. Поэтому интересен характер зависимости от основного параметра, говорят о теоретической сложности, учитывая ту функцию от основного параметра, которая определяет сложность. В данном случае это O(n).

Сортировка с помощью прямого обмена ("пузырьковая сортировка") n элементов массива представляет собой следующий процесс: определяется наименьший элемент во всем массиве и производится его обмен с первым элементом; затем определяется наименьший элемент в оставшейся части массива и производится его обмен со вторым элементом и т.д. Значит, всего выполняется n–1 сравнений при поиске первого элемента, n–2 сравнений при поиске второго элемента и т.д.

(n–1)+(n–2)+...+1=( n2 n)/2

Это полином второй степени (говорят, что сложность алгоритма полиномиальна, а в данном случае – квадратична). Для больших n можно считать, что сложность O( n2 ).

Если сложность алгоритма оценивается по уже написанной программе, то вместо числа сравнений вычисляется число повторений внутренних циклов

for k:=1 to n–1 do

begin min:=A [k];

for i:=k+1 to n do

if min>A[i] then min:=A[i]; A[i]:=A[k];

A[k]:=min;

end

Внешний цикл выполняется n–1 раз. Внутренний цикл при каждом повторении внешнего срабатывает в среднем (при равномерном разбросе величин) n/2 раз. Умножив, получаем ту же самую величину.

При больших значениях n за асимптотическую оценку можно взять n2 , т.е. сложность имеет порядок O( n2 ).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]