中南大學C++第一課-概述課件_第1頁
中南大學C++第一課-概述課件_第2頁
中南大學C++第一課-概述課件_第3頁
中南大學C++第一課-概述課件_第4頁
中南大學C++第一課-概述課件_第5頁
已閱讀5頁,還剩78頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、6/9/202211主講主講 中南大學軟件學院中南大學軟件學院 譚長庚譚長庚2015.92015.96/9/20222Chapter 1 6/9/20223 Some Questions1用過計算機?用過計算機?2都用過什么軟件(程序)?都用過什么軟件(程序)?3了解計算機信息的表示(補碼)了解計算機信息的表示(補碼),數制?數制?4程序是?學過編程?程序設計有多難?程序是?學過編程?程序設計有多難?6/9/20224第一個程序:第一個程序:Hello C+#include ”stdafx.h”#include int main() std:coutHello C+; system( paus

2、e ); return 0;如何學習程序設計語言如何學習程序設計語言1.1.模仿模仿2.2.多讀、寫多讀、寫3.3.提高自主學習的能力提高自主學習的能力 * * 主動性主動性 * * 發現問題發現問題 * * 解決問題:解決問題: * * 方法方法: :網、討論、試網、討論、試 * * 表達(程序表達(程序, ,算法描述)算法描述)模仿輸出模仿輸出“Welcome to CSU”輸出結果:輸出結果:Hello C+6/9/20225擴展程序:求圓的面積擴展程序:求圓的面積,會求嗎?會求嗎?#include using namespace std;int main() double radius

3、; double area; /Step 1: Read in radius-輸入輸入 cinradius; /Step 2:Compute area-處理處理 area = radius*radius*3.14; /Step 3:Display the area-輸出輸出 cout The area is ; cout area endl;輸入輸入處理處理輸出結果輸出結果6/9/20226求長方形的面積:輸入兩條邊到求長方形的面積:輸入兩條邊到a,b,面積送,面積送s#include using namespace std;int main() double a,b; double ; ci

4、na; /Step 1: Read in a ; / : Read in b ; /Step 2:Compute area cout x-y=-00000011X-Y=-3求補運算 :將一個補碼連同符號位一起,按位求反、末位加一將一個補碼連同符號位一起,按位求反、末位加一求真值:求真值: 一個負數的補碼再求補一個負數的補碼再求補= =該數正數的原碼(該數正數的原碼(補上負號就得負數的真值補上負號就得負數的真值)結果為補碼結果為補碼6/9/2022411.3.6 非數值信息的表示非數值信息的表示n西文字符:西文字符:nASCII碼:用7位二進制數表示一個字符,最多可以表示27=128個字符nEB

5、CDIC碼:用8位二進制數表示一個字符,最多可以表示28=256個字符n漢字:應用較為廣泛的是國家標準信息交換用漢字編碼(GB2312-80標準),簡稱國標碼。是二字節碼,用二個七位二進制數編碼表示一個漢字。nUnicode:2字節字符編碼,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。1990年開始研發,1994年正式公布。6/9/2022421.3.7 十進制數的十進制數的BCD碼表示碼表示nBCD(Binary Coded Decimal)碼是十進制數的另)碼是十進制數的另一種二進制編碼形式。它有利于用二進制來精確表示一種二進制編碼

6、形式。它有利于用二進制來精確表示十進制數。十進制數。nBCD碼有多種形式,常用的是碼有多種形式,常用的是8421碼,每一位十進碼,每一位十進數碼用四位二進數碼表示,不允許出現數碼用四位二進數碼表示,不允許出現10101111四種組合。四種組合。0 000050101100001 00001 000160110 110001 00012 001070111120001 00103 001181000 1230001 0010 00114 01009100112340001 0010 0011 0100nBCD碼常采用壓縮形式存貯:一個字節存放二位碼常采用壓縮形式存貯:一個字節存放二位BCD碼。碼

7、。6/9/2022431.4 程序設計語言 n程序設計的結果必然要用一種能被計算機程序設計的結果必然要用一種能被計算機接受的語言表示出來,即編程實現接受的語言表示出來,即編程實現(Coding)。)。n根據計算機指令系統和人們解決問題所采根據計算機指令系統和人們解決問題所采用的描述語言(如:數學語言)的接近程用的描述語言(如:數學語言)的接近程度,常常把程序語言分為:度,常常把程序語言分為:n 低級語言n 高級語言 n通常所講的通常所講的程序設計語言程序設計語言往往指的是高級往往指的是高級語言。語言。6/9/2022441.低級語言和高級語言n低級語言低級語言:是指特定計算機能夠直接理解的語言

8、:是指特定計算機能夠直接理解的語言(或與之直接對應的語言):(或與之直接對應的語言):n機器語言:采用指令編碼和數據的存儲位置來表示操作以及操作數; n匯編語言:是用符號名來表示操作和操作數位置,以增加程序的易讀性。需要翻譯(匯編)成機器語言才能執行。 n高級語言高級語言:是指人容易理解和有利于人對解題過:是指人容易理解和有利于人對解題過程進行描述的程序語言。典型的高級語言有:程進行描述的程序語言。典型的高級語言有:nFORTRAN、COBOL、Basic、Pascal、C、Ada、Modula-2、Lisp、Prolog、Simula、Smalltalk、C+、Java等 6/9/20224

9、5 2.低級語言與高級語言程序的比較低級語言與高級語言程序的比較n計算計算a+b*c-d的值,的值,n用匯編語言可寫成:mov ax,bmul ax,cadd ax,asub ax,dmov r,axn用高級語言可寫成:r = a+b*c-d 6/9/202246n低級語言低級語言n優點:寫出的程序效率比較高,包括執行速度快和占用空間少。n缺點:程序難以設計、理解與維護,難以保證程序的正確性。另外,可移植性差。n高級語言高級語言n優點:程序容易設計、理解與維護,容易保證程序正確性。可移植性好n缺點:用其編寫的程序相對于用低級語言編寫的程序效率要低,翻譯成的目標代碼量較大 。6/9/202247

10、3.高級語言的翻譯n用高級語言書寫的程序須翻譯成機器語言程序用高級語言書寫的程序須翻譯成機器語言程序才能在計算機上運行。翻譯方式有兩種:才能在計算機上運行。翻譯方式有兩種:n編譯n把高級語言程序(稱為源程序)首先翻譯成功能上等價的機器語言程序(稱為目標代碼程序)或匯編語言程序(再通過匯編程序把它翻譯成目標代碼程序),然后執行目標代碼程序。n在目標代碼程序的執行中不再需要源程序。n解釋n對源程序中的語句進行逐條翻譯并執行,翻譯完了程序也就執行完了。n這種翻譯方式不產生目標程序,程序的每次執行都需要源程序。 6/9/202248n把高級語言程序翻譯成機器語言程序的工把高級語言程序翻譯成機器語言程序

11、的工作一般由程序來實現,根據翻譯方式可把作一般由程序來實現,根據翻譯方式可把翻譯程序分為:翻譯程序分為:n編譯程序編譯程序n解釋程序解釋程序 n一般來說,一般來說,n編譯執行比解釋執行效率高n解釋執行容易實現平臺無關6/9/2022491.5 C+語言的產生nC+是貝爾實驗室的是貝爾實驗室的Bjarne Stroustrup 為支持為支持面向對象面向對象程序設計而設計的一種程序設計而設計的一種 系統程序語言系統程序語言/wiki/Bjarne_Stroustrupn從從C語言發展演變而來的,首先是一個更好的語言發展演變而來的,首先是一個更好的Cn引入

12、了類的機制,最初的引入了類的機制,最初的C+被稱為被稱為“帶類的帶類的C”n1983年正式取名為年正式取名為C+n從從1989年開始年開始C+語言的標準化工作語言的標準化工作n于于1994年制定了年制定了ANSI C+標準草案標準草案n于于1998年年11月被國際標準化組織(月被國際標準化組織(ISO)批準)批準為國際標準,成為目前的為國際標準,成為目前的C+6/9/2022501.6 C+程序的組成n邏輯上邏輯上,一個,一個C+程序程序n由一些函數(子程序)、類、全局變量/對象的定義構成,其中必須有且僅有一個名字為main的函數。n函數由函數名、參數和返回類型、局部變量/對象的定義以及語句序

13、列構成;n類由數據成員和成員函數構成。n變量或對象的定義可以出現在函數的外部和內部,而語句只能出現在函數內部。nC+程序從函數main開始執行。6/9/202251 /This is a simple C+ program#include /對對C+標準庫中的程序實體進行聲明標準庫中的程序實體進行聲明using namespace std; /指定使用標準庫的名空間指定使用標準庫的名空間 main() /主函數主函數 double x,y,z; /定義局部變量定義局部變量x、y和和zcout x y; /從鍵盤輸入數據給變量從鍵盤輸入數據給變量x和和yz=x+y; /將將x+y送

14、送zcoutx+y=zendl; /輸出結果輸出結果z system( pause );return 0; /程序結束。程序結束。 上述程序的運行結果為:上述程序的運行結果為:Enter two numbers: 7.2 9.3 7.2 + 9.3 = 16.56/9/202252n物理上物理上,一個,一個C+程序程序n可以放在一個或多個源文件(模塊)中n每個源文件包含一些函數、類和外部變量/對象的定義,其中有且僅有一個文件中包含一個函數main。(一個工程中只能有一個main函數)n每個源文件可以分別編譯。 6/9/2022531.C+的字符集的字符集n構成語言的構成語言的基本符號基本符號稱

15、為語言的稱為語言的字符集。nC+的字符集由下列符號構成:的字符集由下列符號構成:n大小寫英文字母:az, AZn數字:09n特殊字符:! # % & * _ - + = / | . , : ; ? “ ( ) 空格空格 橫向制表橫向制表 縱向制表縱向制表 換頁換頁 換行換行 6/9/2022542.標識符(Identifier,ID )n標識符由字母或下劃線開始,由字母、數字、下劃線組成。 student、student_name、x_1、_name1合法合法 8bc、123不合法n標識符通常用來給程序中的標識符通常用來給程序中的實體實體命名,程序實體命名,程序實體包括:包括:常量常量

16、、變量變量、函數函數、對象對象、類型類型(包括(包括類類)、)、標號標號等。等。n其有效長度為131個字符,長度超過31個字符者只識別前31個字符,VC+標識符長度為1247個字符。6/9/202255n在使用標識符時應注意以下幾點:在使用標識符時應注意以下幾點:n大小寫字母有區別,如:abc、Abc與ABC不同。n關鍵詞不能作為用戶自定義的標識符,它們有特殊的作用。n具體編譯程序可能會限制標識符的長度。n以兩個下劃線開頭或以一個下劃線后跟一個大寫字母開頭的標識符往往在C+語言內部實現中用到,程序中不要用這些標識符作為程序的全局標識符。n對不同種類的程序實體最好采用不同風格的標識符,以提高程序

17、的易讀性。例如:PI(常量)、StudentType(類型)、student(變量、對象或函數等) 6/9/202256例例: 判斷下面哪些是合法的標識符:判斷下面哪些是合法的標識符: MyFileSalary 94amountvoid94SalarySalary94$amountf3.5Num_of_Student6/9/202257n關鍵字是指語言預定義的標識符,它們有固是指語言預定義的標識符,它們有固定的作用和含義,在程序中不能用作其它目定的作用和含義,在程序中不能用作其它目的。的。 例如:例如:if、for、switch等等n關鍵字全部由關鍵字全部由小寫字母小寫字母組成。標準組成。標準

18、C+(ISO14882)定義了)定義了74個關鍵字,具體的個關鍵字,具體的C+編譯器會做一些增刪。常用關鍵字參見編譯器會做一些增刪。常用關鍵字參見教材的表教材的表1-13.關鍵字(keyword)6/9/202258數據類型說數據類型說明符與修飾明符與修飾符符bool char wchar_t class const double enum float int long short signed struct union unsigned void volatile存儲類型說存儲類型說明符明符auto extern inline register static訪問說明符訪問說明符friend

19、private protected public其它說明符其它說明符asm explicit namespace operator template this typedef typename using virtual 語句與標號語句與標號break case catch continue default do else for goto if return switch throw try while 運算符及邏運算符及邏輯值輯值delete false new sizeof true表表1-1 C+-1 C+常用關鍵字及分類常用關鍵字及分類 ok6/9/202259n字面常量 用于表示在

20、程序中直接書寫的常量,又稱用于表示在程序中直接書寫的常量,又稱直接量(literal)。如:)。如:128、3.14、A、“abcd”等等 。n操作符 用于描述運算。如:用于描述運算。如:+,-,*,/, =, ,=,=,|,&等。等。n標點符號 起到某些語法、語義上的作用。如:逗號、起到某些語法、語義上的作用。如:逗號、分號、冒號、括號等。分號、冒號、括號等。n空白符:空格符、制表符、回車符、注釋符空格符、制表符、回車符、注釋符 4.其它成分6/9/202260n注釋 是為了方便對程序的理解而加在程序是為了方便對程序的理解而加在程序中的說明性文字信息。注釋分為:中的說明性文字信息。注

21、釋分為:n單行注釋:從符號/開始到本行結束。n多行注釋:以符號/*開始到符號*/結束。n續行符n一個單詞如果在一行中寫不下(如一個很長的一個單詞如果在一行中寫不下(如一個很長的字符串),則可以把它分幾行來寫,這時,需字符串),則可以把它分幾行來寫,這時,需要在每一行(最后一行除外)的后面加上一個要在每一行(最后一行除外)的后面加上一個續行符續行符。n續行符由一個反斜杠(續行符由一個反斜杠()后面緊跟一個換行符)后面緊跟一個換行符構成。構成。6/9/2022615.基本術語基本術語n源程序:源程序:n用源語言寫的,有待翻譯的程序,如example.cppn目標程序:目標程序:n也稱為結果程序,是

22、源程序通過翻譯程序加工以后所生成的程序。如example.objn翻譯程序:翻譯程序:n是指一個把源程序翻譯成等價的目標程序的程序。6/9/202262n匯編程序:匯編程序:其任務是把用匯編語言寫成的源程序,翻譯成機器語言形式的目標程序。n編譯程序:編譯程序:若源程序是用高級程序設計語言所寫,經翻譯程序加工生成目標程序,那么,該翻譯程序就稱為編譯程序。6/9/202263n解釋程序:解釋程序:這也是一種翻譯程序,同樣是將高級語言源程序翻譯成機器指令。它與編譯程序不同點就在于:它是邊翻譯邊執行的,即輸入一句、翻譯一句、 執行一句,直至將整個源程序翻譯并執行完畢。6/9/2022641.7 程序設

23、計(Programming)n要使得計算機能完成各種任務,就必須為它編寫要使得計算機能完成各種任務,就必須為它編寫相應的程序。相應的程序。 n簡單地說,程序設計就是為計算機編制程序的過簡單地說,程序設計就是為計算機編制程序的過程,它涉及:程,它涉及:n程序設計方法n程序設計步驟 n程序設計語言等n程序設計本質上可歸結為:程序設計本質上可歸結為:n數據描述n數據操作(加工)描述n過程式(面向功能)、對象式(面向數據)、函數過程式(面向功能)、對象式(面向數據)、函數式等式等6/9/2022651.過程式程序設計n一種以一種以功能功能為中心、基于為中心、基于功能分解功能分解的程序設計范型。的程序設

24、計范型。n一個過程式程序由一些一個過程式程序由一些子程序子程序構成,每個子程序對構成,每個子程序對應一個子功能。子程序描述了一系列的操作,它實應一個子功能。子程序描述了一系列的操作,它實現了現了功能抽象功能抽象。n過程式程序的執行過程體現為一系列的子程序調用。過程式程序的執行過程體現為一系列的子程序調用。數據處于附屬地位,它獨立于子程序,在子程序調數據處于附屬地位,它獨立于子程序,在子程序調用時通過參數或全局變量傳給子程序使用。用時通過參數或全局變量傳給子程序使用。n下面的公式描述了過程式程序設計的本質:下面的公式描述了過程式程序設計的本質:程序程序 = 算法算法 + 數據結構數據結構6/9/

25、2022662.程序設計過程n明確問題明確問題 n搞清楚要解決的問題并給出問題的明確定義,搞清楚要解決的問題并給出問題的明確定義,即:做什么?即:做什么?n系統設計系統設計 n給出問題的解決方案,即:如何做?主要包括:給出問題的解決方案,即:如何做?主要包括:n數據結構的設計數據結構的設計n算法的設計算法的設計 n如何組織上述兩者,屬于不同的程序設計范型。如何組織上述兩者,屬于不同的程序設計范型。6/9/202267n編程編程n選擇用某種語言進行編程。n良好的程序設計風格可以通過學習和訓練來獲得。 n測試與調試測試與調試 n程序寫好之后,其中可能含有錯誤。程序的邏輯錯誤和運行異常錯誤一般可以通

26、過測試(test)來發現。n發現錯誤給錯誤定位的過程稱為調試(debug)。 n運行維護運行維護 n所有的測試手段只能發現程序中的錯誤,而不能證明程序沒有錯誤。n在使用中發現錯誤并改錯稱為維護。程序設計步驟(續)6/9/2022683.C+程序的編輯、編譯、調試與運行步驟程序的編輯、編譯、調試與運行步驟 n編輯編輯 n利用某個編輯程序(如:利用某個編輯程序(如:Windows平臺上的寫字板、記平臺上的寫字板、記事本、事本、Word等)把等)把C+源程序輸入到計算機中,并作源程序輸入到計算機中,并作為文本文件(稱為為文本文件(稱為源文件源文件)保存到外存(如硬盤等)中。)保存到外存(如硬盤等)中

27、。nC+源文件的文件名通常為:源文件的文件名通常為:*.cpp。n編譯編譯 n利用某個利用某個C+編譯程序對保存在外存中的編譯程序對保存在外存中的C+源程序進源程序進行編譯,編譯結果作為目標文件保存到外存。行編譯,編譯結果作為目標文件保存到外存。n目標文件的文件名通常為:目標文件的文件名通常為:*.obj。n編譯預處理程序:執行編譯預處理命令。編譯預處理程序:執行編譯預處理命令。 6/9/202269n鏈接鏈接n通過一個鏈接程序把所有目標文件以及程序中用到通過一個鏈接程序把所有目標文件以及程序中用到的一些系統功能所在的目標文件(通常稱為庫文件)的一些系統功能所在的目標文件(通常稱為庫文件)連接

28、起來,作為一個可執行文件保存到外存。連接起來,作為一個可執行文件保存到外存。n可執行文件的文件名通常為:可執行文件的文件名通常為:*.exe。 n運行運行n通過操作系統提供的應用程序運行機制,把某個可通過操作系統提供的應用程序運行機制,把某個可執行文件裝入內存,運行其中的可執行程序。執行文件裝入內存,運行其中的可執行程序。n在上述的編譯、鏈接和運行過程中都有可能發在上述的編譯、鏈接和運行過程中都有可能發現程序有錯。現程序有錯。 整個過程可能會重復多次,直到整個過程可能會重復多次,直到程序得出正確的運行結果。程序得出正確的運行結果。 編輯編輯(.cpp)編譯編譯(.obj)鏈鏈接接(.exe)運

29、行運行輸出結果輸出結果6/9/202270Creating, Compiling, and Running Programs Source Code Create/Modify Source Code Compiler Executable Code Run Executable Code e.g., Welcome Result If compilation errors If runtime errors or incorrect result #include int main() / Display Welcome to C+ to the console std:cout Welco

30、me to C+! std:endl; return 0; Saved on the disk stored on the disk Source code (developed by the programmer) Machine Code program Linker stored on the disk An object file (e.g., Welcome.obj) is created. An executable file (e.g., Welcome.exe) is created. 6/9/2022714.C+集成開發環境 n出現了很多出現了很多C+集成程序開發環境,如:集

31、成程序開發環境,如:nVisual C+nTurbo C+nC+ BuildernDev C+,等n在這些集成環境中,往往使用一條命令在這些集成環境中,往往使用一條命令(菜單項)就能完成所有的步驟,并且,(菜單項)就能完成所有的步驟,并且,一些開發環境還提供了可視化的程序設計一些開發環境還提供了可視化的程序設計支持和功能強大的程序動態調試等工具。支持和功能強大的程序動態調試等工具。 n(Visual C+ 6.0演示)演示)6/9/202272在VC環境下的編程步驟nstep 1 啟動啟動VC6.0nstep2 建立項目文件建立項目文件 3.選選控控制制 臺臺應應用用4.輸輸入入項項目目名名稱

32、稱6/9/202273nstep3 編輯源程序編輯源程序n點文件菜單的新建新建,選定源文件類型選定源文件類型,輸入文件名,點輸入文件名,點確定確定2.輸輸入入源源文文件件名名1.選選c+源源文文件件3.在此輸入程序語句在此輸入程序語句6/9/202274nstep4 點點文件文件菜單的菜單的存盤存盤(另存為另存為可以修改路徑與文件名)可以修改路徑與文件名)nstep5 編譯源程序編譯源程序nstep6 組建組建nstep7 運行運行1.點組建菜單點組建菜單或或點工具欄快捷圖標點工具欄快捷圖標2.觀察下面的信息提示,觀察下面的信息提示,0 errors,成功,成功6/9/202275常見的語法錯

33、誤n缺少語句結束符缺少語句結束符“;”nC+語句以;結尾,在缺;號的語句后補上。n語句中出現有語句中出現有未知字符未知字符。nC2018是未知字符錯誤編號。0 xa3、0 xbb是使用了全角分號(中文);改為英文的即可。6/9/202276常見的語法錯誤n未定義的標識符未定義的標識符nC+標識符要先定義后使用,變量c沒有定義,因之前有分號。該錯有時是拼寫錯誤導致n一個項目中出現有多個一個項目中出現有多個main函數。函數。n一個項目只能有一個main函數n當要編一個新的程序時必須新建一個項目6/9/202277Trace a Program Execution#include using na

34、mespace std;int main() double radius; double area; / Step 1: Read in radius radius = 20; / Step 2: Compute area area = radius * radius * 3.14; / Step 3: Display the area cout The area is ; cout area endl;no valueradiusallocate memory for radius6/9/202278Trace a Program Executionno valueradiusmemory#include using namespace std;int main() double radius; double area; / Step 1: Read in radius radius = 20; / Step 2: Compute area area = radius * radius * 3.14; / Step

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論