русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Множества


Дата добавления: 2013-12-23; просмотров: 662; Нарушение авторских прав


Записи с вариантами

Иногда содержимое отдельной записи зависит от значения одного из ее полей.

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

<идентификатор записи> : record case [<идентификатор поля>:]<тип поля> of <вариант выбора 1> : (<идентификатор поля> : <тип поля>); <вариант выбора1> : (<идентификатор поля> : <тип поля>); end; Type Figure = (Square, Triangle, Circle); Param = record x, y: integer; Case Fig: Figure of Square: (Side: real); Triangle: (Side1, Side2, Angle:real); Circle: (Radius: real); end;

Вариантная часть начинается словом Case, за которым следует переменная выбора варианта (в примере - Fig) с указанием типа. Эта переменная может быть любого перечисляемого типа. Далее указываются константы, значения которых может принимать переменная выбора варианта. За каждой константой через двоеточие в круглых скобках записываются поля данного варианта записи с указанием их типов. Круглые скобки необходимы, даже если для данного варианта вариантная часть отсутствует. Вариантная часть не завершается операторной скобкой end.

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

varFigures : array[1..100] of record X,Y : real; Vid : integer; case vid:integer of 1: (Side : real); {квадрат} 2: (Side1, Side2 : real){прямоугольник}; 3: (Radius : real); {Окружность} end;Count,i : integer; begin write('Введите количество фигур: '); readln(Count); for i := 1 to Count do with Figures[i] do begin write('Введите координаты и тип фигуры: '); readln(X,Y,Vid); case Vid of 1: begin write('Введите сторону квадрата: '); readln(Side); end; 2: begin write('Введите стороны прямоугольника: '); readln(Side1,Side2); end; 3: begin writeln('Введите радиус окружности'); readln(Radius); end; end; end; for i := 1 to Count do with Figures[i] do case Vid of 1: writeln(i,' - квадрат, S=: ',sqr(Side):0:2); 2: writeln(i,' - прямоугольник, S=: ',Side1*Side2:0:2); 3: writeln(i,' - окружность, S=: ',Pi*sqr(Radius):0:2); end;end.

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



Program p;type student = record FIO : string; ball: array[1..5] of byte; srball:real; end;var group:array[1..100] of student; max:real; i,j,n,k:integer;begin
writeln('input n'); readln(n);
for i:=1 to n do
with group[i] do begin
write('fio='); readln(fio);
for j:=1 to 5 do begin
write('ball ',j,'='); readln(ball[j]);
srball:=srball+ball[j]
end;
srball:=srball/5;
end;
for i:=1 to n do
with group[i] do begin
writeln('fio=',fio);
for j:=1 to 5 do
writeln('ball ',j,'=',ball[j]);
writeln('srball=',srball);
end;
max:=group[1]. srball;
for i:=2 to n do
with group[i] do
if srball>max then begin
max:=srball; k:=i;
end;
writeln('dannie o studente c max srball');
with group[k] do begin
writeln('fio=',fio);
for j:=1 to 5 do
writeln('ball',j,'=',ball[j]);
writeln('srball=',srball);
end; end.

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

<идентификатор> = set of <начало> .. <окончание><идентификатор> = set of (<элемент1> [,<элемент2> ...])<идентификатор> = set of <порядковый тип> // количество элементов <= 256

Элементы, описываемый <начало>, <окончание> должны быть поряд­кового типа. Количество элементов множества не может превышать 256.

Множества часто используются для проверок установки тех или иных флагов объектов.

Операции с множествами: • + - сложение; результат содержит элементы первого множества, дополнен­ные недостающими элементами второго множества;

— вычитание; результат содержит элементы из первого множества, которые не принадлежат второму;

* - пересечение; результат содержит элементы, общие для обоих множеств;

= - проверка эквивалентности; возвращается True, если множества эквива­лентны;

<> - проверка неэквивалентности; возвращается True, если множества неэк­вивалентны;

<= - проверка вхождения; возвращается True, если первое множество вклю­чено во второе;

>= - проверка вхождения; возвращается True, если второе множество вклю­чено в первое;

in - проверка принадлежности; возвращается True, если элемент входит в множество;

include(s,i) - включает новый элемент i в множество v;

exclude(s,i) - исключает элемент i из множество V.

Процедуры include и exclude отличаются высокой скоростью выполне­ния, т.к. оптимизированы на работу с одиночными элементами.

Рассмотрим на примере операции работы с множествами. Пример (выполнение действий с множествами):

var s1,s2,s3,s : set of 0..9; f : boolean; begin s1 := [0..3,6]; {Пример присвоения} s2 := [4,5]; s3 := [3..9]; s := s1+s2; {s = [0..6] - сложение} s := s2+s3; {s = [3..9] - отброс дублирования} s := s1*s3; {s = [3,6] - пересечение} s := s3-s2; {s = [3,6..9] - вычитание} f := s1=s2; {f = False} f := s1<>s2; {f = True} f := s2<=s3; {f = True} f := s1>=s3; {f = False} f := 4 in s1; {f = False} include(s1,4); {s1 = [0..4,6]} exclude(s1,2); {s1 = [0..1,3..4,6]} end.

 



<== предыдущая лекция | следующая лекция ==>
Иерархические записи | Физическая структура


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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