Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Множества




Записи

END

Система тестов

Номер теста Проверяемый случай Данные Результат
  При просмотре линейной записи слева направо первой встречается закрывающая скобка ''a)b+1('' ''Нет баланса''
  Первой встречается открывающая скобка, но число открывающих и закрывающих скобок не совпадает ''(a+b))'' ''Нет баланса''
  Есть баланс скобок ''(a+b/(c*d))'' ''Есть баланс''
Program Balance; Uses Crt; Var S: String; Dlina, Flag, i: Integer;BEGIN ClrScr; GotoXY(15, 5); Write('Введите линейную запись математической формулы:'); GotoXY(32,7); ReadLn(S); i:=1; Flag:=0; Dlina:=Length(S); While (Flag>=0) and (i<=Dlina) do begin If S[i] = '(' then Flag:=Flag + 1; If S[i] = ')' then Flag:=Flag - 1; i:=i+1 end; GotoXY(32, 9); WriteLn('О т в е т'); GotoXY(15,11); If Flag=0 then Write('Есть баланс ') else Write('Нет баланса '); WriteLn('открывающих и закрывающих скобок'); ReadLn

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

Запись - это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов, называемых полями записи. Определение типа записи начинается идентификатором Record и заканчивается зарезервированным словом end. Между ними заключен список компонентов, называемых полями, с указанием имен полей и типа каждого поля. Структура объявления типа записи такова:

Type <имя типа> = Record

<имя поля1>: <тип компонентов>;

<имя поляN>: <тип компонентов>;

End;

VAR <имя переменной>: <имя типа>;

Пример описания записи:

Type Car=Record

Number:Integer;

Marka:String[20];

FIO:String[40];

Address:String[60];

End;

Var Mashina, Mash: Car;

В данном примере была объявлена запись с именем Car, у которой имеется 4 поля: номер, название марки машины, ФИО владельца и его адрес.

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

Например, доступ к полям записи Car осуществляется как: Mashina.Marka, Mashina.FIO, Mashina.Number. Составное имя можно использовать везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор присваивания, например:

Mashina. Number:=1645365;

Mashina.Marka:=’Volvo’;

Mashina.FIO:=’Иванов И.И.’;

Mashina. Address:=’ул.Пушкина 12-30’;

Составные имена можно использовать в операторах ввода-вывода:

Read (Mashina. Number, Mashina. FIO, Mashina. Address);

Write(Mashina. Number:4, Mashina. FIO:12, Mashina. Address:25);

Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип. Например, Mash:=Mashina;

После выполнения этого оператора значения полей записи Mash станут равны значениям соответствующих полей записи Mashina.

В ряде задач удобно пользоваться массивами из записей. Их можно описать следующим образом:

Type Car=Record

Number:Integer;

Marka:String[20];

FIO:String[40];

Address:String[60];

End;

Var Mashins: array [1..20] of Car;

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

With <переменная типа запись> do <оператор>;

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

With Mashina do

Begin

Number:=164536l;

Marka:=’Volvo’;;

FIO:=’Иванов И.И’;

Address:=’ул.Пушкина 12-30’;

End;

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

Все элементы множества должны принадлежать одному из скалярных типов, кромевещественного. Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечислением. Область значений типа множество – набор всевозможных подмножеств, составленных из элементов базового типа. В выражениях на языке Паскаль значения элементов множества указываются в квадратных скобках:[1,2,3,4], [‘a’,’b’,’c’], [‘a’..’z’]. Если множество не имеет элементов, оно называется пустым и обозначается, как [ ]. Количество элементов множества называется его мощностью.

Формат записи множественных типов:

Type <имя типа> = set of <элемент 1,…., элементN>;

Var <идентификатор, ….>: <имя типа>;

Можно задать множественный тип и без предварительного описания:

Var <идентификатор, …>: set of <элемент1, …>;

Пример:

Type Simply = set of ‘a’..’h’;

Number = set of 1..31;

Let = set of (‘a’,’e’,’i’,’o’,’u’,’y’);

Var Pr: Simply;

N: Number;

L: Let;

Letter: set of char; {определение мн-ва без предварительного описания в разделе типов}

В данном примере переменная Pr может принимать значения символов латинского алфавита от ‘a’ до ‘h’; N – любое значение в диапазоне 1..31; L – один из символов перечисленного множества; Letter – любой символ. Попытка присвоить другие значения вызовет программное прерывание.

Количество элементов множества не должно превышать 256, соответственно номера значений базового типа должны находиться в диапазоне 0..255. Контроль диапазонов осуществляется включением директивы {$R+}. Объем памяти, занимаемый одним элементом множества, составляет 1 бит.

Объем памяти для переменной типа множество вычисляется по формуле:

Объем памяти = (Max DIV 8) – (Min DIV 8) + 1, где Max и Min – верхняя и нижняя границы базового типа.




Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 376; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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