파스칼-세트

집합은 동일한 유형의 요소 모음입니다. 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에서 지원하는 모든 집합 연산자를 보여줍니다. 그것을 가정S1S2 두 개의 문자 세트입니다.

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]