Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мои ответы.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.91 Mб
Скачать
  1. Основные типы и структуры данных

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

Тип данных определяет:

  • Формат представления в памяти компьютера

  • Множество допустимых значений, которые может принимать принадлежащая к выбранному типу переменная или константа

  • Множество допустимых операций, применимых к этому типу.

Основные типы данных в BP (Borland pascal):

    • Простые типы

  • Целочисленные типы

  • Логический тип

  • Символьный тип

  • Перечисляемый тип

  • Интервальный тип

  • Вещественный тип

    • Структурированные типы

    • Массив

    • Множество

    • Запись

Целочисленные

В Borland Pascal имеется пять предопределенных целочисленных типов: Shortint, Integer, Longint, Byte и Word. Каждый тип обозначает определенное подмножество целых чисел.

Тип Диапазон Формат

ShortInt -128...127 1 байт со знаком

Integer -32768...32767 2 байта со знаком

LongInt -2147483648...214748367 4 байта со знаком

Byte 0...255 1 байт без знака

Word 0...65535 2 байта без знака

Логический

Существует 4 предопределенных логических (булевских) типа: Boolean, ByteBool, WordBool и LongBool. Значения булевского типа обозначаются встроенными идентификаторами констант False и True. Логические переменные могут использоваться для хранения результатов каких - либо логических вычислений. Для булевых переменных разрешены только 2 операции сравнения "="(равно) и "<>"(неравно).

Символьный

Множеством значений этого типа являются символы, упорядоченные в соответствии с расширенным набором символов кода ASCII. Это буквы ['A'...'Z', 'a'...'z'], цифры ['0'...'9'], знаки препинания и специальные символы. Переменная типа Char в памяти занимает один байт.

Перечисляемый

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

Program Week;

Type

Week = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Var

Day: Week;

Begin

Day:=Thursday;

If (Day = Sunday) Or (Day = Saturday) then

Writeln('Выходной')

Else

Writeln('Рабочий день');

End.

Интервальный

Интервальный тип представляет собой диапазон значений из порядкового типа. Определение интервального типа включает наименьшее и наибольшее значение в поддиапазоне.

const

X = 50;

Y = 10;

Type

Interval = 0 ... 1000;

Scale = 2 * (X - Y)..(X + Y);

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

Вещественный

К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей точкой с фиксированным числом цифр. Имеется пять видов вещественных типов: вещественное (Real), с одинарной точностью (Single), с двойной точностью (Double), с повышенной точностью (Extended) и сложное (Comp):

Тип Допустимые значения Точность Формат

Real 2.9*10^-39...1.7*10^+38 11-12 знаков 6 байт

Single 1.5*10^-45...3.4*10^+38 7-8 знаков 4 байта

Double 5.0*10^-324...1.7*10^+308 15-16 знаков 8 байт

Extended 3,4*10^-4932...1.1*10^4932 19-20 знаков 10 байт

Comp -9,2*10^+18...9.2*10^18 19-20 знаков 8 байт

Массив - это фиксированное количество элементов данных, которые хранятся последовательно и доступны по индексу.

Пример:

Type

Arr1= array[1..100] of Real;

Arr2 = array[boolean,1..10,Size] of Real;

Arr3 = array[1..10,1..8] of Boolean;

К i-му элементу массива a, идет обращение как к a[i].

На совести программиста остается обязанность побеспокоиться о том, чтобы перед первым чтением любого элемента массива в нем находилось что-либо имеющее смысл. Процесс предварительного предания переменным "значащего" значения называется инициализацией. Пренебрежение инициализацией является наиболее распространенной ошибкой при написании программ. Размер массива должен быть известен заранее. Массивы относят к одним из фундаментальных структур данных еще и потому, что существует прямое соответствие между массивами и памятью на практически всех типах компьютеров. Для получения содержимого из памяти компьютера мы должны знать адрес. Таким образом можно думать о памяти компьютера как о массиве, с адресами соответствующими индексам. Большинство языков программирования преобразуют программы в высокоэффективные программы в машинных кодах которые используют память напрямую.

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

Массивы также являются прямым прообразом векторов. Аналогично, двухмерные массивы соответствуют матрицам.

Множество - это набор элементов базового типа.

Переменная множественного типа может принимать как все значения множества, так и ни одного. Любой множественный тип может принимать значение [], которое называется пустым множеством.

Пример:

type

Digits = set of 0..9;

Letters = set of 'A'..'Z';

Если наименьшим порядковым значением, которое является членом результата операций над множествами, является a, а наибольшим - b, то типом результата будет множество a..b.

Операция Действие Результат

+ Объединение Порядковое значение c содержится в a+b только тогда, когда оно содержится в a или в b.

- Разность Порядковое значение c содержится в a-b только тогда, когда оно содержится в a и не содержится в b.

* Пересечение Порядковое значение c содержится в a*b только тогда, когда он содержится в обоих множествах a и b

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

Пример:

Type

Date = record

Dd: 1..31;

Mm: 1..12;

Yy: integer;

End;

Var

D: date;

d.yy=1999;

d.mm:=06;

d.dd:=14;