程序語言部分

1、程序語言知識

 1.1 程序語言:

   程序語言分為低級語言和高級語言兩個大類。

   低級語言:又稱為面向機器語言,它是特定的計算機系統所固有的語言。

n          機器語言:雖然執行效率高,但編寫出來的程序可讀性很差,程序難以修改和維護。

n          匯編語言:匯編語言是機器語言的一種提升,它使用了一些助記符號來表示機器指

令中的操作碼和操作數。但它仍然是一種和計算機的機器語言十分接近的語言,使用起來仍然不太方便。

n         高級語言:與人們的自然語言比較接近,使用起來很方便,也極大的提高了程序設     計的效率。

下面簡單介紹了幾種高級語言的特點:

       Fortran:第一個被廣泛用于進行科學計算的高級語言。

       Algol 早期研制出來的高級語言。有嚴格的文法規則,用巴科斯范BNF來描述語言的文法,是一個分程序結構的語言。(最近嵌套原則和存儲器使用效率高)

       Cobol:面向事務處理的高級語言。在數據庫管理系統設計方面使用廣泛。

       Pascal:具有相當強的表達能力,特別是對于數據結構功能的表達極具優勢。

       C    :當今最通用的程序設計語言。C是一種較低級的語言,提供了指針和地址操作的能力,但正是因為它的這一特點,才使它更具靈活性。CUNIX操作系統緊密相關。

       Prolog:邏輯型語言的代表。它是建立在關系理論和一階謂詞邏輯理論基礎上的。Prolog程序由一些俗稱事實和規則的Horn子句組成,具有很強的推理功能,適用書寫自動定理證明、專家系統、自然語言理解等問題的程序。

       LISP:典型的函數型程序語言。它以λ演算為基礎。它廣泛的用于問題求解等人工智能領域。

 面向對象技術具有3個最重要的特征:封裝性、繼承性和多態性。

       ◆封裝性:指隱藏類對象內部實現的復雜細節,將類以變量類型的形式提供給用戶,從而有效地保護內部所有數據不受外部破壞。

       ◆繼承性:指一個類(父類)再加上某些新的特征生成另外一個新類(子類),子類具有父類的全部特征,從而增強了類的共享機制,實現了軟件的可重用性,簡化了軟件的開發工作。

       ◆多態性:指將同一處理過程或函數應用于不同的變量(參數),實現數據和過程的功能重載,從而簡化編碼。

下面簡單介紹一下幾種面向對象語言。

       C++:是在C語言的基礎上發展起來與C兼容的語言。是目前最流行的面向對象語言,主要增加了類功能和從其他類中繼承類對象的功能。

       Smalltalk:典型的面向對象的程序設計語言,引入了類和對象。

       Java  SUN公司開發的一種面向對象的程序設計語言。其主要特點是可移植性好,可用于各種平臺,尤其適合網絡上運行。

數據類型和控制結構:

      對于不同的程序語言,其提供的數據類型都不相同。數據是程序操作的對象,使用時都需要分配內存空間,它們都具有以下的屬性。

       數據名稱:由用戶通過標示符命名;

       類型:    說明數據占用內存的大小和存放方式

       存儲類:  說明數據在內存中的位置和生存期

       作用域:  說明數據可以使用的范圍

       生存期:  說明數據占用內存的時間

 數據從不同角度可分成不同的類別:

      純量數據類型(基礎數據類型)和結構數據類型:其中純量數據類型包括(實型、整型、布爾型、指針,雙精度型和枚舉型);而結構數據類型包括(聯合、數組、復型和記錄)

       按作用域分:全局量和局部量

       按生存期分:自動生存期(auto)、靜態生存期(static)和動態生存期

       按程序運行期數據值是否改變:常量和變量

       按類型分:void、標量、函數和聚合

Ø         標量又可分為算術、枚舉和指針;

Ø         聚合可分為數組、結構體和共用體。

       按構造方式分:基本類型和派生類型(主要參考C語言)

基本類型是voidcharintfloatdouble和枚舉類型,以及其變種shortlongsignedunsigned

派生類型包括指針、數組、函數、結構體(struct)和共用體(union)。其中,最后兩種為用戶類型。

程序語言中的控制結構為數據和數據上的運算組合成程序提供了基本框架,主要包括3種控制結構,

Ø         順序:

Ø         選擇:if語句

Ø         重復:while語句

 1.2 匯編語言:

匯編程序是為特定的計算機或者計算機系統設計的面向機器的語言。

匯編語言中的語句可以分成兩大類:

Ø         與機器指令相對應的可執行匯編語句;

Ø         匯編控制語句,即偽指令。

偽指令并不翻譯成機器指令,它的作用是控制匯編程序工作。

每條匯編語句被劃分成4個區,依次是標號區、操作碼區、操作數區和注解區。

例如:[標號] [操作碼] [操作數] [注解]

用匯編語言編寫的源程序,要通過匯編程序將它翻譯成機器語言程序,才能被計算機執行。因此,匯編程序的功能就是將匯編語言所編寫的源程序翻譯成由機器指令和其他信息組成的目標程序。它的基本工作包括:

Ø         將每一條可執行匯編語句轉換成對應的機器指令

Ø         處理源程序中出現的偽指令

整個匯編程序工作通常要對源程序進行兩次掃描才能完成。第一次掃描主要工作是定義符號的值。第二次掃描的目的則是產生目標程序。其中,可執行匯編語句被翻譯成對應的二進制代碼機器指令,而偽指令會根據偽指令記憶碼調用偽指令表對應元素所規定的子程序入口。

 1.3 解釋程序:

解釋程序是一種語言處理程序,它直接執行源程序或源程序的內部形式。它并不產生目標程序,這是它和編譯程序的主要區別。

高級語言實現語言處理有4種方案:

Ø         源程序被直接解釋執行。

Ø         先將源程序翻譯成高級中間代碼,然后再掃描和解釋執行高級中間代碼。

Ø         先將源程序轉化成和機器代碼十分接近的低級中間代碼,再解釋執行這種中間代碼。

Ø         源程序被最終翻譯成機器語言表示的目標程序。這類系統的目標程序執行效率最高。

翻譯系統與解釋系統比較:

Ø         翻譯系統在執行速度上都優于建立在解釋執行基礎上的系統;

Ø         翻譯系統的缺點是其復雜性高,這使得它的開發和維護費用都大;

Ø         解釋系統比較簡單,可移植性較好,適合于以交互方式執行程序;

Ø         解釋系統缺點是執行速度慢;

純粹的解釋和純粹的編譯都是極端,因此一般是兩種技術的結合,先將源程序編譯形成中間代碼,然后由解釋器解釋執行。

解釋系統的結構可分成兩個部分。

1.包括通常的詞法分析程序以及語法和語義分析程序,它的作用仍是把源程序翻譯成中間代碼,中間代碼的設計常采用逆波蘭(后綴)表示形式(符號在后面)。

2.解釋部分,用來對第一部分所產生的中間代碼進行解釋執行,完成真正的解釋。

 1.4 編譯程序:

編譯程序的功能是把某些高級語言書寫的源程序翻譯成與之等價的低級語言(匯編語言或者機器語言)的目標程序。其過程可以分成6個階段。

 過程階段

任務及其特點

詞法分析階段

該階段的任務是從左到右逐個字符的讀入源程序,識別出一個個的單詞符號。

詞法分析所依據的是語言的詞法規則,即描述單詞結構的規則。詞法規則可用3型文法(正規文法)或正規式來描述,有限自動機能識別正規文法所定義的語言和正規式所表示的集合。

語法分析階段

該階段任務是在詞法分析的基礎上將單詞符號序列分解成各類語法單元。

語法分析所依據的是語言的語法規則,即描述程序結構的規則。語法分析有自頂向下分析(遞歸子程序分析法LL1)和自底向上分析(LR和算符優先分析)兩大類。

語義分析階段

審查源程序有無語義錯誤,為代碼生成階段收集類型信息。

中間代碼生成階段

在進行了上述的語法分析和語義分析階段的工作之后,有的編譯程序將源程序變成一種內部表示形式,這種內部表示形式叫做中間語言或中間代碼。所謂“中間代碼”是一種簡單、含義明確的記號系統。

代碼優化階段

該階段是對前階段產生的中間代碼進行變換改造,目的是使生成的目標代碼更為高級,即省時間和省空間。優化所依據的原則是程序的等價變換規則。

目標代碼生成階段

此階段使把中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或匯編指令代碼。

 其中,詞法分析和語法分析本質上都是對源程序的結構進行分析。而語義分析和中間代碼生成所依據的是語言的語義規則,一般采用語法指導翻譯和中間代碼生成。

自底向上分析法采用一個后進先出棧的數據結構,是移進-規約過程(找出句柄)。

自頂向下分析法必須改寫文法,采用預測分析法,要消除左遞歸和提取公共左因子。

 編譯過程6個階段的任務以及表格管理和出錯處理工作可分別由幾個模塊或程序完成,他們分別稱作詞法分析程序、語法分析程序、語義分析程序,中間代碼生成程序、代碼優化程序、目標代碼生成程序、表格管理程序和出錯處理程序。

2.重點與難點

2.1文法及語言形式描述:

本部分的內容難點是編譯原理。與程序員級別的要求一樣,這部分的內容比較復雜,不易理解。可以從下面幾個知識點來掌握:

文法和語言形式描述

這一部分主要是需要搞清楚一些基本概念和基本原理,這也是編譯原理的最基本的知識。

基本定義:包括字母表、字符、字、字長度、空字、字運算等等。

文法的定義:描述語言的語法結構的形式規則稱為文法。

文法G是一個四元組,可表示為GVT, VN, S, P)。

VT是一個非空有限集,每個元素稱為終結符。

VN是一個非空有限集,每個元素稱為非終結符。

P是一個非終結符,稱為開始符號;它至少要在一條產生式中作為左部出現。

S是一個產生式集合(有限)。

句子和語言:

主要涉及幾個概念。

I.   直接推導與推導(區別是否直接導出)

II.  直接歸約與歸約(直接推導和推導的逆過程)

III. 句型和句子(由開始符號推導出的稱為句型,僅含終結符的句型稱為句子)

IV.  語言(句子的全體)

文法的分類:

文法根據對產生式施加不同的限制,分成4種類型,即0型、1型、2型和3型。下表列出了這幾種文法的特點和區別。

 

 文法類型

文法名稱

語言名稱

對應的自動機

0型(PSG

短語結構文法

遞歸可枚舉語言

圖靈機(Turing

1型(CSG

上下文有關文法

上下文有關語言

線性界限自動機

2型(CFG

上下文無關文法

上下文無關語言

非確定下推自動機

3

右線性文法(正規文法)

有限狀態文法

有限狀態自動機

2型文法(上下文無關文法):

如今程序語言基本都可以用它來描述。重點涉及幾個概念,對于這幾個概念可以根據書上的例子來理解和掌握。在復習資料上有例題,可以找一個分析一下(99頁);

Ø         規范推導(最右推導):總是對句型的最右端的非終結符進行置換;

Ø         短語、直接短語和句柄(句柄:最左直接短語)

Ø         素短語:至少含有一個終結符,除本身外不含更小的素短語

Ø         規范歸約

Ø         語法樹和文法的二義性

對于上面的術語,一定要知道其意義,還要知道其具體的做法。

2.2 詞法分析

詞法分析的任務是把構成源程序的字符串轉換成單詞符號串的中間程序。詞法規則可用3型文法(正規文法)或正規表達式描述。轉換方法有人工的狀態轉換圖方法和有限自動機的自動方法。

這部分主要涉及以下兩個方面的內容。

Ø         正規表達式和正規集

Ø         有限自動機

有限自動機作為一種識別裝置,它能準確地識別正規集。它分為兩類:確定的有限自動機(DFA)和不確定的有限自動機(NFA)。在有限自動機理論中,可以通過子集法的算法來實現NFADFA的轉換。

比如::所有與b為首后跟任意多個a的字

:所有與a為首的字;

:含有兩個相繼的a或兩個相繼的b的字;

(需要拷貝)語言L={ambn|m0n1}的正規表達式是__A__。 (程序語言)

(14) A. a*bb*

B. aa*bb*

C. aa*b*

D. a*b*

 

2.3 語法分析

語法分析的任務是識別由詞法分析給出的單詞符號序列是否為給定文法的正確句子(程序)。語法分析常用的方法有兩類:

◆自底向上分析方法(LR分析法和算符優先分析法)

也稱為移進-歸約分析法。對“可歸約串”刻畫的不同,形成兩種不同的分析方法,即規范歸約分析法和算符優先分析法。

◆自頂向下分析方法

也稱為面向目標的分析方法。存在兩種分析方法,遞歸子程序法和預測分析法,都使用LL1)文法來進行語法分析。

例題:假設某程序語言的文法如下:

Sa | b | (T)

TTdS | S

其中,VT={a,b,d,(,)}VN={S,T}S是開始符號。

考查該文法,稱句型(Sd(T)db)S的一個A 。其中B是句柄;C是素短語;D是該句型的直接短語;E是短語。

A ①最左推導           ②最右推導          規范推導          推導

B S                  b                 (T)               Sd(T)

C S                  b                 (T)               Sd(T)

D S                  S,(T),b         S,(T),TdS,b  (Sd(T)db)

E (Sd(T)db)      d(T)             Td                Sd(T)d

此句型的語法樹如下所示:

S

 

(T)

 

T  d   S

          

T  d  S   b

 

S   T))

從語法樹我們可以看出,短語就是位于同一個非終端結點的所有葉子結點,比如SSd(T)Sd(T)db就是是相對于T的短語,b(T)(Sd(T)db)是相對于S的短語。而直接短語則進一步要求這些葉子結點的非終端結點是它們的直接父結點。因此可以S(T)b都是該句型的直接短語。語法樹上最左的直接短語就是句柄,本題中是S

       所謂素短語是指這樣一個短語,它至少含有一個終結符,并且除它自身之外不再含任何更小的素短語。最左素短語則指處于句型最左邊的那個素短語。

       最左推導是指任何一步推導過程σ→β,都是對σ中的最左非終結符進行替換。因此,在語法樹中也很容易看出,如果語法樹中的只有最左的非終結符結點(包括各級結點)具有其子樹,則它就是最左推導。最右推導與之類似,最右推導也稱規范推導。

2.4代碼優化

    優化是對程序進行等價(指不改變程序的運行結果)變換,經變換后的程序能生成更有效(運行時間更短、占用空間更小)的目標代碼。

根據優化所涉及的程序范圍,可分為局部優化、循環優化和全局優化三個不同的級別

編譯原理重點難點歸納:

了解編譯程序工作的大致過程,要清楚編譯程序是如何生成的。請大家記憶并理解以下概念:編譯程序,解釋程序,翻譯程序,掃描器,分析器,編譯前端與后端,符號表。

要掌握的幾個重量級概念:上下文無關文法,語法分析樹和二義性,同時也引出了與此緊密聯系的其它概念:推導,句型,句子,最左推導,最右推導等。

最后給出了另一個常考點:喬姆斯基的方法分類。

1.上下文無關文法的定義,判斷和轉化,以及與上下文無關文法密切相關的概念。

首先,應該掌握上下文無關文法的四個構成要素;

其次,應該清楚對于上下文無關文法,其每個產生式的左部和右部必須滿足的條件。

在有關上下文無關文法的考點中,有這樣幾種考查方式:

n          給出某語言的自然語言描述方式,要求寫該語言的上下文無關文法表述形式;

n          給出某語言的上下文無關文法,要求用自然語言描述該語言;

n          給出某語言的上下文無法方法,要求證明該文法是否二義;

n          給出某語言的上下文無關文法,要求給出指定句子的最左或最右推導;

n          給出某語言的上下文無關文法,要求給出指定句子的語法分析樹;

n          給出一個具有二義性的上下文無關文法,要求將其轉換成非二義性的。

2.喬姆斯基的文法分類:

首先,應該非常清楚喬姆斯基對于四種文法分類的定義,并能理解其含義。幾種文法中,最基本的是0型文法,讀者可以將它理解為其它所有文法的基礎,它是可以表示任何語言的文法。后面的12,3三種文法,是分別對于0型文法產生式的兩邊作了不同的限制之后,形成了新的文法。比如:規定0型文法的每個產生式中,其左邊字符集長度小于右邊字符集長度并且同時規定開始符號只可出現于產生式的左邊,不能出現在任何產生式的右邊,這樣,就成為了1型文法(即上下文有關文法)。其它與此類似,在1型文法的基礎上,進一步規定該文法的任意產生式,其左部只允許有一個字符且必須為非終結符,這樣就構成了上下文無關文法;再在上下文無關文法的基礎上進行限制:規定除了左部有且只有一個非終結符外,還特別規定右部最多只允許有兩個字符,當為兩上字符時必須一個為非終結符,另一個為終結符,而當只有一個字符時,必須為終結符,這樣的文法就成了正規文法。這樣一層套一層的限制,就形成了從0型到3型文法的定義體制,每一層都是在前一層基礎上進行定義的,所以說前一層一定比該層表示的范圍要廣,因為其受的限制要少。

那么,我們在判斷一個文法時應該以什么規則來判斷呢?這個規則當然是:3->2->1->0.也就是說,我們判斷是從高到低來判斷的,比如:一旦判斷其屬于正規文法之后就沒必要再判斷其是否屬于上下文無關的了(因為它必定屬于上下文無關,我們應該以最高規則來判定其屬于的文法類型),其它情況與此類推。只有當我們判斷不屬于3型文法時,我們才向下判斷,其是不是屬于2型的,若不屬于2型的,則依此類推再向下判斷。最終的結果如果不屬于321三種類型,那就只有屬于0型了。

“給定一個文法,要求判斷其屬于何種文法”是一個重要考點,其出題形式可能是填空,選擇等多種題型。

正規式和有限自動機,對于詞法分析一章的考點,可以說80%90%以上集中在這一節的內容上。針對于這一節的知識點介紹和考點分析:

1)        詞法分析器的功能:輸入的是源程序,輸出的是分析完成的單詞符號;

2)        狀態轉換圖:是一張有向圖,用于標識在特定的輸入下詞法分析器應該選擇的分析方向。

對于考點1),作為選擇進行考查,而對于考點2),多數是與有限自動機一些考查,要求給出以“狀態圖”表示的確定有限自動機,或者是要求直接給出針對于某正規式的狀態轉換圖,大家記住一句話:狀態轉換圖,就是一張當輸入不同的內容時,選擇不同分析路徑的有向圖。

下面,我們重點看一下有關“正規式與有限自動機”這一考點的各種可能考查形式:

a.題目給定一正規式,要求給出其NFADFA或最簡DFA形式。

b.題目給定一用狀態圖表示的NFA,要求給出其對應的DFA或最簡DFA形式。

c.題目給定一NFADFA或最簡DFA,要求給出其對應的正規式。

d.題目給定一正規集,要求給出其相應的DFA

e.題目給定一用自然語言描述的正規集,要求給出其相應的正規式表示形式。

這些考點,綜合起來看,是在正規式,正規集,NFADFA之間作各種可能的轉換,當然這種轉換正確與否的判斷標準就是轉換之后的內容是不是與轉換之前的內容等價,如果等價,我們就認為轉換是正確的。

在考點e這類的轉換題目中,有一些是需要另外規納出來的,他們在某一方面具有共同的特征,如果掌握了其中一題,將可舉一反三解出其它題。

比如有以下的幾種題目就可以作以總結:

1.求偶(奇)數個a與偶(奇)數個b構成的語言的正規式

2.求能被345、或其它任意給定的n)整除的正規式的DFA

3.求不以(或以)nn09)開頭的XXXX(符號某種條件的)奇(偶數)數的正規式

以上三種類型的考題,在每一種類型中,都是有規律可循的,也都有簡便的方法可以幫助我們快速求解其正規式,進而快速確定DFA及最簡DFA。針對于這三種類型的解題思路分析,我會在另外的文章中給出。

當詞法分析器對源程序進行了詞法分析,獲得了一個個獨立的單詞符號后,編譯程序總控模塊就會調用語法分析子程序對這些單詞符號集進行語法分析,也就是:利用該文法的產生式來判斷這些單詞符號是否足以構成一個在語法上正確的程序。如果可以構成一個在語法上正確的程序,則接著作編譯下面的工作,比如:語法制導翻譯,中間代碼生成、代碼優化等工作;而如果不能構成一個在語法上正確的程序,則給出相應的錯誤提示并將錯誤信息記入對應的數據記錄中。

語法分析的規則主要基于兩種:自上而下分析和自下而上分析。自上而下分析的大致思路是:根據產生式規則,從產生式的開始符號進行推導,一直推導到可以產生當前要判斷的這個句子為止。如果推導了所有可能情況,但沒有推出這樣的句子,那么這個句子就是不符合該語言的語法規則的(產生式即定義了語言的語法規則)。

一種自上而下的分析方法:LL(1)分析法,下面,我介紹一下本章的主要常考知識點及考查角度:

1.給定一文法,要求將其改造成可以進行自上而下分析的形式。

這里面涉及到兩方面的知識點:

左遞歸的去除及公因子的提取。所謂的左遞歸是指產生式是形如:P->Pab...的形式,即:產生式右邊的第一個字符就是該產生式左邊的那個非終結符。當一個文法中有左遞歸的產生式時,是無法進行自上而下推導的,因為只要這個產生式被推導,就勢必會使這種推導過程陷入一種遞歸循環無休止推導的情形。去除左遞歸的方法是比較簡單的,其基本思路是將左遞歸通過轉化變成與之等價的右遞歸。即將形如:P->Pa|b 形式的左遞歸變成如下形式:P->bP',P'->aP'|e(注:e表示空)。提取公因子的目的是為了避免推導過程中的回溯,也就是使每一次的向下推導是唯一的,而不是有多個選擇,因為有多個選擇的話就可能出現回溯。

2.給定一文法,要求判斷其是否為LL(1)文法。判斷一個文法是否為LL(1)文法主要有兩種方法:一種是判斷文法是否二義,如果二義,則文法必定不為LL(1)(注意:此命題的否合命題不真);二是根據關于LL(1)文法成立的三個條件。顯然,第一種判斷方法效率是比較高的,但是,其只能判斷文法“不為”LL(1)的,并不能判定文法“是”LL(1)的,要判斷文法“是”LL(1)的,就得用第二種方法,但在考題中,如果要求你判斷某文法是否為LL(1)的,則該文法多半不是LL(1)的,而且此點可以很容易地用二義性來證明,這是一種常考形式。

3.給定一文法,要求構造LL(1)分析表。LL(1)分析的重點和難點內容都在其分析表的構造上,后面要講的LR分析也是,它的難點也在于其分析表的構造。構造LL(1)分析表是一個常考點,也是大分值題的可能出題點,對于普通學校而言,相比于LR分析,他們更喜歡考LL(1)LL(1)分析表構造前,需要先弄清FIRST集和FOLLOW集的構造方法,簡單地說,FIRST集是用于求非終結符推出的產生式中的第一個終結符的,而FOLLOW集是用于求與該非終結符后緊鄰的那個終結符的。FIRST集的構造方法見編譯原理的教材,在構造的三個規則中,前兩個規則都是比較容易理解的,第三個規則看上去就有點復雜了,我們簡單地來看第三條規則,就是:當由X推出的產生式中前面若干個非終結符,其FIRST集均含有空時,就取這若干個非結符的后一個字符的FIRST集,當然,這“后一個字符”可能是終結符,也可能是非終結符,只要其FIRST集不為空就行;而當X推出的右邊全是非終結符,且這些非終結符的FIRST集全含有空時,就把空加到FIRST(X)中。FOLLOW集的構造方法很簡單,不作詳細講解了。LL(1)分析表的構造方法見教材,構造規則主要有3條。說到這里,大家應該明確分析表中的各個單元到底代表什么含義,我作一下簡單的介紹:分析表中的最頂一行,是產生式中所有的終結符;分析表中的最左一列,是產生式中所有的非終結符;而產生式中間的諸多單元格則可以存放該文法的產生式或特殊標志(比如成功和錯誤標志)。這樣的二維表格構成的單元格的含義是:當左邊的非終結符遇到最上一行中的某個終結符時應該選擇哪個產生式進行向下的推導,這個產生式就是放在對應二維坐標處的產生式。

4.給定一文法,先要求求解其LL(1)分析表,然后要求給出針對于某一個句子的具體分析過程。這個考點的第二問主要就是考查考生對預測分析程序的工作過程的理解了,預測分析程序完全是按照分析表機械工作的,針對于考生而言,要明確何時出棧,何時入棧,以及如何入棧,這些細節信息都是要通過作題掌握的,只理解而不會熟練解答是沒有用的。

5.給定一文法,要求給出其遞歸下降分析程序。遞歸下降分析的條件也是無左遞歸及不帶回溯,其構造的過程比較簡單,就是將每個非終結符處理成可以互相遞歸調用的過程體。詳細過程參照P74P75的例子,你可以試著寫一下P76頁教材上未列出的F過程的實現。


 


版權所有 張家界市廣播電視大學現代信息技術中心 網站備案號:湘ICP備14000873號-1
 

 

Powered by PageAdmin CMS
重庆快乐10分计划大全