Скачиваний:
61
Добавлен:
15.06.2014
Размер:
1.18 Mб
Скачать

Var a,b,c:tComp;

Begin

a.re:=StrtoFloat(Edit1.text);

  1. im:=StrtoFloat(Edit2.text);

  2. re:=StrtoFloat(Edit3.text); b.im:=StrtoFloat(Edit4.text);

// Вычисление заданного комплексного выраженияc:=MulC(AddC(a,b),a);

// Вывод результата Memo1.Lines.Add('c.re='+FloattoStr(c.re)+' c.im='+FloattoStr(c.im)); End;

13. Работа со множествами

Множество представляет собой набор однотипных элементов, при этом ни один элемент множества не может входить в него дважды и порядок расположения элементов в множестве не имеет никакого значения. В Delphi размер множества не может превышать 256 значений, т.е. множество занимает в памяти компьютера всего 256/8=32 байта.

Множество определяется ключевым словом Set, за которым определяется тип элементов множества. Например, в разделе типов можно записать:Type TLatChar=Set of 'A'..'z'; // Множество латинских буквTSimv=Set of Char; // Множество любых символов

TColor=Set of (Red,Blue,Green,White,Black); // Множество цветов перечисляемого типа Теперь можно определить сами множества и проделать некоторые операции над ними:

Var l1,l2:tLatChar; s1,s2:tSimv; c1,c2:tColor;

Begin

L1:=['A','B','C']; // Множество из трех латинских буквL2:=['a'..'z']; // Множество строчных латинских букв

S1:=['z','ф'];// Множество из двух символов

S2:=[]; // Пустое множество

C1:=[Red]; // Множество из одного значенияRed

C2:=[Green]; // Множество из одного значенияGreen

C2:=C1+C2; // Множество уже из двух значений

Над множествами можно выполнять операции сложения «+» (объединения множеств), вычитания «-» (исключения из множества), умножения множеств «*» (пересечение множеств) и вхождения во множество «in». Кроме этого, можно использовать процедуры:

Include(S,i) - добавление элементаi во множествоS, Exclude(S,i) - исключение элементаi из множестваS. Над множествами можно выполнять операции сравнения, например:S1=S2 будет равноTrue, если множества одинаковы;S1<>S2 будет равноTrue, если множества различаются хоть немного;S1>=S2 будет равноTrue, еслиS2 является подмножествомS1; 'z' in S1 будет равноTrue, если элемент'z' принадлежитS1. Рассмотрим пример работы со множествами. Допустим, что на форме находится компонентMemo1 и нам нужно, чтобы при нажатии на клавиатуре клавиши с латинскими буквами звучал сигнал одной частоты, с русскими буквами - другой частоты и с цифрами - третьей частоты. Для этого объявим глобальный тип множества символов и переменные этого типа в интерфейсной секции модуляUnit так:

Type Tc=Set of Char; Var CL,CR,C0:Tc;

В обработчике события создания формы определим множества латинских, русских и цифровых символов следующим образом: Procedure Tform1.FormCreate(Sender:TObject); Begin

CL:=['A'..'z']; CR:=['А'..'я']; С0:=['0' '9'];

End;

Обработчик события нажатия любой клавиши для компонента Memo1 будет выглядеть так:

Procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);

Begin

If key in cl then windows.Beep(1000,100); if key in cr then windows.Beep(2000,100); if key in c0 then windows.Beep(4000,100); end;

Здесь через параметр Key передается в процедуру код нажатой клавиши. Если это клавиша с латинским символом, то подается звуковой сигнал частотой 1000 Гц и длительностью 100 миллисекунд. Для русских букв этот сигнал будет с частотой 2000 Гц, а для цифр - 4000 Гц.