《C++程序設計》完整教案_第1頁
《C++程序設計》完整教案_第2頁
《C++程序設計》完整教案_第3頁
《C++程序設計》完整教案_第4頁
《C++程序設計》完整教案_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C+程序設計教案蔡勇智講師授課時間:2010年3月2010年7月課程性質:專業(yè)必修課課程類別:講授課+實訓課授課對象:08級電子商務專業(yè)課時數(shù):周4教學目的:通過本課程的學習,使學生理解面向對象程序設計思想,掌握面向對象程序設計的基本概念和技術。使學生深刻理解面向對象技術所帶來的觀念改革,掌握一種面向對象程序設計語言和面向對象設計的思維方式、規(guī)則與基本方法,了解面向對象程序設計技術的發(fā)展趨勢。通過面向對象思維的訓練,使學生逐漸掌握現(xiàn)代編程能力,為今后的軟件開發(fā)和各種信息處理打下良好的基礎。教學方法:本課程以以下兩種教學方法為主:1理論課堂教學使用多媒體輔助教學手段,并采用可視化的編程工具用于課

2、程學習和編程。2實驗教學結合理論教學實際情況,布置合適比例的概念理解題和綜合設計題,使學生在掌握面向對象概念、鞏固知識的同時,提高綜合設計和處理實際問題的能力。教學內容:第一章面向對象程序設計概述第二章C+程序設計基礎第三章函數(shù)第四章數(shù)組AA*7TZ第五章結構體與共用體AtA-、.*第六章指針與引用教學重難點:重難點在于采用面向對象的觀點分析問題、解決問題,以及培養(yǎng)學生結合實際應用,采用面向對象的思想設計有效的算法和可視化編程實現(xiàn)能力??己朔绞剑浩綍r考勤、作業(yè)占30%,期末考試占70%。使用教材:C+程序設計鄧振杰主編第1章C+概述本章課時:4課時本章重點:C+的基本結構C+的上機實現(xiàn)本章難點

3、:C+的上機實現(xiàn)教學內容及教學目標:了解:1傳統(tǒng)程序設計與面向對象程序設計的區(qū)別2.C+的發(fā)展3面向對象程序設計語言理解:面向對象程序設計的特點熟悉VC+6.0集成開發(fā)環(huán)境掌握:C+的特點C+程序結構和書寫規(guī)則第一節(jié)面向對象程序設計基本概念:對象在面向對象程序設計中,對象是由對象名、一組屬性數(shù)據(jù)和一組操作封裝在一起構成的實體。其中屬性數(shù)據(jù)是對象固有特征的描述,操作是對這些屬性數(shù)據(jù)施加的動態(tài)行為,是一系列的實現(xiàn)步驟,通常稱之為方法。2.類在面向對象程序設計中,類是具有相同屬性數(shù)據(jù)和操作的對象的集合,它是對一類對象的抽象描述。類是創(chuàng)建對象的模板,它包含著所創(chuàng)建對象的狀態(tài)描述和方法的定義,一般是先聲

4、明類,再由類創(chuàng)建其對象。按照這個模板創(chuàng)建的一個個具體的實例,就是對象。屬性對象中的數(shù)據(jù)稱為對象的屬性,而類中的特性稱為類的屬性,不同的類和對象具有不同的屬性。消息在面向對象程序設計中,當要求一個對象做某一操作時,就向該對象發(fā)出請求,通常稱為“消息”。當對象接收到消息時,就調用有關方法,執(zhí)行相應操作。這種對象與對象之間通過消息進行相互聯(lián)系的機制,就叫做消息傳遞機制,通過消息傳遞可實現(xiàn)對象的交互。方法方法就是對象所能執(zhí)行的操作。方法包括接口和方法體兩部分。方法的接口就是消息的模式,它告訴用戶如何調用該方法;方法體則是實現(xiàn)操作的一系列步驟,也就是一段程序代碼。傳統(tǒng)程序設計及其局限性:傳統(tǒng)程序設計開發(fā)

5、軟件的生產(chǎn)效率低下傳統(tǒng)程序設計難以應付龐大的信息量和多樣的信息類型傳統(tǒng)程序設計難以適應各種新環(huán)境面向對象程序設計的特點:1.封裝性封裝是一種數(shù)據(jù)隱藏技術,在面向對象程序設計中可以把數(shù)據(jù)和與數(shù)據(jù)有關的操作集中在一起形成類,將類的一部分屬性和操作隱藏起來,不讓用戶訪問,另一部分作為類的外部接口,用戶可以訪問。繼承性在面向對象程序設計中,繼承是指新建的類從已有的類那里獲得已有的屬性和操作。已有的類稱為基類或父類,繼承基類而產(chǎn)生的新建類稱為基類的子類或派生類。多態(tài)性多態(tài)性是指相同的函數(shù)名可以有多個不同的函數(shù)體,即一個函數(shù)名可以對應多個不同的實現(xiàn)部分。在調用同一函數(shù)時,由于環(huán)境的不同,可能引發(fā)不同的行為

6、,導致不同的動作,這種功能稱為多態(tài)。它使得類中具有相似功能的不同函數(shù)可以使用同一個函數(shù)名。第二節(jié)C+的發(fā)展1980年,美國AT&T公司貝爾實驗室的BjarneStioustrup博士為了仿真課題研究,編寫了稱為“帶類的C”語言版本。1983年7月用C+將該語言名字定下來,并對外公開發(fā)表。Microsoft公司于20世紀80年代中期在MicrosoftC6.0的基礎上開發(fā)了MicrosoftC/C+7.0,同時引進了MicrosoftFoundationClass(MFC)1.0版本,完善了源代碼。后來Microsoft公司推出了MicrosoftC/C+8.0,即VisualC+1.0版本,之

7、后又推出了VisualC+2.0和VisualC+4.0版本。伴隨Windows98操作系統(tǒng)的發(fā)布,Microsoft公司又隆重推出了VisualC+6.0C+的特點:C+全面兼容C語言,許多C語言代碼不經(jīng)修改就可以在C+中使用。用C+編寫的程序可讀性更好,代碼結構更為合理。生成代碼質量高,運行效率僅比匯編語言慢10%20%。從開發(fā)時間、費用到形成軟件的可重用性、可擴充性、可維護性和可靠性等方面有很大提高,使得大中型軟件開發(fā)變得容易很多。支持面向對象程序設計,可方便地構造出模擬現(xiàn)實問題的實體和操作。第三節(jié)C+程序的基本結構【例1.1】一個簡單的C+程序。#includevoidsayhello

8、();voidmain()sayhello();/在顯示器上輸出顯示一行字符串coutThisismyfirstC+program!endl;/函數(shù)定義voidsayhello()coutHello!#include文件名.擴展名函數(shù)C+的程序是由若干個文件組成,每個文件又由若干個函數(shù)組成。函數(shù)之間是相互獨立的,相互之間可以調用。但函數(shù)在調用之前,必須先定義。C+的程序中的函數(shù)可分為兩大類,一類是用戶自己定義的函數(shù),另一類是系統(tǒng)提供的標準函數(shù)。使用系統(tǒng)提供的標準函數(shù)時,可以直接調用,但需要將該函數(shù)的頭文件包含在該程序中。主函數(shù)在組成C+程序的若干個函數(shù)中,必須有一個且只能有一個主函數(shù)main(

9、)。執(zhí)行程序時,系統(tǒng)先從主函數(shù)開始運行,其他函數(shù)只能被主函數(shù)調用或通過主函數(shù)調用的函數(shù)所調用,函數(shù)可以嵌套調用。注釋第一種注釋方法是以“/*”開始,以“*/”結束,二者之間的所有字符都會被作為注釋處理,此時的注釋可以是一行,也可以是多行,適合于大塊的注釋。第二種注釋方法是以“/”表示注釋開始,本行中“/”后面的字符都會被作為注釋處理,這種注釋方式多用于較短的程序注釋。輸入/輸出輸入/輸出語句是C+最基本的語句。綜上所述,一個C+程序的基本結構應該包括以“#”開頭的若干個預處理命令,將程序所需要的頭文件包含進來;然后定義主函數(shù)和其他函數(shù),當然函數(shù)也可以在程序的起始部分先利用函數(shù)要包括各種語句和注

10、釋,這部分是程序的主體部分,所占比重也最大。C+程序的書寫格式:C+程序的書寫格式與C程序書寫格式基本相同。原則如下:一般情況下一行只寫一條語句。短語句可以一行寫多條,長語句也可以分成多行來寫。分行原則是不能將一個單詞分開,用雙引號括起來的字符串最好也不要分開。C+程序書寫時要盡量提高可讀性。為此,采用適當?shù)乜s進格式書寫程序是非常必要的,表示同一類內容或同一層次的語句要對齊。C+程序中大括號使用較多,其書寫方法也較多,建議用戶要養(yǎng)成使用大括號的固定風格。例如,每個大括號占一行,并與使用大括號的語句對齊,大括號內的語句采用縮進兩個字符的格式書寫。第四節(jié)VisualC+6.0集成開發(fā)環(huán)境Visua

11、lC+6.0是微軟公司開發(fā)的可視化的C+集成開發(fā)環(huán)境。它集程序代碼的編輯、編譯、連接、調試等功能為一體,界面友好,用戶操作方便。-廿1天中女TC二遼岡菜單欄標準工具欄工作區(qū)窗口文片BHSTBAIHftTflBQHbinitwsuhi;“比詢入闔個整鼬clnxj)i;n=jdri(w-f);c#uiUIK.efl41tn0;:口旺州巳!;冃油1砂ttiwlidie-UniaddfintaPintb);intEuiinilirat3rgc:pchijr*|AInnhlm-mrnrrJ|trirl-CenflQiirationiEsum-Vln3?Debuq-亠J1Linking-.suai.ii-

12、HP-0KKjr(ET咀yarningfs)Ifh編譯萱找交件1重找交件111廠Ln5.C4)I1RJEAOil函霖Nd定義imtaddfintjfpint也編譯工源程序輸出窗口1菜單欄標準工具欄工作區(qū)窗口源程序編輯窗口編譯工具欄6輸出窗口編輯、編譯和運行程序:源程序編輯編譯Hello.cpp有錯誤目標程序可執(zhí)行程序結果連接運行Hello.objHello.exe無錯誤編輯編輯是將寫好的C+源程序輸入到計算機中,生成磁盤文件的過程。默認文件擴展名為*.cpp。編譯編輯好的源程序必須經(jīng)過編譯,計算機才能執(zhí)行,這些二進制代碼稱為目標代碼。將這些目標代碼以.obj為擴展名保存成目標程序文件。連接編譯

13、后生成的目標代碼還不能直接在計算機上運行,其主要原因是編譯器對每個源程序文件分別進行編譯,如果一個程序有多個源程序文件,編譯后這些源程序文件還分布在不同的地方。因此,需要把它們連接在一起,生成可以在計算機上運行的可執(zhí)行文件。運行可執(zhí)行文件可以在Windows環(huán)境下直接雙擊運行,也可以在VisualC+6.0的集成開發(fā)環(huán)境下運行。在生成可執(zhí)行文件之前,一定要改正編譯和連接時出現(xiàn)的致命錯誤和警告錯誤,這樣才能保證運行結果是正確的。參照教材練習C+程序的上機實現(xiàn)過程。利用Debug調試功能調試程序:VisualC+6.0集成開發(fā)環(huán)境為我們提供了輔助調試工具,可以實現(xiàn)單步運行、設置斷點、觀察變量和表達

14、式的值等功能,使我們可以跟蹤程序的執(zhí)行過程,觀察不同時刻變量值的變化情況。所謂斷點就是程序運行時的暫停點,程序運行到斷點處便暫停,這樣就可以通過觀察斷點處變量的值來了解程序的執(zhí)行過程。參照教材練習利用Debug調試程序的過程。作業(yè)教材P18-19所有習題。第2章C+程序設計基礎本章課時:16課時本章重點:運算符與表達式控制語句本章難點:控制語句教學內容及目標:了解:1為什么會有三種基本的程序控制結構C+的基本數(shù)據(jù)類型理解:程序控制結構的控制方式:順序結構,選擇結構,循環(huán)結構C+的運算符、關鍵字、標識符和分隔符、常量和變量語法規(guī)則轉向語句的使用表達式中數(shù)據(jù)類型的轉換規(guī)則掌握:選擇控制的使用:if

15、語句,switch語句循環(huán)控制結構的使用:while語句,do_while語句,for語句,循環(huán)的嵌套判斷表達式的使用第一節(jié)詞法符號標識符:標識符是程序員為命名程序中的一些實體而定義的專用單詞。常見的有函數(shù)名,類名、變量名、常量名、對象名等。C+語言中標識符的命名規(guī)則如下:標識符是由英文字母(包括大寫和小寫)、數(shù)字和下劃線組成,并且以字母和下劃線開始,例如:Abe、X1、_x1、desk都是合法的標識符,而2A是非法的。標識符中大寫和小寫字母是有區(qū)別的。標識符的長度是任意的,但有的編譯系統(tǒng)僅識別前32個字符。標識符不能和C+語言的關鍵字同名。關鍵字:關鍵字是一種有特殊用途的詞法符號,是C+系統(tǒng)

16、預定義的保留字,不能再用作其他用途。卜面列舉一些C+語言中常用的關鍵字:autobreakboolcasecharcatchclassConstcontinuedefaultdeletedodoubleelseEnumexplicitexportexternfalsefloatforfriendgotoifinlineintlongnewMutablenamespaceoperatorprivateprotectedpublicregisterreturnshortsignedsizeofStaticatructswitchthistypedeftrueunionunsignedtypenam

17、evoidusingvirtualvolatilewhilestatic_cast運算符:運算符是C+語言實現(xiàn)各種運算的符號,如+、一、*、/等。運算符根據(jù)操作對象個數(shù)的不同,可以分為單目運算符、雙目運算符和三目運算符。單目運算符又稱一元運算符,它只對一個操作數(shù)進行操作。例如,求負運算符、邏輯求反運算符!等。雙目運算符又稱二元運算符,它可以對兩個操作數(shù)進行操作。例如,加法運算符+、乘法運算符*等。三目運算符又稱三元運算符,它可以對三個操作數(shù)進行操作。C+語言中只有一個三目運算符,就是條件運算符?:。分隔符:分隔符又稱標點符號,是用來分隔單詞或程序正文的,它可以表示某個程序實體的結束和另一個程序

18、實體的開始。在C+語言中,常用的分隔符有以下幾個:(1)空格符:常用來作為單詞與單詞之間的分隔符。逗號:用來作為多個變量之間的分隔符,或用來作為函數(shù)多個參數(shù)之間的分隔符。分號:用來作為for循環(huán)語句中for關鍵字后面括號中三個表達式的分隔符,或用作語句結束的標志。冒號:用來作為語句標號與語句之間的分隔符,或switch語句中關鍵字casev整型常量與語句序列之間的分隔符。第二節(jié)基本數(shù)據(jù)類型C+語言的數(shù)據(jù)類型是十分豐富的,大致可分為基本數(shù)據(jù)類型和非基本數(shù)據(jù)類型。基本數(shù)據(jù)類型包括整型、字符型、浮點型和布爾型。非基本數(shù)據(jù)類型主要包括數(shù)組類型、結構體類型、共用體類型、指針類型和空類型等,如圖2-1所示

19、。數(shù)據(jù)類型決定了數(shù)據(jù)在內存中所占的空間大小,也確定了其表示范圍。各種基本數(shù)據(jù)類型的長度和取值范圍見表2-1?;菊停╥nt)整型短整型(short)I長整型(long)字符型F基本數(shù)據(jù)類型(f單精度型(float)浮點型I雙精度型(double)數(shù)據(jù)類型布爾型(bool)-數(shù)組類型構造數(shù)據(jù)類型:結構體類型-共用體類型第三節(jié)常量與變量常量:1整型常量整型常量即整型常數(shù),可以用十進制、八進制和十六進制3種形式來表示。十進制整型常量不能以0開始。例如,234、-67為合法的十進制整型常量。八進制整型常量以0為前綴。例如,0134、-076為合法的八進制整型常量。十六進制整型常量以0X或0 x為前綴

20、。例如,0 x2F、0 xA3B4為合法的十六進制整型常量。注意:整型常量中的長整型用L或1作后綴表示。例如,324L、076L等;整型常量中的無符號型用U或u作后綴表示。例如,431U、0 x34DU等。2浮點型常量浮點型常量又稱實型常量,是由整數(shù)部分和小數(shù)部分組成的,只能用十進制表示。浮點型常量有兩種表示方法:小數(shù)表示法和科學計數(shù)法。小數(shù)表示法:是由符號、數(shù)字和小數(shù)點組成。例如,9.55、.25等??茖W計數(shù)法:是用指數(shù)形式來表示浮點型常量,即在小數(shù)表示法后面加上E或e表示指數(shù)。例如,3.2E-5,7e10,-34.5e2等。3字符常量C+中有兩種字符常量,即一般字符常量和轉義字符常量。一般

21、字符常量:一對單引號括起來的一個字符,其值為ASCII碼值。例如,a、A、$、5等都是合法的字符常量。轉義字符轉義字符是一個以“”開頭的特定字符,表示其后的字符具有特殊意義。例如,n中的n不是代表字符n,而是代表回車換行的意思。常用的轉義字符見表2-2。字符形式ASCII碼值功能00 x00NULLa0 x07響鈴b0 x08退格(Backspace鍵)t0 x09水平制表(Tab鍵)f0 x0c走紙換頁n0 x0a回車換行v0 x0b垂直制表r0 x0d回車(不換行)0 x5c字符“”0 x27單引號”0 x22雙引號?0 x3f問號ddd0ddd13位八進制數(shù)所代表的字符xhh0 xhh1

22、2位十六進制數(shù)所代表的字符表2-2C+中常用的轉義字符4字符串常量字符串常量是用一對雙引號括起來的字符序列。例如,a、123、hello等都是字符串常量。這些字符在內存中連續(xù)存儲,并在最后加上字符0作為字符串結束的標志。例如,字符串“HELLO”在內存中占連續(xù)6個內存單元,存放示意圖如圖2-2所示。HELL|O0圖2-2字符串HELLO在內存中的存放示意圖字符常量是用單引號括起來的一個字符。它在內存中只占一個字節(jié)。所以,x和x是不同的。注意:不能將一個字符串常量賦給字符常量。例如,語句charc=abc是錯誤的。5邏輯常量在C+程序設計中經(jīng)常會用到兩個邏輯值(也稱布爾值)0和1,邏輯值“0”代

23、表“假”、“不成立”、“false”等,邏輯值“1”代表“真”、“成立”、“true”等。6符號常量在C+中,可以用一個標識符來表示一個常數(shù),這個標識符就是符號常量。使用符號常量可以增加程序的可讀性和可維護性。C+語言提供了兩種定義符號常量的方法:用const語句定義符號常量一般格式為:const數(shù)據(jù)類型符號常量=表達式;例如:constdoublepi=3.1415926;注意:在定義符號常量時必須進行初始化用#define語句定義符號常量#define是預處理指令,缺點是不能顯示聲明常量的類型。其一般格式為:#define常量名常量值例如:#definepi3.1415926變量:變量是指

24、在程序運行過程中其值可以改變的量。C+語言中使用變量前,必須先對它的數(shù)據(jù)類型進行說明,以便編譯程序為變量分配存儲空間。1變量的命名變量的命名要遵循C+語言中標識符的命名規(guī)定2變量的定義變量定義的一般格式為:數(shù)據(jù)類型變量1,變量2,;其中數(shù)據(jù)類型可以是前面講過的各種數(shù)據(jù)類型,它決定了變量在內存中所占的存儲單元數(shù)。例如:intx,y,z;定義了3個整型變量x、y、zfloata,b,c;/定義了3個實型變量a、b、c3變量與初始化可以在聲明變量的同時賦初值:例如:intx=10,y=20+a;例如:intx(10);也可以先定義變量,后賦值。例如:intx1,y1;x1=10;y1=20;注意:不

25、能連續(xù)賦值。如:inta=b=c=5;是錯誤的。但可以分別賦值。在同一個程序塊中,不能有兩個相同的變量名。變量賦值時,等號左右兩邊類型要匹配。表達式是由運算符和各種運算對象(常數(shù)、變量、常量等,也稱操作數(shù))組合而成。在C+程序中,表達式與我們在數(shù)學中學到的類似,是用于計算的式子,是計算求值的基本單位。C+語言定義了豐富的運算符。運算符給出計算的類型,而參與運算的數(shù)據(jù)叫操作數(shù)。按運算符的運算性質又可分為算術運算符、關系運算符和邏輯運算符等。使用運算符時,要注意以下幾點:運算符的功能。如加、減、乘、除等。與操作數(shù)的關系,注意操作數(shù)的個數(shù)和類型。運算符的優(yōu)先級別。運算符的結合性。第四節(jié)運算符和表達式

26、表2-3C+中常用運算符的優(yōu)先級、功能和結合性優(yōu)先級運算符功能說明要求操作數(shù)的個數(shù)結合性1()改變優(yōu)先級左結士合左結口:作用域運算符數(shù)組下標運算符一成員選擇*成員指針選擇2*指針運算符1-右合右結口&取地址sizeof求內存字節(jié)數(shù)!邏輯求反按位求反+-增1、減1運算符+-取正、取負運算符3*/%乘法、除法、取余2左結士合左結口4+-加法、減法2左結士合左結口5左移位、右移位2左結士合左結口6=小于、大于、小于等于、大于等于2左結士合左結口表2-3C+中常用運算符的優(yōu)先級、功能和結合性(續(xù)表)優(yōu)先級運算符功能說明要求操作數(shù)的個數(shù)結合性7=!=等于、不等于2左結士合左結口8&按位與2左結士合左結口

27、9A按位異或2左結士合左結口10|按位或2左結士合左結口11&邏輯與2左結士合左結口12II邏輯或2左結士合左結口13?:條件運算符3-右合右結口14/=%=&=A=I=賦值運算符2-右合右結口15逗號運算符左結士合左結口1基本算術運算符與算術表達式基本算術運算符有:+(取正或加)、(取負或減)、*(乘)、(除)、%(取余)。其中+(取正)、(取負)是單目運算符,其余是雙目運算符。上述運算符與其在數(shù)學中的意義、優(yōu)先級、結合性基本相同,即先進行乘法、除法和求余運算,優(yōu)先級相同,后執(zhí)行加法和減法運算,優(yōu)先級相同。注意:要求取余運算符(%)的兩個操作數(shù)必須是整數(shù)或字符型數(shù)據(jù)。算術表達式是由算術運算符

28、與操作數(shù)組成的,其表達式的值是一個數(shù)值,表達式的類型由運算符和操作數(shù)共同確定?!纠?.1】基本算術表達式的計算。#includevoidmain()inti=4,j=5,k=6;intx;x=i+j-k;coutx=xendl;/輸出x=3x=(i+j)*k/2;coutx=xendl;/輸出x=27x=25*4/2%k;coutx=xendl;/輸出x=2doubley=2.5;couty=y-(y+0.5)*2endl;/輸出y=-3.5運行程序后,輸出結果為:x=3x=27x=2y=-3.52增1、減1運算符及表達式增1、減1運算符都是單目運算符,這兩個運算符都有前置和后置兩種形式。前置

29、形式是指運算符在操作數(shù)的前面,后置是指運算符在操作數(shù)的后面。例如:i+;/+后置j;/前置(1)增1、減1運算符只能用于變量,不能用于常量和表達式。增1、減1運算符的結合方向是自右向左,如表達式-i+中運算符“-”和“+”優(yōu)先級相同,結合方向是自右向左,即表達式可以理解為-(i+)。增1、減1運算符在很多情況下的使用可能會出現(xiàn)歧異,從而產(chǎn)生意想不到的結果?!纠?.2】增1、減1表達式的計算。#includevoidmain()inti,j,k,m,n;i=4;j=i+;couti=itj=jendl;i=4;k=+i;couti=itk=kendl;i=4;m=i-;couti=itm=men

30、dl;i=4;n=-i;couti=itn=nendl;運行程序后,輸出結果為:i=5j=4i=5k=5i=3j=4i=3k=3關系運算符:關系運算符用于比較兩個操作數(shù)的大小,其比較的結果是一個布爾型的值。當兩個操作數(shù)滿足關系運算符指定的關系時,表達式的值為true,否則為false。在C+語言中,關系運算符都是雙目運算符,共6個:(小于)、(大于)、=(大于或等于)、=(等于)、!=(不等于)。其中前4種的優(yōu)先級高于后2種。C+語言中雖然有布爾類型,但它仍然繼承了C語言的規(guī)定,true等于1,false等于0。所以,關系運算符的比較結果可以作為算術運算中的操作數(shù)。例如:表達式2=3的結果為0

31、(false)。在使用關系運算符時還應注意以下幾點:不要把關系運算符“=”誤用為賦值運算符“=”。也不要將不等于運算符“!=”寫成其他語言中的不等于運算符“”。(2)a=60的意思是a的ASCII碼值與60比較大小。對于數(shù)學中表示“x大于等于5,且x小于等于20”的數(shù)學關系式5WxW20,正確的表達式應該是:5=x&x=20關系表達式是由關系運算符和操作數(shù)組成,表達式的值都是1(true)或0(false)o經(jīng)常出現(xiàn)在條件語句和循環(huán)語句中,用于決定問題的執(zhí)行方法?!纠?.3】關系表達式的計算。#includevoidmain()inti=4,j=5;coutj)endl;cout=j)endl

32、;cout(ij)endl;cout(i=j)endl;cout(i=j)endl;cout(i!=j)endl;運行程序后,輸出結果為:001101return邏輯運算符與邏輯表達式:1邏輯運算符邏輯運算符共有3個:1個單目運算符!(邏輯求反),2個雙目運算符&(邏輯與)和|(邏輯或)。在三個運算符中,邏輯非的優(yōu)先級最高,邏輯與次之,邏輯或最低。關系運算和邏輯運算的結果若為真,其值為1;若為假,其值為0。aba&b|allb表2-3邏輯值的邏輯運算結果2邏輯表達式邏輯表達式由邏輯運算符與操作數(shù)組成,表達式的值都應是1(true)或0(false)?!纠?.4】邏輯表達式與關系表達式的計算#i

33、ncludevoidmain()輸出z=1,表示true輸出z=0,表示false輸出z=0,表示falseintx=3,y=5,z;z=(x0)|(y10);coutz=zendl;z=(x=0)&(y10);coutz=zendl;z=!(x=3);coutz=zendl;賦值運算符:C+中的賦值運算符分為兩種:簡單賦值運算符和復合賦值運算符1簡單賦值運算符“=”其表達式的一般形式為:變量=表達式2復合賦值運算符如果以#表示數(shù)值型運算符,則復合賦值表達式的一般形式為變量#=表達式該表達式等價于:變量=變量#表達式例如:a+=5m%=7等價于a=a+5等價于m=m%7復合賦值運算符的優(yōu)先級和

34、賦值運算符相同,結合性也相同,都為右結合。3賦值表達式賦值表達式由賦值運算符與操作數(shù)組成。賦值表達式的作用就是把賦值運算符右邊表達式的值賦給左邊的變量。賦值表達式的類型為左邊變量的類型,其值為賦值后左邊變量的值。在C+語言中還可以連續(xù)賦值。【例2.5】賦值表達式的應用。#includevoidmain()intm=3,n=4,k;k=m+-n;coutk=kendl;charx=m,y=n;intz;z=yx;coutz=zendl;z=(y=x+1);coutz=zendl;z=(y!=Y);coutz=zendl;inta=1,b=3,c=5;a+=b*=c-=2;couta=a,b=b,

35、c=cb?a:b2逗號運算符由逗號運算符構成的表達式稱為逗號表達式,其一般形式為:表達式1,表達式2,,表達式n逗號表達式的執(zhí)行規(guī)則是從左到右,逐個表達式執(zhí)行,最后一個表達式的值是該逗號表達式的值。注意:逗號運算符“,”的優(yōu)先級最低。例如,表達式“a=3,a+l,a*a”的結果為9。表達式中數(shù)據(jù)類型的轉換:1.隱含轉換當操作數(shù)的類型不一致時,表達式的類型就取決于操作數(shù)中類型最高的操作數(shù)類型,C+語言將自動進行類型轉換,隱含轉換的示意圖如圖2-3所示,其轉換規(guī)則如下:注意:隱含轉換是由編譯系統(tǒng)自動完成的,它實際并不改變操作數(shù)的數(shù)據(jù)類型,只是在計算表達式值時,臨時改變操作數(shù)的數(shù)據(jù)類型,計算完成后,

36、操作數(shù)仍保持原有的數(shù)據(jù)類型。2.強制轉換強制轉換的作用是將表達式的類型強制轉換成指定的數(shù)據(jù)類型。其一般形式為:數(shù)據(jù)類型(表達式)或(數(shù)據(jù)類型)表達式例如:double(a)/將a強制轉換成double型float(5%3)/將5%3的結果轉換成float型注意:如果將高類型轉換成低類型,會造成數(shù)據(jù)精度的損失。因此,這是一種不安全的類型轉換。第五節(jié)控制語句C+語句概述:1表達式語句表達式語句是由一個表達式加上分號組成。例如:inti;/將i聲明為整型變量的語句a=3*4+5;/賦值語句2復合語句復合語句也稱塊語句,是由兩條或兩條以上的語句組成,并用“”括起來的語句。復合語句在語法上相當于一條語句

37、。注意:在復合語句的右括號后不再需要分號。3控制語句控制語句通常包括選擇語句、循環(huán)語句和轉移語句。4空語句語句空語句只有一個分號,它不作任何操作,常用在需要一條語句而又不需要任何操作的地方,如循環(huán)語句中。選擇語句:1if語句if語句用來有條件地執(zhí)行某一語句系列。if語句主要有3種語法格式:簡單if語句格式:if(表達式)語句;功能:首先計算表達式的值,如果表達式的值不為0,表示條件判定為真,花括號內的語句將被執(zhí)行;否則,將執(zhí)行后面的語句。其中的表達式一般是關系表達式,并且表達式必須用()括起來。語句可以是一條語句,也可以是多條語句。如果只有一條語句,則可以省略。【例2.7】簡單if語句的應用。

38、#includevoidmain()floatscore;coutPleaseenteryourscore:score;if(score=60)coutPassed!endl;if(score60)coutNopassed!endl;coutYoushoulddoyourbesttostudyendl;運行程序后,屏幕上輸出顯示:Pleaseenteryourscore:提示用戶輸入成績,當用戶輸入成績信息后,程序會根據(jù)用戶的輸入,輸出顯示相應的信息。如輸入70,則顯示:Passed!(2)兩分支if語句格式:if(表達式)語句1;else語句2;功能:首先計算表達式的值,如果表達式條件判定為

39、真,則執(zhí)行語句1,否則將執(zhí)行語句2。該格式的流程圖如圖2-5所示?!纠?.8】利用兩分支if語句改寫例2.7。#includevoidmain()floatscore;coutPleaseenteryourscore:score;if(score=60)coutPassed!endl;elsecoutNopassed!endl;coutYoushoulddoyourbesttostudyendl;(3)多分支if語句格式:if(表達式1)elseif(表達式2)elseif(表達式3)elseif(表達式n)else功能:首先計算表達式1的值,如果表達式1條件判定為真,則執(zhí)行語句1,否則判定表

40、達式2,如果條件判定為真,則執(zhí)行語句2,依此類推,直到所有的表達式條件均不滿足,此時將執(zhí)行語句n+1。該格式實際上提供了多重條件選擇。該格式的流程圖如圖2-6所示?!纠?.9】利用多分支if語句比較兩個數(shù)的大小。#includevoidmain()intx,y;coutPleaseinputx,y:xy;if(x=y)coutx=yy)coutyendl;elsecoutxyendl;程序執(zhí)行后,屏幕上輸出顯示:Pleaseinputx,y:計算機提示用戶輸入兩個x和y的值。當用戶輸入后,計算機將顯示相應的判斷結果。例如,輸入1和2后將顯示“xvy”的判斷結果。if語句的嵌套三種if語句之間可

41、以實現(xiàn)嵌套。通常為了不破壞程序的可讀性,嵌套的層次一般不超過兩層?!纠?.10】利用if語句的嵌套改寫例2.9。#includevoidmain()intx,y;coutPleaseinputx,y:xy;if(x!=y)if(xy)coutyendl;elsecoutxyendl;elsecoutx=yendl;2switch語句switch語句又稱開關語句,其語法格式為:switch(表達式M)case常量表達式Ml:語句1;case常量表達式M2:語句2;IIIcase常量表達式Mn:語句n;default:語句Mn+1;其中,switch、case和default是關鍵字,常量表達式通

42、常為整型數(shù)值和字符常量,語句1、語句2、語句n是由1條或多條語句組成的語句段,也可以是空語句。如果是多條語句,可以用花括號括起來。switch語句的執(zhí)行過程是:首先計算switch語句中的表達式,然后按先后順序將得到的結果與case中的常量表達式的值進行比較。如果兩者相等,程序就轉到相應case處開始順序執(zhí)行。如果沒有找到相匹配的結果,就從default處開始執(zhí)行。如果沒有default,則轉到switch語句后面的語句。如果希望switch語句在執(zhí)行完某一case后面的語句后,不再執(zhí)行其后面的case和default分支,就需要在每個case的末尾加上一條break語句,表示跳出switch

43、語句。加break語句的switch語句流程圖如圖2-7所示。圖2-7switch語句【例2.11】根據(jù)考試成績的等級給出百分制分數(shù)段。#includevoidmain()chargrade;coutvv請輸入成績:vvendl;cingrade;if(grade=a&gradev=z)grade-=32;/若輸入小寫字母,則轉化為大寫字母switch(grade)caseA:cout90100endl;caseB:cout8089endl;caseC:cout7079endl;caseD:cout6069endl;caseE:cout60分以下endl;default:coutInputer

44、ror!endl;運行程序后,屏幕上將顯示字符串“請輸入成績:”。假設輸入B后,將輸出結果:80897079606960分以下Inputerror!顯然,這樣的輸出結果是不符合題目原意的,原因就在于沒有用break語句作為每個case的結束語句。現(xiàn)修改例2.11程序如下:switch(grade)caseA:cout90100endl;break;caseB:cout8089endl;break;caseC:cout7079endl;break;caseD:cout6069endl;break;caseE:cout60分以下endl;break;default:coutInputerror!e

45、ndl;再運行程序,然后輸入成績B,將輸出結果:8089循環(huán)語句:在程序設計中經(jīng)常遇到需要重復執(zhí)行的操作,這些操作可以使用循環(huán)語句來實現(xiàn)。循環(huán)語句使得程序在給定條件滿足時,能夠重復地執(zhí)行某些操作C+語言提供了3種循環(huán)語句:while循環(huán)語句、do-while循環(huán)語句和for循環(huán)語句。1while循環(huán)語句while循環(huán)語句的語法形式為:while(表達式)循環(huán)體;其中,while是關鍵字,表達式可以是C+語言中任何合法的表達式,它用來判斷執(zhí)行循環(huán)體的條件,根據(jù)循環(huán)條件決定是否執(zhí)行循環(huán)體。循環(huán)體由語句組成,可以是一條語句,也可以是多條語句。while循環(huán)執(zhí)行過程示意圖如圖2-8所示。如果循環(huán)體有多

46、個語句時,要用大括號把它們括起來,以復合語句形式出現(xiàn)。在使用循環(huán)語句時,一定要設法改變循環(huán)變量,使之在有限次循環(huán)之后能滿足循環(huán)終止條件而結束循環(huán)?!纠?.12】編程計算1100之和。#includevoidmain()inti=1,sum=0;while(i=100)sum+=i;i+;coutsum=sumendl;程序運行后,輸出結果:sum=50502do-while循環(huán)語句do-while循環(huán)語句的語法形式為:do/循環(huán)體部分while(表達式);do-while循環(huán)語句與while循環(huán)語句的區(qū)別在于:do-while循環(huán)語句首先執(zhí)行循環(huán)體,再求表達式的值。如果其值非0,則再次執(zhí)行循環(huán)

47、體,直至表達式的值為零;而while語句首先求表達式的值,再按其值為零或非零決定是否執(zhí)行循環(huán)體。因此,do-while循環(huán)語句中的循環(huán)體至少執(zhí)行一次。do-while循環(huán)執(zhí)行過程如圖2-9所示。4循環(huán)體注意:do-while循環(huán)語句最后的分號不可缺少。【例2.13】利用do-while循環(huán)語句改寫例2.12。#includevoidmain()inti=1,sum=0;dosum+=i;i+;while(i=100);coutsum=sumendl;3for循環(huán)語句for循環(huán)語句的功能非常強大。所有while循環(huán)語句和do-while循環(huán)語句都可以用for循環(huán)語句替代。for循環(huán)語句的語法形式

48、為:for(表達式1;表達式2;表達式3)循環(huán)體;其中,表達式1通常用來給循環(huán)變量賦初值;表達式2通常是關系表達式或邏輯表達式,一般用來設置循環(huán)條件;表達式3用來在每次循環(huán)之后修改循環(huán)變量的值。for語句的執(zhí)行過程是:首先執(zhí)行表達式1,給循環(huán)變量賦初值;接著執(zhí)行表達式2,并根據(jù)表達式2的值決定是否執(zhí)行循環(huán)體。如果表達式2的值為true或其他非0值,則執(zhí)行循環(huán)體,否則退出循環(huán);每執(zhí)行完一次循環(huán)體后,再執(zhí)行表達式3,修改循環(huán)變量;然后再執(zhí)行表達式2,并根據(jù)表達式2的值決定是否繼續(xù)執(zhí)行循環(huán)體。For循環(huán)語句的執(zhí)行過程如圖2-10所示。圖2-10For循環(huán)語句執(zhí)行過程在使用for循環(huán)語句時,應該注意下

49、列幾種情況:for語句中的3個表達式可以沒有。但必須注意每個表達式后的分號不能省略。此時for循環(huán)語句的形式為:for(;)這時在循環(huán)體內必須有其他控制循環(huán)執(zhí)行的語句,否則會形成死循環(huán)。表達式l如果沒有或不是用來給循環(huán)變量賦初值,則應在for語句前給循環(huán)變量賦初值。表達式2如果沒有,則在for語句循環(huán)體內應有其他控制循環(huán)執(zhí)行的語句,否則會形成死循環(huán)。表達式3如果沒有或不是用來修改循環(huán)變量的值,則應在for語句循環(huán)體內設置相應的語句?!纠?.14】利用for循環(huán)語句改寫例2.12。#includevoidmain()inti,sum=0;for(i=1;i=100;i+)sum+=i;couts

50、um=sumendl;【例2.15】在屏幕上顯示09共10個整數(shù)。#includevoidmain()inti=0;for(;i=9;)couti+t;coutendl;程序運行后,將輸出結果:0123456789returnC+語言還提供了goto語句、break語句和continue語句等轉移語句,它們主要用于改變程序中語句的執(zhí)行順序,使程序從某一語句有目的地轉移到另一語句繼續(xù)執(zhí)行。轉移語句:1goto語句goto語句語法格式為:goto語句標號;goto語句的作用是使程序轉移到語句標號所標示的語句處繼續(xù)執(zhí)行。語句標號是一種用來標識語句的符號,其命名遵守標識符的命名規(guī)定,放在語句的前面,并

51、用冒號(:)與語句分開。C+語言中,goto語句的使用被限制在一個函數(shù)體內,即goto語句只能在一個函數(shù)范圍內進行語句轉移。在同一函數(shù)中,語句標號應該是唯一的。注意:由于goto語句的使用會破壞程序的結構,編程時,應盡量少用或不用。2break語句break語句的語法格式如下:break;break語句可用在以下兩種情況:break語句用在switch語句中,其功能是退出switch語句。break語句用在循環(huán)語句的循環(huán)體中,其功能是退出循環(huán)語句。如果是多重循環(huán),它將會在本次循環(huán)結束時執(zhí)行該重循環(huán)后面的語句。3continue語句continue語句的語法格式為:continue;contin

52、ue語句只能用在循環(huán)語句的循環(huán)體內。在循環(huán)執(zhí)行的過程中,如果遇到continue語句,程序將結束本次循環(huán),接著開始下一次循環(huán)?!纠?.16】從鍵盤上輸入10個整數(shù),若是正整數(shù)則求和,若是負整數(shù)則不進行計算,繼續(xù)輸入數(shù)據(jù),若輸入0則終止程序。#includevoidmain()intnum,sum=0;coutPleaseinputnumber:endl;for(inti=0;inum;if(num=0)break;if(num0)continue;sum+=num;coutsum=sumendl;return作業(yè)教材P46-47所有習題第3章函數(shù)本章課時:12課時本章重點:函數(shù)調用變量作用域本

53、章難點:函數(shù)調用教學內容及目標:了解:1參數(shù)的傳遞方式的分類2內聯(lián)函數(shù)的含義理解:1變量存儲特性與標識符作用域2函數(shù)調用機制:嵌套調用和遞歸調用掌握:1函數(shù)參數(shù)的傳遞,包括:傳值參數(shù),指針參數(shù),引用參數(shù)和函數(shù)的返回類型2函數(shù)指針:函數(shù)的地址,函數(shù)指針3重載函數(shù)的定義與使用方法第一節(jié)函數(shù)的定義和聲明【例3.1】實現(xiàn)兩個數(shù)相加。#includeintadd(int,int);/函數(shù)原型voidmain()intsum,x,y;coutvv請輸入被加數(shù)和加數(shù):vvendl;cinxy;sum=add(x,y);/函數(shù)調用coutvvSum=vvsumvvendl;intadd(inta,intb)/

54、函數(shù)定義returna+b;執(zhí)行結果:請輸入被加數(shù)和加數(shù):213625Sum=838函數(shù)定義的一般語法格式如下:函數(shù)類型函數(shù)名(參數(shù)表)函數(shù)體/有返回值,返回類型為整型1函數(shù)類型與返回值intsum(inta,intb)return(a+b);voidprintsum(inta,intb)/無返回值couta+bb?a:b;voidprint(void)/無參數(shù)coutC+iseasytolearn!endl;voidprint()/無參數(shù)coutHelloworld!endl;intmax(inta,b)形參在該函數(shù)被調用時才初始化,即從主調函數(shù)獲取數(shù)據(jù)。如果被調用函數(shù)不需要從調用函數(shù)那里獲

55、取數(shù)據(jù),則該函數(shù)可為無參函數(shù)。函數(shù)原型:函數(shù)原型又稱函數(shù)聲明,用來告訴編譯器函數(shù)頭的相關內容。函數(shù)原型通常位于程序代碼的開始處。函數(shù)原型的語法格式為:類型函數(shù)名(參數(shù)列表);參數(shù)列表的個數(shù)、順序和指定的類型必須和函數(shù)定義中一致。在函數(shù)原型說明中也可以不給出參數(shù)名,只給出類型。例如:intsum(int,int);/不帶參數(shù)名intfac(inta);/帶參數(shù)名第二節(jié)函數(shù)調用函數(shù)調用的概念:函數(shù)調用是用一個表達式表示。調用格式為:函數(shù)名(實參列表);實參是用來在調用函數(shù)時對形參進行初始化的,實參與形式參數(shù)個數(shù)相同、類型一致、順序一致。如果在一個文件中有多個函數(shù),一般都將主程序或主函數(shù)放在其他所有

56、函數(shù)的前面。在函數(shù)調用前進行函數(shù)原型的說明,被調用的函數(shù)定義放在后面。通常使用函數(shù)調用的返回值來給某個變量賦值。有返回值函數(shù)的調用格式為:變量名=函數(shù)名(實參列表);或coutv函數(shù)名(實參列表);在任何情況下,C+能自動將變量的類型轉換為與參數(shù)一致的類型,這是C+標準類型轉換的一部分。任何非法的轉換都會被C+編譯程序檢測出來?!纠?.2】編程求三個整數(shù)中最大的數(shù)。#includeintmax2(int,int);intmax3(int,int,int);voidmain()intsum,x,y,z,m;coutvv請輸入三個整數(shù):vvendl;cinxyz;m=max3(x,y,z);cou

57、tvv最大的數(shù)是:vvmvvendl;/函數(shù)定義intmax2(inta,intb)returnab?a:b;intmax3(inta,intb,intc)intm1,m2;m1=max2(a,b);m2=max2(m1,c)returnm2;執(zhí)行結果:請輸入三個數(shù):253647最大的數(shù)是:47函數(shù)調用的參數(shù)傳遞:參數(shù)形式:數(shù)值、引用、指針參數(shù)傳遞:傳值、傳址、引用傳值調用是利用參數(shù)傳遞數(shù)據(jù)最常用的方法。調用時系統(tǒng)先計算實參的值,再把實參的值按位置賦給對應的形式參數(shù)。本質是復制實參給形參,以后二者互不影響?!纠?.3】兩整型數(shù)互換。#includevoidswap(int,int);voidm

58、ain()inta,b;cinab;swap(a,b);coutmainprograma=atb=bn;/函數(shù)定義voidswap(intx,inty)intt;coutfunctionswapbegina=xtb=yn;t=x;x=y;y=t;coutfunctionswapenda=xtb=yn;程序執(zhí)行結果為:1020functionswapbegina=10b=20functionswapenda=20b=10mainprograma=10b=20return1函數(shù)的嵌套調用若在一個函數(shù)調用中又調用了另外一個函數(shù),則稱這樣的調用過程為函數(shù)的嵌套調用。程序執(zhí)行時從主函數(shù)開始執(zhí)行,遇到函數(shù)

59、調用時,如果函數(shù)是有參函數(shù),系統(tǒng)先進行實參對形參的替換,然后執(zhí)行被調用函數(shù)的函數(shù)體。如果函數(shù)體中還調用了其他函數(shù),再轉入執(zhí)行其他函數(shù)體。函數(shù)體執(zhí)行完畢后,返回到主調函數(shù),繼續(xù)執(zhí)行主調函數(shù)中的后續(xù)程序行。3.2.3函數(shù)的嵌套調用和遞歸調用2函數(shù)的遞歸調用在調用一個函數(shù)的過程中出現(xiàn)直接或間接調用該函數(shù)本身,就稱作函數(shù)的遞歸調用,這樣的函數(shù)稱為遞歸函數(shù)。編寫遞歸函數(shù)時,必須有終止遞歸調用的條件遞歸調用的兩個階段:第一階段:遞推。將原問題不斷分解為新的子問題,逐漸從未知向已知遞推第二階段:回歸。從已知條件出發(fā),按照遞推的逆過程,逐一求值回歸,最后達到遞歸的開始處,結束回歸階段,完成遞歸調用。第三節(jié)變量

60、的作用域在函數(shù)或者類內說明的變量是局部變量。局部變量僅在定義它的函數(shù)或類內起作用,在這個范圍之外不能使用這些變量。局部變量的作用域也稱為塊作用域。函數(shù)內部使用的局部變量包括形式參數(shù)和函數(shù)體內定義的變量。函數(shù)的形式參數(shù)的作用域在函數(shù)的函數(shù)體內部。不同函數(shù)如果使用相同的參數(shù)或變量,它們僅在其所在函數(shù)體內有效,互不影響。在函數(shù)體內定義的變量,其作用域從說明語句開始直到該函數(shù)結束為止。全局變量:全局變量是在函數(shù)和類外部定義的變量。全局變量的作用域從說明點開始直到文件結束。這種作用域也稱為文件作用域。全局變量一般集中在主函數(shù)之前說明。優(yōu)點:可以減少參數(shù)數(shù)量和數(shù)據(jù)傳遞時間。缺點:過多的全局變量會降低程序的

溫馨提示

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

評論

0/150

提交評論