日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服
軟件設(shè)計師考試應(yīng)試指導(dǎo)(第2版)圖書
人氣:26

軟件設(shè)計師考試應(yīng)試指導(dǎo)(第2版)

前言 在信息技術(shù)和軟件產(chǎn)業(yè)快速發(fā)展的推動下,計算機技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試(通常簡稱"軟考")已經(jīng)成為我國部級的IT專業(yè)人員從業(yè)資格考試。軟考通過后頒發(fā)的資格證書不僅在全國范圍內(nèi)有效,部分級別的...

內(nèi)容簡介

本書以國家頒布的軟件設(shè)計師考試大綱和教程為依據(jù),以對考生進行綜合指導(dǎo)、提高考生應(yīng)試能力為原則,在深入研究考試真題基礎(chǔ)上結(jié)合考前輔導(dǎo)班教師的實際教學(xué)經(jīng)驗編寫而成。

全書共分13章,每章章節(jié)開始均設(shè)置有"考核說明"板塊,簡要概括考生需要了解和掌握的內(nèi)容。書中精選歷年真題穿插在知識點的講解中,有利于考生理解知識點。每章結(jié)尾設(shè)置有"應(yīng)試加油站",該板塊分為考頻統(tǒng)計和解題技巧兩部分,以引導(dǎo)考生掌握重點內(nèi)容,提高解題能力和綜合應(yīng)用能力。同時每章還有過關(guān)習(xí)題,方便讀者一點一練,鞏固提高。書后附有兩套模擬試卷并給以詳細的分析與解答,可以讓考生積累考試經(jīng)驗。

本書主要面向參加軟件設(shè)計師考試的應(yīng)試者,同時也可作為高等院校相關(guān)課程的輔導(dǎo)書,以及培訓(xùn)班的教材。

目錄

第1章 計算機系統(tǒng)知識

1.1 計算機系統(tǒng)的基礎(chǔ)知識

1.1.1 計算機系統(tǒng)硬件

1.1.2 中央處理單元

1.1.3 數(shù)據(jù)表示

1.1.4 校驗碼

1.2 計算機體系結(jié)構(gòu)

1.2.1 計算機體系結(jié)構(gòu)的分類

1.2.2 指令系統(tǒng)

1.3 存儲系統(tǒng)

1.3.1 存儲器的層次結(jié)構(gòu)與分類

1.3.2 高速緩存

1.3.3 相聯(lián)存儲器與虛擬存儲器

1.3.4 外存儲器

1.3.5 磁盤陣列技術(shù)

1.4 輸入/輸出技術(shù)

1.4.1 常見的內(nèi)存與接口的編址方式

1.4.2 CPU與外設(shè)之間的數(shù)據(jù)傳送方式

1.5 總線結(jié)構(gòu)

1.6 計算機安全

1.6.1 計算機安全概述

1.6.2 網(wǎng)絡(luò)攻擊手段

1.6.3 病毒防護

1.6.4 防火墻、漏洞掃描與入侵檢測

1.6.5 加密技術(shù)和認證技術(shù)

1.7 性與系統(tǒng)性能評測基礎(chǔ)知識

1.7.1 計算機性

1.7.2 計算機系統(tǒng)的性能評價

1.8 應(yīng)試加油站

1.8.1 考頻統(tǒng)計

1.8.2 解題技巧

1.9 過關(guān)習(xí)題

第2章 程序語言基礎(chǔ)

2.1 程序語言概述

2.1.1 程序設(shè)計語言的基本概念

2.1.2 程序設(shè)計語言的基本成分

2.2 語言處理程序基礎(chǔ)

2.2.1 匯編語言的基本原理

2.2.2 編譯程序的基本原理

2.2.3 解釋程序的基本原理

2.3 文法和有限自動機

2.3.1 文法和語言的形式描述

2.3.2 詞法分析

2.3.3 正規(guī)式與有限自動機之間的轉(zhuǎn)換

2.3.4 詞法分析器的構(gòu)造

2.3.5 語法分析

2.4 應(yīng)試加油站

2.4.1 考頻統(tǒng)計

2.4.2 解題技巧

2.5 過關(guān)習(xí)題

第3章 操作系統(tǒng)

3.1 操作系統(tǒng)基礎(chǔ)知識

3.2 處理機管理

3.2.1 基本概念

3.2.2 進程間的通信

3.2.3 進程調(diào)度

3.2.4 死鎖

3.2.5 線程

3.3 存儲管理

3.3.1 基本概念

3.3.2 分區(qū)存儲管理

3.3.3 分頁存儲管理

3.3.4 分段存儲管理

3.3.5 段頁式存儲管理

3.3.6 虛擬存儲管理

3.4 設(shè)備管理

3.4.1 設(shè)備管理概述

3.4.2 I/O軟件

3.4.3 設(shè)備管理采用的相關(guān)緩沖技術(shù)

3.4.4 磁盤調(diào)度

3.5 文件管理

3.5.1 文件與文件系統(tǒng)

3.5.2 文件的結(jié)構(gòu)和組織

3.5.3 文件目錄

3.5.4 存取方法和存取空間的管理

3.5.5 文件的使用

3.5.6 文件的共享和保護

3.5.7 系統(tǒng)的安全

3.6 應(yīng)試加油站

3.6.1 考頻統(tǒng)計

3.6.2 解題技巧

3.7 過關(guān)習(xí)題

第4章 軟件工程基礎(chǔ)知識

4.1 軟件工程概述

4.1.1 軟件危機

4.1.2 計算機軟件

4.1.3 軟件工程基本原理

4.1.4 軟件生存周期

4.1.5 軟件過程

4.2 軟件過程模型

4.2.1 瀑布模型

4.2.2 增量模型

4.2.3 演化模型

4.2.4 噴泉模型

4.2.5 基于構(gòu)件的開發(fā)模型

4.2.6 形式化方法模型

4.3 軟件開發(fā)方法

4.3.1 結(jié)構(gòu)化方法

4.3.2 Jackson方法

4.3.3 原型方法

4.3.4 面向?qū)ο箝_發(fā)方法

4.3.5 敏捷方法

4.4 軟件工具和軟件開發(fā)環(huán)境

4.4.1 軟件工具

4.4.2 軟件開發(fā)環(huán)境

4.5 軟件項目管理

4.5.1 軟件項目管理的范圍

4.5.2 軟件項目估算

4.5.3 進度管理

4.5.4 軟件項目的組織

4.5.5 軟件質(zhì)量管理

4.5.6 軟件配置管理

4.6 風(fēng)險管理

4.6.1 軟件風(fēng)險

4.6.2 風(fēng)險識別

4.6.3 風(fēng)險預(yù)測

4.6.4 風(fēng)險評估

4.6.5 風(fēng)險控制

4.7 軟件度量

4.7.1 軟件度量分類

4.7.2 軟件復(fù)雜性度量

4.8 應(yīng)試加油站

4.8.1 考頻統(tǒng)計

4.8.2 解題技巧

4.9 過關(guān)習(xí)題

第5章 系統(tǒng)開發(fā)與運行

5.1 系統(tǒng)分析與設(shè)計概述

5.1.1 系統(tǒng)分析概述

5.1.2 系統(tǒng)設(shè)計的基本原理

5.1.3 系統(tǒng)設(shè)計的內(nèi)容和步驟

5.1.4 系統(tǒng)總體結(jié)構(gòu)設(shè)計

5.1.5 系統(tǒng)文檔

5.2 需求分析與需求工程

5.3 結(jié)構(gòu)化分析方法

5.4 結(jié)構(gòu)化設(shè)計方法

5.4.1 結(jié)構(gòu)化設(shè)計的步驟

5.4.2 數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的映射

5.5 Web應(yīng)用系統(tǒng)分析與設(shè)計

5.5.1 WebApp的特性

5.5.2 Web應(yīng)用系統(tǒng)分析模型

5.6 用戶界面設(shè)計

5.7 測試基礎(chǔ)知識

5.7.1 系統(tǒng)測試與調(diào)試

5.7.2 傳統(tǒng)軟件的測試策略

5.7.3 測試方法

5.7.4 調(diào)試

5.7.5 測試Web應(yīng)用系統(tǒng)

5.8 系統(tǒng)運行和維護知識

5.8.1 系統(tǒng)轉(zhuǎn)換

5.8.2 系統(tǒng)維護概述

5.8.3 系統(tǒng)評價

5.9 應(yīng)試加油站

5.9.1 考頻統(tǒng)計

5.9.2 解題技巧

5.10 過關(guān)習(xí)題

第6章 網(wǎng)絡(luò)和多媒體基礎(chǔ)知識

6.1 網(wǎng)絡(luò)概述

6.1.1 計算機網(wǎng)絡(luò)的分類

6.1.2 網(wǎng)絡(luò)的拓撲結(jié)構(gòu)

6.1.3 ISO/OSI網(wǎng)絡(luò)體系結(jié)構(gòu)

6.2 網(wǎng)絡(luò)互連硬件

6.2.1 網(wǎng)絡(luò)互連設(shè)備

6.2.2 網(wǎng)絡(luò)的傳輸介質(zhì)

6.2.3 組建網(wǎng)絡(luò)

6.3 網(wǎng)絡(luò)的協(xié)議與標(biāo)準(zhǔn)

6.3.1 網(wǎng)絡(luò)的標(biāo)準(zhǔn)

6.3.2 局域網(wǎng)協(xié)議

6.3.3 廣域網(wǎng)協(xié)議

6.3.4 TCP/IP協(xié)議簇

6.4 Internet及其應(yīng)用

6.4.1 Internet地址

6.4.2 Internet服務(wù)

6.5 網(wǎng)絡(luò)安全

6.5.1 網(wǎng)絡(luò)的信息安全

6.5.2 防火墻技術(shù)

6.6 多媒體概述

6.6.1 多媒體的基本概念

6.6.2 虛擬現(xiàn)實的基本概念

6.6.3 聲音

6.6.4 圖形和圖像

6.6.5 動畫和視頻

6.7 多媒體網(wǎng)絡(luò)

6.7.1 超文本與超媒體

6.7.2 流媒體

6.8 多媒體計算機系統(tǒng)

6.8.1 多媒體計算機硬件系統(tǒng)

6.8.2 多媒體計算機軟件系統(tǒng)

6.9 應(yīng)試加油站

6.9.1 考頻統(tǒng)計

6.9.2 解題技巧

6.10 過關(guān)習(xí)題

第7章 數(shù)據(jù)庫技術(shù)

7.1 基本概念

7.1.1 數(shù)據(jù)庫系統(tǒng)

7.1.2 數(shù)據(jù)庫管理系統(tǒng)

7.1.3 數(shù)據(jù)庫的三級模式結(jié)構(gòu)

7.1.4 兩級映像

7.2 數(shù)據(jù)模型

7.2.1 數(shù)據(jù)模型的基本概念

7.2.2 E-R模型

7.3 關(guān)系代數(shù)

7.3.1 關(guān)系數(shù)據(jù)庫的基本概念

7.3.2 五種基本的關(guān)系代數(shù)運算

7.3.3 擴展的關(guān)系代數(shù)運算

7.4 關(guān)系數(shù)據(jù)庫SQL簡介

7.4.1 SQL數(shù)據(jù)庫體系結(jié)構(gòu)

7.4.2 SQL數(shù)據(jù)定義

7.4.3 SQL數(shù)據(jù)查詢

7.4.4 SQL數(shù)據(jù)更新

7.4.5 SQL的訪問控制

7.4.6 嵌入式SQL

7.5 關(guān)系數(shù)據(jù)庫的規(guī)范化

7.5.1 函數(shù)依賴

7.5.2 規(guī)范化

7.5.3 模式分解及分解應(yīng)具有的特性

7.6 數(shù)據(jù)庫的控制功能

7.6.1 事務(wù)管理

7.6.2 數(shù)據(jù)庫的備份與恢復(fù)

7.6.3 并發(fā)控制

7.7 數(shù)據(jù)庫的分析與設(shè)計

7.7.1 數(shù)據(jù)庫設(shè)計的步驟

7.7.2 數(shù)據(jù)庫設(shè)計的方法

7.8 應(yīng)試加油站

7.8.1 考頻統(tǒng)計

7.8.2 解題技巧

7.9 過關(guān)習(xí)題

第8章 數(shù)據(jù)結(jié)構(gòu)

8.1 線性結(jié)構(gòu)

8.1.1 線性表

8.1.2 棧和隊列

8.1.3 串

8.2 數(shù)組、矩陣和廣義表

8.2.1 數(shù)組

8.2.2 矩陣

8.2.3 廣義表

8.3 樹

8.3.1 樹的定義

8.3.2 二叉樹

8.4 圖

8.4.1 圖的定義

8.4.2 存儲結(jié)構(gòu)

8.4.3 圖的遍歷

8.4.4 生成樹和最小生成樹

8.4.5 拓撲排序和關(guān)鍵路徑

8.4.6 最短路徑

8.5 查找

8.5.1 查找的基本概念

8.5.2 靜態(tài)查找表

8.5.3 動態(tài)查找表

8.5.4 哈希表及其查找

8.6 排序

8.6.1 排序的基本概念

8.6.2 簡單排序

8.6.3 希爾排序

8.6.4 快速排序

8.6.5 堆排序

8.6.6 歸并排序

8.6.7 基數(shù)排序

8.6.8 內(nèi)部排序方法的比較和選擇

8.6.9 外部排序

8.7 應(yīng)試加油站

8.7.1 考頻統(tǒng)計

8.7.2 解題技巧

8.8 過關(guān)習(xí)題

第9章 算法與設(shè)計

9.1 算法設(shè)計與分析基礎(chǔ)

9.1.1 算法

9.1.2 算法設(shè)計與分析

9.2 分治法

9.2.1 遞歸的概念

9.2.2 分治法的基本思想

9.2.3 典型應(yīng)用:Hanoi塔問題

9.3 動態(tài)規(guī)劃法

9.4 貪心法

9.5 回溯法

9.6 應(yīng)試加油站

9.6.1 考頻統(tǒng)計

9.6.2 解題技巧

9.7 過關(guān)習(xí)題

第10章 面向?qū)ο蠹夹g(shù)

10.1 面向?qū)ο蟮幕靖拍?/p>

10.2 面向?qū)ο蟪绦蛟O(shè)計

10.2.1 面向?qū)ο蟪绦蛟O(shè)計語言

10.2.2 面向?qū)ο蟪绦蛟O(shè)計語言中的OOP機制

10.3 面向?qū)ο箝_發(fā)技術(shù)

10.4 面向?qū)ο蠓治雠c設(shè)計

10.4.1 OOA和OOD法

10.4.2 Booch的OOD法

10.4.3 OMT法

10.5 UML概述

10.5.1 事物

10.5.2 關(guān)系

10.5.3 UML中的圖

10.6 設(shè)計模式

10.6.1 設(shè)計模式的要素

10.6.2 創(chuàng)建型設(shè)計模式

10.6.3 結(jié)構(gòu)型設(shè)計模式

10.6.4 行為設(shè)計模式

10.7 C++程序設(shè)計

10.7.1 類和對象

10.7.2 構(gòu)造函數(shù)和析構(gòu)函數(shù)

10.7.3 繼承與派生

10.7.4 多態(tài)

10.8 Java程序設(shè)計

10.8.1 基本概念

10.8.2 基本語法

10.8.3 程序設(shè)計

10.9 應(yīng)試加油站

10.9.1 考頻統(tǒng)計

10.9.2 解題技巧

10.10 過關(guān)習(xí)題

第11章 標(biāo)準(zhǔn)化和軟件知識產(chǎn)權(quán)基礎(chǔ)

11.1 標(biāo)準(zhǔn)化基礎(chǔ)知識

11.1.1 標(biāo)準(zhǔn)化的基本概念

11.1.2 標(biāo)準(zhǔn)化組織

11.1.3 ISO9000標(biāo)準(zhǔn)簡介

11.1.4 ISO/IEC15504過程評估標(biāo)準(zhǔn)簡介

11.2 知識產(chǎn)權(quán)基礎(chǔ)知識

11.2.1 知識產(chǎn)權(quán)的基本概念

11.2.2 計算機軟件著作權(quán)

11.2.3 計算機軟件的商業(yè)秘密權(quán)

11.2.4 專利權(quán)

11.2.5 商標(biāo)權(quán)

11.2.6 企業(yè)知識產(chǎn)權(quán)的保護

11.3 應(yīng)試加油站

11.3.1 考頻統(tǒng)計

11.3.2 解題技巧

11.4 過關(guān)習(xí)題

第12章 計算機專業(yè)英語

12.1 專業(yè)英語試題分析

12.1.1 軟件工程專業(yè)詞匯

12.1.2 專業(yè)英語試題分析

12.2 應(yīng)試加油站

12.2.1 考頻統(tǒng)計

12.2.2 解題技巧

12.3 過關(guān)習(xí)題

第13章 模擬試卷及參考答案

13.1 模擬試卷

13.1.1 模擬試卷一

13.1.2 模擬試卷二

13.2 模擬試卷參考答案

13.2.1 模擬試卷一參考答案

13.2.2 模擬試卷二參考答案

參考文獻

在線預(yù)覽

第2章

程序語言基礎(chǔ)

本章要點

程序設(shè)計語言的基本成分

匯編語言的基本原理

編譯程序的基本原理

解釋程序的基本原理

文法和語言的形式描述

正規(guī)式

有限狀態(tài)機

2.1 程序語言概述

考核說明:本節(jié)主要介紹程序設(shè)計語言的定義、發(fā)展和分類,程序設(shè)計語言的基本成分,后者是重點,經(jīng)常會考到,其中數(shù)據(jù)成分和函數(shù)是考核要點,要理解掌握。

2.1.1 程序設(shè)計語言的基本概念

1. 低級語言和高級語言

1) 低級語言

通常稱機器語言和匯編語言為低級語言。機器語言是指用0、1字符串組成的機器指令序列,是最基本的計算機語言;匯編語言是指用符號表示指令的語言。匯編語言仍然是一種面向機器的語言。

2) 高級語言

高級語言是從人類的邏輯思維角度出發(fā)、面向各類應(yīng)用的程序語言,抽象程度大大提高。這類語言與人們使用的自然語言比較接近,大大提高了程序設(shè)計的效率。常見的C、C++、Java、PHP等都是高級語言。

2. 編譯程序和解釋程序

用某種高級語言或匯編語言編寫的程序稱為源程序,源程序不能直接在計算機上執(zhí)行。如果源程序是使用匯編語言編寫的,則需要一個稱為匯編程序的翻譯程序?qū)⑵浞g成目標(biāo)程序后才能執(zhí)行。如果源程序是使用某種高級語言編寫的,則需要相應(yīng)的解釋程序或編譯程序?qū)ζ溥M行翻譯,然后才能在機器上運行。

注意:在解釋方式下,翻譯源程序時不生成獨立的目標(biāo)程序,而編譯器則會將源程序翻譯成獨立保存的目標(biāo)程序。

3. 程序設(shè)計語言的定義

(1) 語法:由程序設(shè)計語言的基本符號組成程序中的各個語法成分(包括程序)的一組規(guī)則,其中由基本符號構(gòu)成符號(單詞)的書寫規(guī)則稱為詞法規(guī)則,由符號(單詞)構(gòu)成語法成分的規(guī)則稱為語法規(guī)則。程序語言的語法可通過形式語言進行描述。

(2) 語義:程序語言中按語法規(guī)則構(gòu)成的各個語法成分的含義,可分為靜態(tài)語義和動態(tài)語義。

(3) 語用:表示構(gòu)成語言的各個記號和使用者的關(guān)系,涉及符號的來源、使用和影響。

(4) 語境:理解和實現(xiàn)程序設(shè)計語言的環(huán)境,包括編譯環(huán)境和運行環(huán)境。

4. 程序設(shè)計語言的發(fā)展

FORTRAN是及時個被廣泛用來進行科學(xué)計算的高級語言。

ALGOL60是一個分程序結(jié)構(gòu)的語言,它采用巴科斯范式(BNF)來描述語言的語法。

COBOL是一種面向事務(wù)處理的高級語言,主要用于情報檢索、商業(yè)數(shù)據(jù)處理等。

Pascal是一種結(jié)構(gòu)化程序設(shè)計語言,它從ALGOL60衍生而來。

C語言是一種通用程序設(shè)計語言,允許程序員直接訪問操作系統(tǒng)和底層硬件,因此在系統(tǒng)級應(yīng)用和實時處理應(yīng)用的開發(fā)中成為主要語言。

C++是在C語言的基礎(chǔ)上發(fā)展起來的,增加了類機制,成為面向?qū)ο蟮某绦蛟O(shè)計語言。

Java的初始用途是開發(fā)網(wǎng)絡(luò)瀏覽器的小應(yīng)用程序,目前已廣泛應(yīng)用于個人電腦(PC)、數(shù)據(jù)中心、游戲控制臺、移動電話和互聯(lián)網(wǎng)等。

PHP是一種在服務(wù)器端執(zhí)行的、嵌入HTML文檔的腳本語言,可以快速地執(zhí)行動態(tài)網(wǎng)頁,其語法風(fēng)格類似于C語言。

Python是一種面向?qū)ο蟮慕忉屝统绦蛟O(shè)計語言,可用于編寫?yīng)毩⒊绦颉⒖焖倌_本和復(fù)雜應(yīng)用的原型。

Delphi是一種可視化開發(fā)工具,主要特性是基于窗體和面向?qū)ο蟮姆椒ā⒏咚俚木幾g器、強大的數(shù)據(jù)庫支持、與Windows編程緊密結(jié)合以及成熟的組件技術(shù)。

5. 程序設(shè)計語言的分類

1) 命令式程序設(shè)計語言

命令式程序設(shè)計語言是基于動作的語言,在這種語言中,計算被看作動作的序列。命令式語言族開始于FORTRAN、Pascal和C語言,體現(xiàn)了命令式程序設(shè)計的關(guān)鍵思想。

2) 面向?qū)ο蟮某绦蛟O(shè)計語言

C++、Java和Smalltalk是面向?qū)ο蟪绦蛟O(shè)計語言的代表。

3) 函數(shù)式程序設(shè)計語言

函數(shù)式程序設(shè)計語言是一類以-演算為基礎(chǔ)的語言。該語言的代表是LISP語言,其中大量使用了遞歸。

4) 邏輯型程序設(shè)計語言

邏輯型程序設(shè)計語言是一類以形式邏輯為基礎(chǔ)的語言。該語言的代表是建立在關(guān)系理論和一階謂詞理論基礎(chǔ)上的Prolog語言。

真題鏈接

[例2-1]可用于編寫?yīng)毩⒊绦蚝涂焖倌_本的語言是 (20) 。(2012年11月真題20)

(20) A.Python B.Prolog C.Java D.C#

[解析]Python是一種面向?qū)ο蟮慕忉屝统绦蛟O(shè)計語言,可用于編寫?yīng)毩⒊绦?、快速腳本和復(fù)雜應(yīng)用的原型。Python也是一種腳本語言,它支持對操作系統(tǒng)底層的訪問。

Prolog是一種邏輯型語言。Prolog程序是一系列事實、數(shù)據(jù)對象或事實間的具體關(guān)系和規(guī)則的集合。Prolog有很強的推理功能,適用于書寫自動定理證明、專家系統(tǒng)、自然語言理解等問題的程序。

Java是一種面向?qū)ο蟮某绦蛟O(shè)計語言,能開發(fā)應(yīng)用在Internet上且具有軟、硬件獨立性和交互能力的程序。Java可以一次編寫而到處運行。

C#是微軟公司的一種面向?qū)ο蟮?、運行于.NET Framework(框架)之上的高級程序設(shè)計語言。C#看起來與Java有著驚人的相似:它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET Windows網(wǎng)絡(luò)框架的主角。

[答案]A

2.1.2 程序設(shè)計語言的基本成分

1. 數(shù)據(jù)成分

程序語言的數(shù)據(jù)成分是指一種程序語言的數(shù)據(jù)類型。

1) 常量和變量

按照程序運行時數(shù)據(jù)的值能否改變,將數(shù)據(jù)分為常量和變量。程序中的數(shù)據(jù)對象可以具有左值和(或)右值,左值是指存儲單元(或地址、容器),右值是指具體值(或內(nèi)容)。變量具有左值和右值,在程序運行過程中其右值可以改變;常量只有右值,在程序運行過程中其右值不能改變。

2) 全局量和局部量

按數(shù)據(jù)的作用域范圍,數(shù)據(jù)可分為全局量和局部量。系統(tǒng)為全局變量分配的存儲空間在程序運行的過程中一般是不改變的,而為局部變量分配的存儲單元是動態(tài)改變的。

3) 數(shù)據(jù)類型

按照數(shù)據(jù)組織形式的不同可將數(shù)據(jù)分為基本類型、用戶定義類型、構(gòu)造類型及其他類型。C(C++)的數(shù)據(jù)類型如下所示。

基本類型:整型(int)、字符型(char)、實型(float、double)和布爾型(bool)。

特殊類型:空類型(void)。

用戶定義類型:枚舉類型(enum)。

構(gòu)造類型:數(shù)組、結(jié)構(gòu)和聯(lián)合。

指針類型:type 。

抽象數(shù)據(jù)類型:類類型。

其中,布爾類型和類類型是C++在C語言的基礎(chǔ)上擴充的。

2. 運算成分

程序語言的運算成分是指允許使用的運算符號及運算規(guī)則。大多數(shù)高級程序語言的基本運算可以分成算術(shù)運算、關(guān)系運算和邏輯運算,有些語言還提供位運算。運算符號的使用與數(shù)據(jù)類型密切相關(guān)。為了確保運算結(jié)果的性,運算符號要規(guī)定優(yōu)先級和結(jié)合性,必要時還要使用圓括號。

3. 控制成分

控制成分用于指明語言允許表述的控制結(jié)構(gòu),程序員使用控制成分來構(gòu)造程序中的控制邏輯。

1) 順序結(jié)構(gòu)

在順序結(jié)構(gòu)中,計算過程從所描述的及時個操作開始,按順序依次執(zhí)行后續(xù)的操作,直到執(zhí)行完序列的一個操作。順序結(jié)構(gòu)內(nèi)也可以包含其他控制結(jié)構(gòu)。

2) 選擇結(jié)構(gòu)

選擇結(jié)構(gòu)提供了在兩種或多種分支中選擇執(zhí)行其中一個分支的邏輯。基本的選擇結(jié)構(gòu)是指定一個條件P,然后根據(jù)條件的成立與否決定控制流走計算A還是走計算B,從兩個分支中選擇一個執(zhí)行。

3) 循環(huán)結(jié)構(gòu)

循環(huán)結(jié)構(gòu)描述了重復(fù)計算的過程,通常包括三個部分:初始化、需要重復(fù)計算的部分和重復(fù)的條件。其中初始化部分有時在控制的邏輯結(jié)構(gòu)中不進行顯式的表示。循環(huán)結(jié)構(gòu)主要有兩種形式:while型重復(fù)結(jié)構(gòu)和do-while型重復(fù)結(jié)構(gòu)。

4. C(C++)語言提供的控制語句

C(C++)語言提供的控制語句如下。

(1) 復(fù)合語句。復(fù)合語句是一系列用"{"和"}"括起來的聲明和語句,其主要作用是將多條語句組成一個可執(zhí)行單元。復(fù)合語句是一個整體。

(2) if語句和switch語句。這兩種語句用于實現(xiàn)選擇結(jié)構(gòu)。

if語句實現(xiàn)的是雙分支的選擇結(jié)構(gòu)。

switch語句描述了多分支的選擇結(jié)構(gòu)。

(3) 循環(huán)語句。C(C++)語言提供了三種形式的循環(huán)語句用于描述循環(huán)計算的控制結(jié)構(gòu)。

while語句。

do-while語句。

for語句。

5. 函數(shù)

函數(shù)是程序模塊的主要成分,它是一段具有獨立功能的程序。函數(shù)的使用涉及三個概念:函數(shù)定義、函數(shù)聲明和函數(shù)調(diào)用。

(1) 函數(shù)定義:包括函數(shù)首部和函數(shù)體兩個部分。函數(shù)的定義描述了函數(shù)做什么和怎么做。

(2) 函數(shù)聲明:函數(shù)應(yīng)該先聲明后引用。函數(shù)聲明定義了函數(shù)原型。聲明函數(shù)原型的目的在于告訴編譯器傳遞給函數(shù)的參數(shù)個數(shù)、類型以及函數(shù)返回值的類型,參數(shù)表中僅需要依次列出函數(shù)定義中的參數(shù)的類型。編譯器可以通過函數(shù)原型檢查源程序中對函數(shù)的調(diào)用是否正確。

(3) 函數(shù)調(diào)用:當(dāng)需要在一個函數(shù)(稱為主調(diào)函數(shù))中使用另一個函數(shù)(稱為被調(diào)函數(shù))實現(xiàn)的功能時,便以函數(shù)名字進行調(diào)用,稱為函數(shù)調(diào)用。調(diào)用函數(shù)和被調(diào)用函數(shù)之間交換信息的方法主要有兩種:一種是由被調(diào)用函數(shù)把返回值返回給主調(diào)函數(shù),另一種是通過參數(shù)帶回信息。函數(shù)調(diào)用時實參和形參之間交換信息的方法有傳值調(diào)用和引用調(diào)用兩種。

傳值調(diào)用。若實現(xiàn)函數(shù)調(diào)用時實參向形式參數(shù)傳遞相應(yīng)類型的值(副本),則稱為傳值調(diào)用。這種方式下形式參數(shù)不能向?qū)嶋H參數(shù)傳遞信息。在C語言中,要實現(xiàn)被調(diào)用函數(shù)對實際參數(shù)的修改,必須用指針作形參。即調(diào)用時需要先對實參進行取地址運算,然后將實參的地址傳遞給指針形參,本質(zhì)上仍屬于傳值調(diào)用。這種方式實現(xiàn)了間接內(nèi)存訪問。

引用調(diào)用。引用是C++中增加的數(shù)據(jù)類型,當(dāng)形式參數(shù)為引用類型時,形參名實際上是實參的別名,函數(shù)中對形參的訪問和修改實際上就是針對相應(yīng)實際參數(shù)所做的訪問和改變。

真題鏈接

[例2-2]弱類型語言(動態(tài)類型語言)是指不需要進行變量/對象類型聲明的語言。 (50) 屬于弱類型語言。(2013年11月真題50)

(50) A.Java B.C/C++ C.Python D.C#

[解析]根據(jù)定義可知Java、C/C++、C#都需要進行變量/對象聲明,所以說是強類型語言。而Python不需要,它屬于弱類型語言。

[答案]C

[例2-3]程序運行過程中常使用參數(shù)在函數(shù)(過程)間傳遞信息,引用調(diào)用傳遞的是實參的 (20) 。(2014年5月真題21)

(20) A.地址 B.類型 C.名稱 D.值

[解析]引用就是某一變量(目標(biāo))的一個別名,對引用的操作與對變量直接操作一樣。表示該引用名是目標(biāo)變量名的一個別名。

[答案]C

2.2 語言處理程序基礎(chǔ)

考核說明:本節(jié)主要介紹匯編語言、編譯程序和解釋程序的基本原理,編譯程序部分經(jīng)??嫉?,是重點也是難點,要能透徹理解。

2.2.1 匯編語言的基本原理

1. 匯編語言

匯編語言是為特定的計算機或計算機系統(tǒng)設(shè)計的面向機器的符號化的程序設(shè)計語言。用匯編語言編寫的程序稱為匯編語言源程序。

匯編語言源程序由若干條語句組成。一個程序中可以有三類語句:指令語句、偽指令語句和宏指令語句。

(1) 指令語句:又稱為機器指令語句,匯編后能產(chǎn)生相應(yīng)的機器代碼,被CPU直接識別并執(zhí)行相應(yīng)的操作。指令語句可分為傳送指令、算術(shù)運算指令、邏輯運算指令、移位指令、轉(zhuǎn)移指令和處理機控制指令等。

(2) 偽指令語句:指示匯編程序在對源程序進行匯編時完成某些工作。與指令語句的區(qū)別是:偽指令語句經(jīng)匯編后不產(chǎn)生機器代碼,另外,偽指令語句所指示的操作是在源程序被匯編時完成的,而指令語句的操作必須在程序運行時完成。

(3) 宏指令語句:將多次重復(fù)使用的程序段定義為宏。宏的定義必須按照相應(yīng)的規(guī)定進行,每個宏都有相應(yīng)的宏名。

2. 匯編程序

匯編程序的功能是將用匯編語言編寫的源程序翻譯成機器指令程序。它一般至少需要兩次掃描源程序才能完成翻譯過程。及時次掃描的主要工作是定義符號的值并創(chuàng)建一個符號表(ST);第二次掃描的任務(wù)是產(chǎn)生目標(biāo)程序。除了使用前一次掃描所產(chǎn)生的符號表(ST)外,還要使用機器指令表(MOT2)。在第二次掃描過程中,可執(zhí)行匯編語句應(yīng)被翻譯成對應(yīng)的二進制代碼機器指令。這一過程涉及兩個方面的工作:一是把機器指令助記符轉(zhuǎn)換成二進制機器指令操作碼,這可通過查找MOT2來實現(xiàn);二是求出操作數(shù)區(qū)各操作的值(用二進制表示)。

2.2.2 編譯程序的基本原理

編譯程序的功能是把用高級語言書寫的源程序翻譯成與之等價的目標(biāo)程序。編譯過程劃分成詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化和目標(biāo)代碼生成六個階段,實際的編譯器可能會將其中的某些階段結(jié)合在一起進行處理。

1. 詞法分析階段

詞法分析階段的任務(wù)是對源程序從前到后(從左到右)逐個字符進行掃描,從中識別出一個個"單詞"符號。"單詞"符號是程序設(shè)計語言的基本語法單位,如關(guān)鍵字、標(biāo)識符等。詞法分析程序輸出的"單詞"常常采用二元組的方式,即單詞類別和單詞自身的值。

2. 語法分析階段

語法分析的任務(wù)是在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則將單詞符號序列分解成各類語法單位,如"表達式"、"語句"和"程序"等。詞法分析和語法分析本質(zhì)上都是對源程序的結(jié)構(gòu)進行分析。

過程(函數(shù))說明和過程(函數(shù))調(diào)用是程序中一種常見的語法結(jié)構(gòu)。過程說明和調(diào)用語句的翻譯,有賴于形式參數(shù)和實際參數(shù)結(jié)合的方式以及數(shù)據(jù)空間的分配方式。需要分配存儲空間的對象有基本數(shù)據(jù)類型、結(jié)構(gòu)化數(shù)據(jù)類型和連接數(shù)據(jù)(如返回地址、參數(shù)等)。分配的依據(jù)是名字的作用域和生存期的定義規(guī)則。分配的策略有靜態(tài)存儲分配和動態(tài)存儲分配兩大類。

如果在編譯時就能確定目標(biāo)程序運行時所需要的全部空間大小,則在編譯時就可以安排好目標(biāo)程序運行時的全部數(shù)據(jù)空間,并確定每個數(shù)據(jù)對象的存儲位置。這種分配策略為靜態(tài)存儲分配。

如果一個程序語言允許遞歸過程和可變數(shù)據(jù)結(jié)構(gòu),那么就需要采用動態(tài)存儲分配技術(shù)。動態(tài)存儲分配策略的實現(xiàn)有棧分配和堆分配兩種方式。

3. 語義分析階段

語義分析階段主要是審查源程序是否存在語義錯誤,并收集類型信息供后面的代碼生成階段使用,只有語法和語義都正確的源程序才能翻譯成正確的目標(biāo)代碼。語義分析的一個主要工作是進行類型分析和檢查。

描述程序語義的形式化方法主要有屬性文法、公理語義、操作語義和指稱語義等,其中屬性文法是對上下文無關(guān)文法的擴充。目前廣泛使用的靜態(tài)語義分析方法是語法制導(dǎo)翻譯,其基本思想是將語言結(jié)構(gòu)的語義以屬性的形式賦予代表此結(jié)構(gòu)的文法符號,而屬性值的計算以語義規(guī)則的形式賦予文法的產(chǎn)生式。在語法分析的推導(dǎo)或歸納的步驟中,通過語義規(guī)則實現(xiàn)對屬性值的計算,以達到對語義的處理。

4. 中間代碼生成階段

中間代碼是一種結(jié)構(gòu)簡單且含義明確的記號系統(tǒng),可以有多種形式。中間代碼生成階段的工作就是根據(jù)語義分析的輸出生成中間代碼。語義分析和中間代碼生成所依據(jù)的是語言的語義規(guī)則。

實際上,中間代碼起著編譯器前端和后端分水嶺的作用,使用中間代碼有利于提高編譯程序的可移植性。常用的中間代碼有后綴式、三元式、四元式和樹等形狀。

后綴式:把運算符寫在運算對象的后面。例如,ab的后綴式為ab。這種表示法的優(yōu)點是根據(jù)運算對象和運算符的出現(xiàn)次序進行計算,不需要使用括號,也便于用棧實現(xiàn)求值。

三元式:由運算符OP、及時運算對象ARG1和第二運算對象ARG2組成。例如,x:=a+b的三元式為:① (+, a, b) ② (:=, ①, x)。

四元式:組成成分為運算符OP、及時運算對象ARG1、第二運算對象ARG2和運算結(jié)果RESULT。例如,x:=a+b的四元式為:① (+, a, b, t) ② (:=, t, _, x)。

樹:例如,表達式x:=(a+b)(c-d)可以表示為圖2-1所示的結(jié)構(gòu)。

圖2-1 樹型結(jié)構(gòu)

5. 代碼優(yōu)化階段

代碼優(yōu)化階段的任務(wù)是對前階段產(chǎn)生的中間代碼進行變換或進行改造,目的是使生成的目標(biāo)代碼更為高效,即省時間和省空間。優(yōu)化過程可以在中間代碼生成階段進行,也可以在目標(biāo)代碼生成階段進行。

6. 目標(biāo)代碼生成階段

目標(biāo)代碼生成階段的任務(wù)是把中間代碼變換成特定機器上的指令代碼、可重定位的指令代碼或匯編指令代碼。這是編譯的階段,它的工作與具體的機器密切相關(guān)。

7. 符號表管理

符號表的作用是記錄源程序中各個符號的必要信息,以輔助語義的正確性檢查和代碼生成。符號表的建立可以始于詞法分析階段,也可以放到語法分析階段,但符號表的使用有時會延續(xù)到目標(biāo)代碼的運行階段。

8. 出錯處理

用戶編寫的源程序中的錯誤大致可分為靜態(tài)錯誤和動態(tài)錯誤。動態(tài)錯誤也稱動態(tài)語義錯誤,指程序中包含的邏輯錯誤。靜態(tài)錯誤是指編譯階段發(fā)現(xiàn)的程序錯誤,可分為語法錯誤和靜態(tài)語義錯誤。出錯處理程序的任務(wù)包括檢查錯誤、報告出錯信息、排錯、恢復(fù)編譯工作。

真題鏈接

[例2-4]將高級語言源程序翻譯成機器語言程序的過程,常引入中間代碼。以下關(guān)于中間代碼的敘述中,不正確的是 (22) 。(2014年11月真題22)

(22) A.中間代碼不依賴于具體的機器

B. 使用中間代碼可提高編譯程序的可移植性

C.中間代碼可以用樹或圖表示

D.

……

網(wǎng)友評論(不代表本站觀點)

來自無昵稱**的評論:

物流很快 挺好的

2015-09-10 14:21:40
來自無昵稱**的評論:

不錯的

2015-09-21 19:34:42
來自無昵稱**的評論:

書不錯,優(yōu)惠了一些,也很便宜。

2015-10-30 17:00:53
來自冰緣一**的評論:

書不錯,內(nèi)容很豐富

2016-02-20 18:22:44
來自liuyun9**的評論:

挺好的,軟四精簡版。

2016-03-18 08:20:29
來自無昵稱**的評論:

怎么感覺像盜版的封皮不如以前的好,紙很薄

2016-04-13 14:03:03
來自無昵稱**的評論:

可以,就是派送太慢了

2016-08-07 12:00:11
來自無昵稱**的評論:

很不錯的一本書,當(dāng)年的教材又到手了。

2016-08-17 21:21:32
來自無昵稱**的評論:

還不錯的

2016-09-08 09:01:04
來自無昵稱**的評論:

和我買的另一本一樣,知識點都不詳細。

2016-09-23 10:53:00
來自無昵稱**的評論:

不錯

2017-01-02 19:05:16
來自無昵稱**的評論:

這本書不錯。

2017-02-07 16:02:39
來自匿名用**的評論:

感覺不錯……

2017-02-18 10:01:13
來自蜘***(**的評論:

能看就行唄

2017-02-25 08:14:18
來自周***(**的評論:

買了準(zhǔn)備考試

2017-03-12 13:33:47
來自s***x(**的評論:

書挺不錯的,下次應(yīng)該還會購買。

2017-03-29 09:58:49
來自匿名用**的評論:

整體感覺不錯哦

2017-07-13 19:46:12
來自桐靈人**的評論:

內(nèi)容不錯,寫得還可以,通俗易懂,快遞滿分。

2017-08-27 23:52:04
來自shijun7**的評論:

軟考必備。

2017-10-24 10:29:01

免責(zé)聲明

更多出版社