Pascal - ชุด
ชุดคือชุดขององค์ประกอบประเภทเดียวกัน 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;
ตั้งค่าตัวดำเนินการ
คุณสามารถดำเนินการชุดต่อไปนี้บนชุดปาสกาล
ซีเนียร์ No | การดำเนินงานและคำอธิบาย |
---|---|
1 | Union สิ่งนี้รวมสองชุดและให้ชุดใหม่กับสมาชิกจากทั้งสองชุด |
2 | Difference รับความแตกต่างของสองชุดและให้ชุดใหม่ที่มีองค์ประกอบที่ไม่เหมือนกันสำหรับชุดใดชุดหนึ่ง |
3 | 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 จะให้ชุด ['a', 'b', 'c', 'd', 'e'] |
- | ความแตกต่างของสองชุด | S1 - S2 จะให้ชุด ['a', 'b'] |
* | จุดตัดของสองชุด | S1 * S2 จะให้ชุด ['ค'] |
> < | ความแตกต่างแบบสมมาตรของสองชุด | S1> <S2 จะให้ชุด ['a', 'b', 'd', 'e'] |
= | ตรวจสอบความเท่าเทียมกันของสองชุด | S1 = S2 จะให้ค่าบูลีนเป็นเท็จ |
<> | ตรวจสอบความไม่เท่ากันของสองชุด | S1 <> S2 จะให้ค่าบูลีนเป็นจริง |
<= | ประกอบด้วย (ตรวจสอบว่าชุดหนึ่งเป็นชุดย่อยของชุดอื่น ๆ หรือไม่) | S1 <= S2 จะให้ค่าบูลีน False |
รวม | รวมองค์ประกอบในชุด โดยพื้นฐานแล้วมันคือการรวมกันของเซตและองค์ประกอบของประเภทฐานเดียวกัน | รวม (S1, ['d']) จะให้ชุด ['เอบีซีดี'] |
ไม่รวม | ไม่รวมองค์ประกอบจากชุด โดยพื้นฐานแล้วมันคือความแตกต่างของเซตและองค์ประกอบของประเภทฐานเดียวกัน | ไม่รวม (S2, ['d']) จะให้ชุด ['c', 'e'] |
ใน | ตรวจสอบการตั้งค่าความเป็นสมาชิกขององค์ประกอบในชุด | ['e'] ใน S2 ให้ค่าบูลีน 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]