1.1 瞭解計算機硬件和軟件
1.1.1 計算機和信息技術的發展
1.信息與信息技術
(1)信息是以適合於通信、存儲或處理的形式來表示的知識或消息。
(2)信息的特徵:可識別性、可存儲性、可擴充性、可壓縮性、可傳遞性、可轉換性、特定範圍有效性。
(3)信息技術(InformationTechnology,IT)是主要用於管理和處理信息所採用的各種技術的總稱。
2.計算機的數學模型
現代計算機的基礎是抽象的圖靈機,它是把人在計算時所做的工作分解成簡單的規定動作,這樣就把人的工作機械化。
3.計算機的基本結構和工作方式
至今計算機採用的是馮·諾依曼體系結構。馮·諾依曼理論包括:
(1)計算機硬件設備由存儲器、中央處理器、控制器、輸入設備和輸出設備五部分組成。
(2)存儲程序思想:把計算機過程描述爲由許多命令按一定順序組成的程序,然後把程序和數據一起輸入計算機,計算機對已存入的程序和數據處理後,輸出結果。
4.第一臺計算機
第一臺計算機叫埃尼阿克(ENIAC,電子數值積分計算機)於1946年2月在美國賓夕法尼亞大學研製成功。
5.計算機的發展階段
習慣上將計算機的發展劃爲四個階段:電子管、晶體管、中小規模集成電路、大規模/超大規模集成電路。
6.計算機的發展趨勢
計算機的發展趨勢可以歸納爲:微型化、巨型化、智能化、多媒體和網絡化。
7.計算機的主要特點
電子計算機是一種以高速進行操作、具有內部存儲能力、有程序控制操作過程的自動電子裝置。計算機的主要功能是可以實現高速運算。
8.計算機的應用領域
計算機的主要應用領域有:科學計算(或數值計算)、數據處理、過程控制、輔助工程(辦公自動化、生產自動化、數據庫應用、網絡應用、計算機模擬、計算機輔助教育)、人工智能(機器人、專家系統、模式識別、智能檢索)。
1.1.2 計算機硬件知識
1.計算機系統組成
計算機是由硬件系統和軟件系統組成的。
2.計算機硬件系統
計算機硬件系統包括中央處理器、存儲器、輸入設備(鍵盤、鼠標等)和輸出設備(顯示器、打印機)。從理論上講,中央處理(即CPU,包括運算器、控制器)和主存(內存儲器)組成主機。
主機是計算機硬件系統中最基本的部分。存儲器有內存儲器和外存儲器之分,內存儲器包括只讀存儲器(ROM)和隨機存儲器(RAM)等;外存儲器包括軟盤存儲器(現在基本上不用)、硬盤存儲器、磁帶存儲器、光盤存儲器、U盤等一系列移動存儲設備等。輸入設備包括鍵盤、鼠標、掃描儀、麥克風、手寫筆、攝像頭等。輸出設備包括顯示器、打印機和繪圖儀、音響等。如圖:
1.1.3計算機軟件知識
計算機軟件分爲系統軟件和應用軟件。如圖:
1.2 程序設計語言的發展
程序設計語言一般分爲機器語言、彙編語言和高級語言三大類。如圖:
1.3 從C到C++
C語言是1972年由美國貝爾實驗室的D.M.Ritchie研製成功。C語言特點:功能豐富、表達能力強、使用靈活方便、應用面廣、目標程序效率高、可移植性好。C語言是結構化和模塊化的語言,它是基於過程的。爲解決軟件設計危機,在20實際80年代提出了面向對象的程序設計(OOP)。爲兼容C,C++應運而生,C++保留了C語言原有的優點,增加了面向對象機制。C++對C的“增強”,表現在兩個方面:
(1)在原來基礎於過程的機制基礎上,對C語言的功能做了不少擴充。
(2)增加了面向對象的機制。
1.4 最簡單的C++程序
例1.1 輸出一行字符:“This is a C++program.”。
#include <iostream> //包含頭文件iostream
using namespace std; //使用C++的命名空間std
int main()
{
cout<<"This is a C++ Program.";
return 0;
}
屏幕輸出:
This is a C++ program.
注:
(1)main代表“主函數”,每一個C++程序都必須有一個main函數,main函數稱爲程序入口。main前面的int的作用是聲明函數類型爲整型,return 0作爲主函數的整型返回值。
(2)函數體是由大括號{ }括起來的。cout是C++用於輸出的語句,稱爲輸出流對象。
(3)“#include<iostream>”是C++的一個預處理命令,表示程序中引入頭文件iostream。
(4)“using namespace std;”C++標準庫中的類和函數是在命名空間std中聲明的,因此需要使用命名空間std。
(5)“//”表示單行註釋。註釋不轉換成目標代碼,對運行不起作用。
例1.2 求a和b兩個數之和。
//求兩數之和 (本行是註釋行)
#include <iostream> //預處理命令
using namespace std; //使用命名空間std
int main() //主函數首部
{ //函數體開始
int a,b,sum; //定義變量
cin>>a>>b; //輸入語句
sum=a+b; //賦值語句
cout<<"a+b="<<sum<<endl; //輸出語句
return 0; //如果程序正常結束,返回一個零值
} //函數結束
輸入:
123 456
輸出:
a+b=579
例1.3 給兩個數x和y,求兩數中的大者。
在本例中包含兩個函數。
#include <iostream> //預處理命令
using namespace std; //使用命名空間std
int max(int x,int y) //定義max函數,函數值爲整型,形式參數x,y爲整型
{ //max函數體開始
int z; //變量聲明,定義本函數中用到的變量爲整型
if(x>y) z=x; //if語句,如果x>y,則將x的值賦給z
else z=y; //否則,將y的值賦給z
return (z); //將z的值返回,通過max帶回調用處
} //max函數結束
int main() //主函數
{ //函數體開始
int a,b,m; //變量聲明
cin>>a>>b; //輸入變量a和b的值
m=max(a,b); //調用max函數,將得到的值賦給m
cout<<"max="<<m<<'\n'; //輸出大數m的值
return 0; //如果程序正常結束,返回一個零值
} //主函數結束
輸入:
18 25
輸出:
max=25
注:輸入的兩個數據間用一個或多個空格或回車間隔,不能以逗號或其他符合間隔。
1.5 C++程序的構成和書寫形式
(1)一個C++程序可以由一個程序單位或多個程序單位構成。
(2)在一個程序單位中,可以包括3個部分:預處理命令、全局聲明部分、函數。
(3)一個函數由兩部分組成:函數首部、函數體。函數體一般包括:局部聲明部分、執行部分。
(4)語句包括兩類:聲明語句是非執行語句、執行語句,用來實現用戶指定的操作。
(5)一個C++程序總是從main函數開始執行的。
(6)類(class)是C++新增加的重要數據類型。
(7)C++程序書寫格式自由,提倡一行寫一個語句。
(8)給程序增加必要的註釋,增加程序可讀性。註釋分單行註釋“//”和多行註釋“/*····*/”。
1.6 C++程序的編寫和實現。
1.用C++語言編寫程序
所謂程序,就是一組計算機系統能識別和執行的指令。用高級語言編寫的程序屬於“源程序(source program)”,C++的源程序是以.cpp作爲後綴,C是以.c作爲後綴。
2.對源程序進行編譯
從根本上來說,計算機只能識別和執行由0和1組成的二進制的指令,而不能識別和執行用高級語言寫的指令,所以必須將源程序使用“編譯器”(complier)翻譯成二進制形式的“目標程序(objectprogram)”。
編譯是以源程序文件爲單位分別編譯的,每一個程序單位組成一個源程序文件,如果有多個程序單位,系統就分別把它們編譯成多個目標程序(在windows系統中,目標程序以.obj作爲後綴(object的縮寫),在NUIX系統中,以.o作爲後綴)。編譯的作用是對源程序進行詞法檢查和語法檢查。一般編譯系統給出的出錯信息分爲兩種,一種是錯誤(error);一種是警告(warning),指一些不影響運行的輕微的錯誤。凡是檢查出error類錯誤,就不生成目標程序,必須改正後重新編譯。
3.將目標文件連接
編譯通過後,需要用系統提供的“連接程序(linker)”將一個程序的所有目標程序和系統的庫文件以及系統提供的其他信息連接起來,最終形成一個可執行的二進制文件,在windows系統中,其後綴是.exe,是可以直接執行的。
4.運行程序
運行最終形成的可執行的二進制文件,得到運行結果。
5.分析運行結果
運行結果不正確,應檢查程序或算法是否有問題。