天天看點

易語言教程

2.7指令

在程式中,除了允許使用常量、變量之外,還允許使用事先定義了的指令,使用者隻要給出指令名與參數的值,就可以求出相應的值來。如求5的平方根,可調用指令“求平方根(5)”。

程式是由各種指令組合而成的,不同的指令完成不同的工作。易語言中提供了大量的指令,使用者可以使用這些指令來實作預想的運作效果。一個程式可以實作一種或多種功能,而這些功能的實作都離不開程式内部調用的指令。指令是程式的基本組成部分,要學習易程式的編寫,首先就要了解易語言所提供的指令。

2.7.1 指令的格式

指令格式如下:

指令名稱 (參數,...... )

大部分指令都需要填寫參數,參數用括号括起來的,并用逗号分隔。部分指令無需參數,但括号不能省略,如“結束()”指令。各種指令所要求參數的個數以及資料類型各有不同,由其文法所規定。例如“到文本()”指令,該指令隻需一個參數,參數内容為欲轉換成文本的資料。有些指令的參數很多,如“子文本替換()”指令的格式如下:

子文本替換 (欲被替換的文本,欲被替換的子文本,[用作替換的子文本],[進行替換的起始位置],[替換進行的次數],是否區分大小寫)

2.7.2 指令的傳回值

大多數指令執行完畢後都有傳回值。有的指令傳回運算結果,如“求正弦()”指令,傳回求得的正弦值;有的指令傳回的執行的結果,如“取文本左邊()”指令,傳回取出的文本内容;有的指令傳回運作是否成功的狀态,如“建立目錄()”指令,建立成功則傳回“真”,建立失敗則傳回“假”等等。大部分時候,目前指令的傳回值對後續指令來說非常重要。例如一個指令如果運作成功了,就提示成功,否則提示失敗,“Windows控制台程式”的代碼如下:

各指令的文法規定了其傳回值的資料類型,在實際使用中,應當注意有可能需要對傳回值的資料類型加以轉換,例如,文本資料隻接收文本型,是以要顯示一個數字就可以使用“到文本()”指令将數字轉換為文本形式顯示,代碼如下:

文本變量 = 到文本(求平方根 (100))

“求平方根()”指令的傳回值是一個數值型的,如果要以文本方式顯示,就要用“到文本()”指令進行轉換。

有些指令的傳回值是一個通用型的資料,代表根據參數不同,其傳回值資料類型也可以不同。例如“多項選擇(,)”指令。該指令有2個參數,第一個參數是索引值,第二個參數是待選項,待選項可以重複添加。待選項資料類型是通用型(表示參數2可以是任意資料類型)的,傳回哪個待選項取決于第一個參數的索引值。索引值是1則傳回第一個待選項;索引值是2則傳回第二個待選項。是以,所選項是哪種類型的資料,傳回值就為哪種類型的資料。下面就編寫一個小程式來了解一下多項選擇指令。

建立一個“Windows控制台程式”,在“_啟動子程式”中輸入如下代碼:

按“F5鍵”試運作程式,輸入“4”後按“Enter鍵”,将顯示待日期時間“2005年10月1日”。

有些指令無傳回值,如“結束()”指令,此類無傳回值的指令運作後不傳回任何值,是以直接使用即可,例如:

指令是否有傳回值,傳回值的資料類型,都可以通過即時幫助系統查找到。

2.7.5 文本操作類指令

在編寫程式時免不了對大量的文本型的資料進行操作,文本操作類的指令比較全面,下面介紹常用文本操作指令。

1.“取文本長度()”指令

擷取指定文本的位元組長度,半角數字和字元為1個位元組的長度,漢字和全角标點符号為2個位元組的長度,如:

取文本長度(文本變量)

可以取出變量中文本的長度。

2.“取文本左邊()”、“取文本右邊()”和“取文本中間()”指令

這3個指令可以取出一段文本中任意位置的文本。如:

取文本左邊(文本變量,4)

可以将變量中的前4個字元取出來。

3.“尋找文本()”和“倒找文本()”指令

從目前文本的指定位置開始尋找指定的文本,并傳回最先找到該文本的位置。“尋找文本()”是從指定文本的首部開始尋找,“倒找文本()”相反。例如:

尋找文本 (文本變量, “:”, 1, 假)

代碼運作後會傳回找到的第一個“:”的位置。

4.“文本替換()”指令

該指令可以将指定文本的某一部分用其它的文本替換。例如:

文本變量= 文本替換 (文本變量, 4, 2, “xx”)

将“文本變量”中第4個位置開始的2個字元替換成“xx”,并将結果儲存到“文本變量”中。

2.7.6 時間操作類指令

時間操作類指令也是較常用的一類指令,可以對日期時間型資料進行操作。

1.“到時間()”和“時間到文本()”指令

這2個指令用來在日期時間型資料和文本型資料之間轉換。例如:

到時間 (“2004/2/2 12:30:25”)

“時間到文本”指令可以将指定的部分的時間轉換成文本。例如:

時間到文本 (取現行時間 (), #日期部分)

2.“取現行時間()”指令

可以将目前系統的日期及時間取出,例如用“日期時間變量”儲存目前的時間:

日期時間變量=取現行時間()

被儲存時間是一個包括“年月日時分秒”的完整時間,如果想取出時間中的指定部分,需要使用其它時間操作類型指令來實作。

3.取指定時間部分的指令

用來取出指定時間部分的指令有:“取時間部分()”、“取年份()”、“取月份()”、“取星期幾()”、“取小時()”、“取分鐘()”、“取日()”、“取秒()”、“取日期()”、“取時間()。其中“取日期()”和“取時間()”指令傳回值是日期時間型,其它傳回值都為整數型。

“取時間部分()”指令可以取出日期時間型資料中的指定部分數值。例如:

(1)取目前時間的年份:

取時間部分 (取現行時間 (), #年份)

(2)用“日期時間變量”儲存目前時間的“年、月、日”:

 日期時間變量= 取日期 (取現行時間 ())

2.7.7 位運算指令

位運算是指對資料進行二進制的逐位運算。計算機内部是采用二進制方式存儲和處理資料的,輸入到計算機的數字、字母、漢字等資訊都以二進制的形式存儲。

所謂二進制,就是以“逢二進一,借一當二”為原則,對數值進行計數的進位制,和我們日常使用的十進制類似,隻不過十進制是“逢十進一”。

位的英文是Bit,是以也常被稱為比特位。

易語言中的位運算指令

(1)“位取反()”指令

“位取反()”指令對二進制數值每一比特位的值取反,即0變為1,1變為0,傳回值是轉換後的十進制數。

例如:

文本變量 = 到文本 (位取反 (80))

代碼運作後,“文本變量”将儲存“位取反”運算結果“-81”。

(2)“位與()”指令

“位與()”指令對二進制數值的共同比特位進行“與”運算,即如兩個或多個數值的共同位均為1,則傳回值的對應位也為1,否則為0,運算完畢後,傳回值是轉換後的十進制數。

比如:

一個二進制數的第4位為1,另一個二進制數的第四位為1,則傳回值的第四位為1;

一個二進制數的第4位為0,另一個二進制數的第四位為1,則傳回值的第四位為0;

一個二進制數的第4位為1,另一個二進制數的第四位為0,則傳回值的第四位為0;

一個二進制數的第4位為0,另一個二進制數的第四位為0,則傳回值的第四位為0;

文本變量 = 到文本 (位與 (56, 89))

運作後可以得出的結果為“24”。 56和89分别轉換成二進制數為:0011 1000和0101 1001,進行與的運算後即會得出結果“0001 1000”即“24”。

(3)“位或()”指令

“位或()”指令對二進制數值進行“或”運算,并将運算後結果以十進制傳回。如兩個或多個數值的共同位均為0,則傳回值的對應位也為0,否則為1。運算完畢後,傳回值是轉換後的十進制數。

一個數值的第4位為1,另一個數值的第四位為1,則傳回值的第四位為1;

一個數值的第4位為0,另一個數值的第四位為1,則傳回值的第四位為1;

一個數值的第4位為1,另一個數值的第四位為0,則傳回值的第四位為1;

一個數值的第4位為0,另一個數值的第四位為0,則傳回值的第四位為0;

文本變量 = 到文本 (位或 (56, 89))

運作後的結果為“121”。56和89分别轉換成二進制數為:0011 1000和0101 1001,進行或的運算後即會得出結果“0111 1001”即“121”。

(4)“位異或()”指令

“位異或()”指令對二進制數值的共同比特位進行“異或”運算,并将運算結果以十進制傳回。如果兩個或多個數值的共同位相等(均為0或均為1),則傳回值的對應位就是0,否則為1。運算完畢後,傳回值是轉換後的十進制數。

一個數值的第4位為1,另一個數值的第四位為1,則傳回值的第四位為0;

文本變量 = 到文本 (位異或 (56, 89))

運作後的結果為“97”。56和89分别轉換成二進制數為:0011 1000和0101 1001,進行異或的運算後即會得出結果“0110 0001”即“97”。

2.7.8 其它常用指令

1.“讀入檔案()”和“寫到檔案()”指令

“讀入檔案()”指令将一個檔案的所有資料讀入程式,傳回值是一個位元組集型資料,在指令的參數中填入欲讀入檔案的全路徑檔案名,可以将讀入的檔案放在一個位元組集型變量中,如:

位元組集變量=讀入檔案(“C:\Downloads\echs.zip”)

對讀入的檔案資料經過處理後,用“寫到檔案()”指令寫出至檔案中。“寫到檔案()”指令的第一個參數指定寫出檔案的全路徑檔案名,檔案的擴充名要和檔案格式相比對,寫出的檔案才能正常通路。例如将位元組集型資料“位元組集變量”中的内容寫到檔案中:

寫到檔案 (“C:\echs.zip”, 位元組集變量)

2.“尋找檔案()”指令

“尋找檔案()”指令可以在指定路徑下尋找檔案或目錄,找到後就傳回與條件比對的檔案名或目錄名,如果沒找到就傳回一個空文本。指令的第一個參數為欲尋找的檔案名,第二個參數為欲尋找檔案的檔案屬性。例如尋找一個子目錄:

尋找檔案 (“c:\目錄”, #子目錄)

3.“建立目錄()”和“删除目錄()”指令

“建立目錄()”指令可以建立一個新目錄,建立成功傳回真,失敗傳回假。“删除目錄()”指令可以用來删除一個目錄,删除成功傳回真,失敗傳回假。

“建立目錄()”指令建立目錄時,其父目錄必須存在,否則會建立失敗,即該指令不能一次性建立多級目錄。是以,如果要建立多級子目錄,需要判斷每一級目錄的父目錄是否存在,一層一層的建立各級子目錄。

4.“打開檔案()”指令

“打開檔案()”用來打開一個指定的檔案,成功傳回被打開檔案的檔案号。雖然該指令隻用來打開一個檔案,并不對檔案進行其它操作,但本指令取得的檔案号,是很多檔案操作類指令都要使用到的,如“讀入文本()”和“寫出文本()”指令、“讀入資料()”和“寫出資料()”指令等等。使用此指令可以比讀入檔案指令實作更多的操作。

例如将一個文本檔案打開并用“讀入文本()”指令将讀入的文本儲存到“文本變量”中:

文本變量 = 讀入文本 (打開檔案 (“c:\幫助.txt”, , ), )

2.8運算符和表達式

将資料類型相同的常量、變量和函數用規定的運算符連接配接起來,就構成了表達式。表達式本身有一個值。

編寫代碼時,除了大量的使用指令或對元件的屬性或方法進行操作,運算符的使用也非常重要。程式中所有涉及到的算術運算或關系比較運算等操作,都需要使用運算符。

易語言中提供了大量的運算符。例如指派時使用的“=”号,就是指派運算符,比較大小時使用的“>”和“<”号,是關系運算符等等。如表2-2所示。

 易語言運算符

運算符分類 運算符 運算符含義 代碼中顯示

算術運算符号 + 加法運算,将加号兩邊的數相加 +

 - 減法運算,将減号兩邊的數相減;負号 -

 * 乘法運算,将乘号兩邊的數相乘 ×

 / 除法運算,将除号兩邊的數相除 ÷

 \ 整除運算,将整除号兩邊的數整除 \

 % 求餘數運算 %

關系運算符 > 判斷是否大于 >

 < 判斷是否小于 <

 = 或 == 判斷是否等于 =

 >= 判斷是否大于等于 ≥

 <= 判斷是否小于等于 ≤

 <> 或 !=  判斷是否不等于 ≠

 ?= 判斷是否約等于 ≈

邏輯運算符 && 或QIE  邏輯與運算符,可以連接配接幾個必須同時滿足的條件 且

 ||或HUO  邏輯或運算符,可以連接配接幾個可選條件 或

指派運算符 = 将等号後面的值指派給等号前面的對象 =

程式中的運算符都有其優先級别,在程式運作的時候會按照符号的優先級别,從高到低依次運作。運算符的優先級别參見下表。

易語言常用運算符的優先級

運算符 優先級

()(小括号) 最高

*(乘)    /(除)        

\(整除) 

%(求餘數) 

+(加)     -(減) 

<(小于)  <=(小于等于)   >(大于)   >=(大于等于)

==(等于)     !=(不等于)     ?=(約等于) 

&&(邏輯與) 

||(邏輯或) 

=(指派) 

在這裡我們已看出:算術表達式中算術運算符号的優先順序,和在數學上是完全一樣的:

(1)如果有括号,必須先做括号内的。在程式中,沒有大、中、小括号之分,一律使用應括号(),括号内可以套用括号,但不得超過36層。這就同數學上一樣,先做最内層括号中的計算,層層向外脫,最後處理最外層括号中的計算。

(2)無論括号内或括号外,函數計算優先于其它算術運算符。

(3)乘、除運算優先于加、減運算。乘或除同時出現在一個表達式中時,先完成左邊的後完成右邊的(即以先後出現順序為序)。

(4)最後做加、減運算。加、減号同時出現在一個表達式中時,也以先後出現的順序為序。

對于初學者來說,下列幾點要格外注意:

1.在數學上,代表兩個數的字母相乘時,可以連寫。如A代表一個數,B代表一個數,則可用AB代表兩個數相乘。在表達式中,這是絕對不允許的(這時它會把AB當作變量名)。必須寫成A*B。用A.B也是不允許的。

2./号代表除号。

3.左右括号必須成對出現。且不得用方括号[ ]或花括号{}代替。

2.8.1算術運算符和算術表達式

1.算術運算符

在程式中表示為:

+,加法運算。如:3+2

—,減法運算或負值運算。如:10-2、-10

×,乘法運算。如:2×3

/,除法運算。如:20/12

\,整除運算。如:12\5,運算後會将保留一個整數,小數部分将被舍去

%,餘數運算。還可以輸入“求餘數”,第一個參數填被除數,第二個參數填除數,第二個參數可以重複添加。如:1220%100、1220%100%120

2.算術表達式

用算術符号和括号将運算對象連接配接起來的,符合易語言文法規則的式子,稱易語言算術表達式。例如,下面是一個合法的易語言算術表達式:

變量=((6 × 12 + 16 ÷ 8) - 23) \ 10

表達式中運算的先後,是按照運算符的優先級别來進行判定的。

算式計算的結果可以被程式調用。

2.8.2指派運算符和指派表達式

1.“=”是指派運算符,在程式中給變量指派或用代碼改變元件屬性,大部分都是使用“=”進行指派的,将等号後面的值指派給等号前面的指派對象。

2.指派表達式

一個正确的指派表達式,一定要保證欲賦的值和被指派的對象之間的資料類型相同,不同的資料類型要轉換成相同的資料類型後再指派。

3.指派運算符“=”和關系運算符“=”的差別。雖然2個運算符使用的是相同的符号,但含義卻不同,指派運算符“=”是用于指派,将“=”右邊的值(或變量)指派給“=”左邊的變量(或元件屬性、數組成員、自定義資料類型成員);關系運算符“=”,是比較符号兩邊的值是否相等,如果相等傳回真,不相等傳回假。

上述代碼中,條件語句“如果()”中的“被比較值=比較值”,是用關系運算符“=”進行比較,如果相等會傳回“真”,不相等會傳回“假”,如果傳回“真”将會執行:标簽1.标題=“相等”;如果傳回“假”将會執行:标簽1.标題=“不相等”,這2行給标簽标題屬性指派的代碼中,使用的就是指派運算符“=”。

2.8.3文本運算符與文本表達式

字元串在易語言中被稱為文本,其運算符隻有一個:

+  連接配接運算符

其功能是将兩個文本連接配接起來。

“ABCD”+“123”

将得到一個新的文本,其值為“ABCD123”。

可見,可用字元串運算符連接配接兩個字元串,構成字元串表達式。

 2.9習題

1.指明下列各資料,哪些是合法的常量。

(1)1E+39    (2)359,672001    (3)“ABC  34”    (4)29•“AB”    (5)32.001

2.指明下列各項,哪些是合法的變量名。

    (1)AA    (2)A.5%    (3)2A$    (4)AB$%    (5)BBC%

3.将下列各數轉換成正常計數法表示的數。

    (1)8.2345E+05     (2)2.3456E-06    (3)1.259E+09

4.寫出下列各表達式中運算符号的執行順序。

    (1)3*5+2*(68/(2+3))    (2)A+B*6/4+8%| 65+2*8    (3)A+B-85% 3

5.指出下列各程式行中有哪些錯誤。

        (1)變量1=5,變量2=6    (2)變量1+2=變量2+3    (3)“文本資料”    (4)3.1416*變量1   

6.給出下清單達式的邏輯值:

(1)5>3 && 6>4    (2)3+5>6 || 7=6    (3)A>A && 4*4*2>2     (4)5||3<3(5)5=6=7=0