Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

 

Тип это множество значений, которые может принимать переменная, выражение или функция.

Стандартными простыми типами данных языка ПАСКАЛЬ являются:

· INTEGER - целый тип;

· REAL – вещественный;

· BOOLEAN – логический;

· CHAR – символьный.

Типы INTEGER и REAL имеют несколько разновидностей, например, WORD (слово) или DOUBLE (двойная точность).

Стандартными операциями для типа INTEGER являются ‘+’, ‘-‘, ‘*’, DIV (деление нацело), MOD (деление по модулю); получаемые значения точные.

Стандартными операциями для типа REAL являются ‘+’, ‘-‘, ‘*’, ‘/’; получаемые значения приближенные.

Для типа Boolean определены логические операции OR, AND, NOT, XOR; возможные значения TRUE (истина) и FALSE (ложь). Данный тип имеют выражения с операциями сравнений, например, X=Y или (A<5) OR (A>7).

Для типа CHAR определены операции сравнений. Например, логическое выражение (X>=’A’) AND (X<=’z’), где переменная X имеет тип CHAR, истинно в том случае, когда значением переменной X является латинская буква.

Широко применяются функции преобразования типов INTEGER и CHAR друг в друга. Функция Ord(С) дает порядковый номер или код символа С (целое число в диапазоне от 0 до 255), а функция Chr(I) возвращает символ, имеющий код I.

Примеры:

· Ord (Chr (I)) имеет значение I;

· Chr (Ord(C)) имеет значение С;

· Chr (7+Ord (‘0’)) равно ‘7’.

Последний пример объясняется тем, что цифры имеют последовательные коды.

Перечислимый тип данных описывается в виде T=(C1, C2,…,Cn), где C1, C2,…,Cn дают список возможных значений. Например, возможно описание

Type Season=(Winter, Spring, Summer, Autumn);

Применение перечислимого типа сдерживается отсутствием средств ввода-вывода переменных этого типа.

Ограниченный (интервальный) тип задает диапазон возможных значений в виде T=MIN..MAX. Например, переменные типа Letter=’A’..’z’ могут принимать значения прописных и строчных букв латинского алфавита.

Фундаментальными структурами данных являются:

· ARRAY - массив;

· STRING – строка;

· RECORD – запись;

· SET – множество;

· FILE – файл;

· ^ - указатель.

Массив представляет собой множество однотипных компонент. Одномерный массив X можно описать в виде

Type A = array [MIN..MAX] of T;

Var X: A;

Здесь MIN и MAX – константы, определяющие наименьшее и наибольшее значения индекса. Отдельный элемент массива обозначается X[I], где I - индекс элемента, задающий его порядковый номер.

Двумерный массив описывается подобным образом, но имеет два индекса. В различных языках допускаются различные операции над массивами. В Паскале допустима операция присваивания X:=Y, где X и Y – одинаково описанные массивы. В языке Си подобная операция недопустима.

Строку можно считать частным случаем массива. Элементы этого массива – отдельные буквы, в нулевом элементе содержится фактическая длина строки. Строки могут сравниваться между собой. Например, строка ‘Абрамов’ меньше, чем строка ’Абросимов’.

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

 

Anketa=record

Name: string;

Age: integer;

Adres: string

end;

 

Множественный тип описывается как T = set of T1, где T1 является базовым типом в виде диапазона либо перечисления значений. Элементы множества не повторяются и не упорядочены. Например, переменные типа T=set of ‘0’..’9’ могут принимать значения любого набора цифровых символов. Если переменная X имеет тип T, то возможен оператор присваивания X:=[‘2’, ’4’, ’9’].

Отметим, что имеется 210 возможных значений переменной X. Действительно, элемент ‘0’ может как входить, так и не входить во множество. Элемент ‘1’ также может входить или не входить, то есть имеются 4 варианта присутствия элементов ‘0’ и ‘1’. При добавлении элемента ‘2’ окажется 8 вариантов присутствия этих трех элементов и т. д. Строгое доказательство можно было бы провести по индукции.

Операциями над множествами являются ‘*’- пересечение, ‘+’ - объединение, ‘-‘ - разность, IN – принадлежность одного элемента, ’<=’ и ‘>=’ – вложение одного множества в другое.

Множества представляются в памяти строками битов, каждая из которых имеет длину, равную количеству элементов базового типа. Если некоторый элемент базового типа присутствует, соответствующий бит устанавливается в 1. Так в результате приведенного выше оператора присваивания переменной X будет соответствовать строка ’0010100001’. Подобное представление экономит оперативную память и обеспечивает эффективность множественных операций, так как все указанные операции выполняются в виде логических операций над строками битов. Например, объединение множеств реализуется операцией OR над соответствующими строками битов.

Рассмотрим в качестве примера использования множеств следующую задачу. С клавиатуры компьютера поступает строка символов. Требуется выделить первое целое положительное число, заключенное между нецифровыми символами.

 

 

Program Test;

Uses Crt;

Var

Ch: char; { текущий символ }

Sum: integer; { результат }

R: set of ‘0’..’9’;

Begin

ClrScr; { очистка экрана}

R:=[‘0’..’9’]; { инициализация }

Sum:=0;

While not (Ch in R) do { сканирование нецифровых символов}

begin

Write(ch);

Ch:=ReadKey { новый символ }

end;

While Ch in R do { сканирование цифровых символов}

begin

Sum:=10*Sum+Ord(Ch) – Ord(‘0’); {формирование числа}

Write(Ch);

Ch:=ReadKey { новый символ }

end;

WriteLn(‘Sum=’, Sum);

ReadLn { пауза до нажатия Enter}

End.

 

Распространенной ошибкой является пропуск инициализации переменной множественного типа.

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

В ПАСКАЛе имеется понятие типизированного файла, тип которого описывается как T=file of T1. Сам файл задается файловой переменной типа T. В каждый момент доступна лишь одна компонента или запись файла, что определяется механизмом доступа.

Основными операциями над файлами являются:

· Rewrite – построение пустого файла;

· Write – запись очередной компоненты;

· Reset – открытие файла на чтение;

· Read – чтение в память очередной записи и продвижение к следующей;

· Seek – установка файла на заданный номер записи;

· Close – закрытие файла.

<== предыдущая лекция | следующая лекция ==>
Правового воспитания | Для записи в конец файла необходимо, чтобы была установлена ситуация Eof (логическая функция Eof возвращала TRUE). Чтение файла возможно при отсутствии ситуации Eof
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 688; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.024 сек.