delphi中的booltostr,把boolean變數轉換為字串
//以前不知道 booltostr 還有乙個預設引數
procedure tform1.button1click(sender: tobject);
var
b: boolean;
s: string;
begin
b := true;
s := booltostr(b);
showmessage(s);
b := false;
s := booltostr(b);
showmessage(s);
b := true;
s := booltostr(b, true);
showmessage(s);
b := false;
s := booltostr(b, true);
showmessage(s);
end;
delphi——集合的使用
集合是p a s c a l特有的資料型別,在visual basic、c或c + +都沒有(雖然c++ builder提供了一種模板類稱為集合,它模仿p a s c a l集合的行為)。集合用一種有效的手段來表示一組有序數、字元和列舉值。宣告乙個集合用關鍵字set of,並在其後跟上有序型別或乙個集合可能值的有限子集。示例如下:
type
tcharset=set of char; // 可能的值:# 0 - # 2 5 5
tenum = ( monday, tuesday, wednesday, thursday, friday ) ;
tenumset=set of tenum; // 包含了t e n u m值的任何組合
tsubrangeset=set of 1..10; // 可能的值:1 - 1 0
talphaset=set of 'a'..'z'; // 可能的值:' a ' - ' z '
注意,乙個集合最多只能有2 5 5個元素。另外,只有有序的型別才能跟關鍵字 set of,因此下列的
**是非法的:
t y p e
tintset=set of integer; // 非法:太多的元素
tstrset=set of string; // 非法:不是有序的型別
集合在內部以位的形式儲存它的元素,這使得在速度和記憶體利用上更有效。集合如果少於 3 2個元
素,它就儲存在c p u的暫存器中,這樣效率就更高了,為了用集合型別得到更高的效率。記住,集合
的基本型別的元素數目要小於3 2。
一、 使用集合
當使用集合的元素時,使用方括號。下面**表明如何使用集合型別的變數並給它賦值。
1.直接在所在過程中var中定義:
var
subrangeset:set of 1..10;(可能是1到10中任何數)
begin
subrangeset:=[1,2,4..6];
end;
2.在type中定義:
type
tcharset=set of char;
var
charset:tcharset;
begin
charset:=['a'..'j','a','m'];
end;
二、集合的值
1、集合的值放在一對方括號中,中間各元素之間用逗號隔開。如:[1,2,5] 和 ['a','e','i'] 都是集合。
2、在集合中可以沒有任何元素,這樣的集合稱為空集。 空集
3、在集合中,如果元素的值是連續的,則可用子界型的表示方法表示。例如:[1,2,3,4,5, 10,15] 可以表示成: [1..5,10,15]
4、集合的值與方括號內元素出現的次序無關。例如[1,5,8 ]和[5,1,8]的值相等。
5、在集合中同一元素的重複出現對集合的值沒有影響。例如,[1,8,5,1,8]與[1,5,8]的值相等。
6、每個元素可用基型別所允許的表示式來表示。如 [1,1+2,4]、[succ(ch)]。
三、集合的運算
集合型別變數不能進行算術運算,集合是無序的,不能使用ord、pred、succ等函式。
1、賦值運算
只能通過賦值語句給集合變數賦值,不能通過讀語句賦值,也不能通過寫語句直接輸出集合變數的值。如:
集合變數賦值: c:=['2']; i:=[5]; w:=;
集合變數賦子界值: c:=['a'..'z']; i:=[1..7];
集合變數賦列舉值: c:=['a','b','d','m']; i:=[2,4,6,8,10];
2、集合的並、交、差運算
可以對集合進行並(+)、交(*)、差 (-)三種運算,每種運算只有乙個運算子、兩個運算物件,運算結果仍為集合。注意它們與算術運算的區別。
① 並運算 (關係代數運算子∪)
a,b為兩個集合,由集合a中的元素加上集合b中的與a不重複的所有元素組成的集合,稱為集合a和b的並。即a+b,如:
[x,y,z]+[x] 為 [x,y,z]
[1]+[4] 為[1,4]
用+、-運算子或include( )和exclude( )過程,能對乙個集合變數增刪元素:
include(charset, 'a');/ /在集合中增加'a' ;
charset : = charset+['b'] ;/ /在集合中增加'b' ;
exclude(charset, 'x');/ /在集合中刪除'x' ;
charset:=charset-['y', 'z'];/ /在集合中刪除'y'和'z' ;
提示 盡可能地用include()和exclude()來增刪元素,盡可能地少用+、-運算子。因為include()和 exclude()僅需要一條機器指令,而+和-需要13+6n(n是集合的按位的長度)條機器指令。
② 交運算 (關係代數運算子∩)
a,b為兩個集合,由既屬於集合a中的元素又屬於集合b中的所有元素組成的集合,稱為集合a和b的交。即a*b,如:
[x,y,z]*[x] 為 [x]
[x,y,z]* 為
③差運算 (關係代數運算子-)
a,b為兩個集合,由集合a中的元素除去集合b中與a相同的元素組成的集合,稱為集合a和b的差。即ab,如:
[x,y,z]-[x] 為 [y,z ]
[x,y,z]- 為 [x,y,z]
3、集合的關係運算: 運算結果為布林值
關係運算子: = 相等、<> 不相等、
>= 包含,表示前者蘊含後者,相當於集合論中的 formulas>[img]mk:@msitstore:c:\documents%20and%20settings\administrator\桌面\pascal入門.chm::/setof.1.gif[/img]。
<= 包含於,表示前者蘊含於後者,相當於集合論中的 [img]mk:@msitstore:c:\documents%20and%20settings\administrator\桌面\pascal入門.chm::/setof.2.gif[/img]。
例如:[a,b,c]=[b,c,a] 為true,元素個數相同,內容相同,不管排列順序如何。 [a,b,c]>=[a] 為true;[a,b]<=[a,b,c] 為true。
in運算:in的右邊為集合,左邊為與集合基型別相同的表示式,為布林值。in測試乙個元素是否在集合中。相當於集合論中的∈。它們都是二目運算,且前4個運算子的運算物件都是相容的集合型別。例如:a in[b,c] 為false。
charset中是否有字母's':
if 's' in charset then
/ /繼續執行
下面的**判斷在enumset中是否沒有monday :
if not (monday in enumset) then
/ /繼續執行
設集合a:=[1..10]; x 為integer,如x在集合a中即刪除a中的元素x,否則把元素x新增到集合a中。程式段如下: if x in a then a:=a-[x] else a:=a+[x]
集合沒有的直接運算:集合中元素的個數以及列印輸出集合中每個元素。
鬱悶的星期五
今天真是鬱悶,昨夜同學電腦出問題,讓我幫忙。於是整個上午都在幫同學弄電腦,好像弄不好誓不罷休似的,結果十二點多的時候終於柳暗花明又一村了。呵呵。但是今天下午,我正在辦公室好好學習天天向上時,來了兩個女生。讓我幫忙看電腦,怎麼辦哪?人來總不好意思拒絕吧,於是乎又只能continue。乙個弄好後,沒想到...
2014 3 7 星期五 困
昨日進度 人工智慧 上課前作業完成,上課中複習離散 聽課 中 基本完成,要複習一下 體育 中午 完成數電作業 中上 數電 複習 聽課 優 基本複習一遍,完成任務 無課 去圖書館 晚飯在旁邊吃 還書 借書 複習 中下 太睏了,結果書看得有點少,書還了沒借 毛澤 看測控 結束那本書 下 上課是看電影 寢...
黑色星期五
在西方,星期五和數字 13都代表著壞運氣,兩個不幸的個體最後結合成超級不幸的一天。所以,不管哪個月的十三日又恰逢星期五就叫 黑色星期五 要求 輸入年份,輸出是 判斷該年是否包含黑色星期五,如包含,給出具體日期 includeint main int b 13 閏年時 int n 0,i,year s...