파스칼-세트
집합은 동일한 유형의 요소 모음입니다. Pascal은 세트 데이터 유형을 정의 할 수 있습니다. 집합의 요소를 구성원이라고합니다. 수학에서 집합은 중괄호 {} 안에 멤버를 묶어 표시합니다 . 그러나 파스칼에서 집합 요소는 집합 생성자라고하는 대괄호 []로 묶여 있습니다.
집합 유형 및 변수 정의
파스칼 세트 유형은 다음과 같이 정의됩니다.
type
set-identifier = set of base type;
집합 유형의 변수는 다음과 같이 정의됩니다.
var
s1, s2, ...: set-identifier;
또는,
s1, s2...: set of base type;
유효한 집합 유형 선언의 예는 다음과 같습니다.
type
Days = (mon, tue, wed, thu, fri, sat, sun);
Letters = set of char;
DaySet = set of days;
Alphabets = set of 'A' .. 'Z';
studentAge = set of 13..20;
집합 연산자
파스칼 세트에서 다음과 같은 세트 작업을 수행 할 수 있습니다.
Sr. 아니요 | 운영 및 설명 |
---|---|
1 |
Union 이것은 두 세트를 결합하고 두 세트의 구성원으로 새 세트를 제공합니다. |
2 |
Difference 두 세트의 차이를 가져오고 두 세트에 공통되지 않는 요소가있는 새 세트를 제공합니다. |
삼 |
Intersection 두 세트의 교차점을 가져오고 두 세트에 공통된 요소가있는 새 세트를 제공합니다. |
4 |
Inclusion P의 모든 항목이 Q에도 있지만 그 반대가 아닌 경우 세트 P는 세트 Q에 포함됩니다. |
5 |
Symmetric difference 두 세트의 대칭 차이를 가져오고 교차가 아닌 세트 중 하나에있는 요소 세트를 제공합니다. |
6 |
In 회원을 확인합니다. |
다음 표는 Free Pascal에서 지원하는 모든 집합 연산자를 보여줍니다. 그것을 가정S1 과 S2 두 개의 문자 세트입니다.
S1 : = [ 'a', 'b', 'c'];
S2 : = [ 'c', 'd', 'e'];
운영자 | 기술 | 예 |
---|---|---|
+ | 두 세트의 조합 | S1 + S2는 세트를 줄 것입니다 ['에이 비 씨 디이'] |
- | 2 개 세트의 차이 | S1-S2는 세트를 줄 것입니다 [ 'a', 'b'] |
* | 두 세트의 교차점 | S1 * S2는 세트를 줄 것입니다 ['씨'] |
> < | 두 세트의 대칭 차이 | S1> <S2는 세트 [ 'a', 'b', 'd', 'e']를 제공합니다. |
= | 두 세트의 동일성을 확인합니다. | S1 = S2는 부울 값 False를 제공합니다. |
<> | 두 세트가 같지 않은지 확인합니다. | S1 <> S2는 부울 값 True를 제공합니다. |
<= | 포함 (한 세트가 다른 세트의 서브 세트인지 확인) | S1 <= S2는 부울 값 False를 제공합니다. |
포함 | 세트에 요소를 포함합니다. 기본적으로 동일한 기본 유형의 집합과 요소의 결합입니다. | 포함 (S1, [ 'd'])은 세트를 제공합니다. [ 'a', 'b', 'c', 'd'] |
들어오지 못하게 하다 | 집합에서 요소를 제외합니다. 기본적으로 동일한 기본 유형의 집합과 요소의 차이입니다. | 제외 (S2, [ 'd'])는 세트를 제공합니다. [ 'c', 'e'] |
에 | 집합에있는 요소의 집합 구성원을 확인합니다. | S2의 [ 'e']는 부울 값 True를 제공합니다. |
예
다음 예제는 이러한 연산자의 사용을 보여줍니다-
program setColors;
type
color = (red, blue, yellow, green, white, black, orange);
colors = set of color;
procedure displayColors(c : colors);
const
names : array [color] of String[7]
= ('red', 'blue', 'yellow', 'green', 'white', 'black', 'orange');
var
cl : color;
s : String;
begin
s:= ' ';
for cl:=red to orange do
if cl in c then
begin
if (s<>' ') then s :=s +' , ';
s:=s+names[cl];
end;
writeln('[',s,']');
end;
var
c : colors;
begin
c:= [red, blue, yellow, green, white, black, orange];
displayColors(c);
c:=[red, blue]+[yellow, green];
displayColors(c);
c:=[red, blue, yellow, green, white, black, orange] - [green, white];
displayColors(c);
c:= [red, blue, yellow, green, white, black, orange]*[green, white];
displayColors(c);
c:= [red, blue, yellow, green]><[yellow, green, white, black];
displayColors(c);
end.
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
[ red , blue , yellow , green , white , black , orange]
[ red , blue , yellow , green]
[ red , blue , yellow , black , orange]
[ green , white]
[ red , blue , white , black]