C2012大學教程第3章_第1頁
C2012大學教程第3章_第2頁
C2012大學教程第3章_第3頁
C2012大學教程第3章_第4頁
C2012大學教程第3章_第5頁
已閱讀5頁,還剩84頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

23

C#程序入門3What’sinaname?Thatwhichwecallarose

byanyothernamewouldsmellassweet.WilliamShakespeareWhenfacedwithadecision,Ialwaysask,

“Whatwouldbethemostfun?”PeggyWalker4“Takesomemoretea,”theMarchHaresaidtoAlice,veryearnestly.“I’vehadnothingyet,”Alicerepliedinanoffendedtone,“soIcan’ttakemore.”“Youmeanyoucan’ttakeless,”saidtheHatter:“it’sveryeasytotakemorethannothing.”LewisCarroll

5目標本章將講解:用代碼而不用可視化編程技術編寫簡單的C#程序從鍵盤輸入數據和向屏幕輸出數據聲明并使用各種類型的數據存儲和讀取內存數據使用算術運算符確定運算符的執行順序編寫判斷語句使用關系運算符和相等運算符63.1

簡介3.2

一個簡單的C#程序:顯示一行文本3.3

在VisualStudio中創建簡單的程序3.4

修改C#程序3.5

用Console.Write和Console.WriteLine格式化文本3.6

另一個C#程序:數據相加3.7

內存概念3.8

算術運算符3.9

判斷:相等運算符與關系運算符3.10

(可選)ATM需求文檔73.1

簡介

控制臺應用程序(Consoleapplications)在控制臺窗口中輸入和輸出文本,在WindowsXP和WindowsVista系統中稱為命令提示(CommandPrompt)。8Welcome1.cs圖.3.1|顯示文本的程序聲明

Welcome1類注釋提高代碼可讀性3.2

一個簡單C#程序:顯示一行文本(續.)93.2

一個簡單C#程序:顯示一行文本(續.)程序員給程序文檔插入注釋。注釋提高代碼的可讀性。C#編譯器會忽略注釋,因此當運行程序時,注釋不會讓計算機執行任何動作。以//

開頭的注釋叫做單行注釋(single-linecomment),因為注釋在行的末尾就結束了。一個

//

注釋也可以在行中間開始并直到行末尾。

定界注釋(Delimitedcomments)

以定界符/*開始

并以定界符*/結束。所有包含在定界符之間的文本會被編譯器忽略。103.2

一個簡單C#程序:顯示一行文本(續.)常見的編程錯誤3.1遺忘定界注釋的某個定界符是一個語法錯誤。編程語言的語法制定了以這種語言創建正確的程序規則。當編譯器遇到違反C#語言規則的代碼時,就會出現語法錯誤。113.2

一個簡單C#程序:顯示一行文本(續.)一個

using

指令告訴編譯器到哪里去尋找程序中使用的類。預定義的類被放在命名空間——相關類的命名集合。.NET的名字空間統稱為.NET框架類庫。System

名字空間包含預定義Console類和其他有用的類

。123.2

一個簡單C#程序:顯示一行文本(續.)錯誤防止提示3.1如果程序中用到的類沒有用using指令指定它的名字空間,通常會造成編譯錯誤,出現諸如“Thename‘Console’doesnotexistinthecurrentcontext.”的消息。如果出現這種錯誤,應檢查是否提供了合適的using指令,還要檢查using指令,還要檢查using指令中的單詞是否拼寫正確,包括大小寫字母是否正確。133.2

一個簡單C#程序:顯示一行文本(續.)程序員使用空行和空字符來使程序更易于閱讀??招?、空字符和制表符一起被稱為空白(whitespace),空白被編譯器忽略。143.2

一個簡單C#程序:顯示一行文本(續.)關鍵字Keywords(有時被稱為保留字reservedwords)是C#保留使用的,全部采用小寫字母。每一個程序至少有一個由程序員定義的類聲明classdeclaration,稱為“用戶定義類”user-definedclasses。類關鍵字引入類聲明,它的后面緊跟類的名稱。153.2

一個簡單C#程序:顯示一行文本(續.)好的編程經驗3.1按照慣例,類名稱標識符總是以一個大寫字母開頭,并將其后的每個單詞的首字母都大寫。16圖.3.2

|

C#關鍵字和上下文關鍵字

(部分1.)類名稱是一個標識符identifier:一系列的字母、數字和下劃線(_)組成。不能以數字開頭,也不能包含空格。圖3.2中列出了C#關鍵字的完整清單。3.2

一個簡單C#程序:顯示一行文本(續.)17圖.3.2

|

C#關鍵字和上下文關鍵字

(部分2.)在圖3.2中的上下文關鍵字被用于標識符,但為了清晰起見,不推薦這樣做。3.2

一個簡單C#程序:顯示一行文本(續.)183.2

一個簡單C#程序:顯示一行文本(續.)C#是大小寫敏感

casesensitive—大小寫字母是有區別的,因此

a1

A1

是不同的(但有效)標識符。常見的編程錯誤3.2C#是大小寫敏感的。用錯了標識符的大寫和小寫字母,通常會導致編譯錯誤。標識符的前面還可以加上@

符號。這個符號表明了單詞應當解釋為標識符,即使它為關鍵字。(e.g.@int).193.2

一個簡單C#程序:顯示一行文本(續.)好的編程經驗3.2按照慣例,命名包含一個公共類的文件時應和類同名(加上.cs擴展名),拼寫和大小寫都一致。

這樣的命名有利于確定程序類的位置。203.2

一個簡單C#程序:顯示一行文本(續.)每個類聲明的類體(body)都以一個左花括號

{開始。并以一個對應的右花括號

}來結束類的聲明。錯誤預防提示3.2一旦在程序中輸入了左花括號{,就立即輸入右花括號}。然后將光標重新定位到二者之間并進行縮進,再進行輸入。這一經驗有助于避免因遺漏花括號而出現錯誤。好的編程經驗3.3在界定體的左花括號和右花括號之間,應將每個類聲明的整個類體都縮進一“級”。這種格式既突出了類聲明的結構,又使它更易閱讀。選擇Edit>Advanced>FormatDocument。可以讓IDE格式化代碼。213.2

一個簡單C#程序:顯示一行文本(續.)好的編程

經驗3.4設置愿意采用的縮進量,然后一致地使用它。也可以使用Tab鍵來來產生縮進,但不同的文本編輯器的制表符長度可能不同。推進每個縮進三個空格。在3.3中講解了如何進行這種設置。常見的編程錯誤3.3如果花括號不成對出現,則是一種語法錯誤。223.2

一個簡單C#程序:顯示一行文本(續.)標識符后面的圓括號Parentheses表示它是一個稱為方法的程序構建塊

。類聲明中通常包含一個或多個方法。方法名采用與類名相同的大小寫慣例。對每個應用程序,類中必須有一個Main方法;否則程序將不能運行。方法能夠執行任務,并在完成任務后返回信息。關鍵字void

表示這個方法在完成任務后不返回任何信息。233.2

一個簡單C#程序:顯示一行文本(續.)方法體聲明以左花括號{開始,以對應的右花括號}結束。好的編程經驗3.5和類聲明一樣,在界定方法體的左花括號和右花括號之間,應將每個方法聲明的整個方法體都縮進一級。這種格式使方法的結構更突出,也使方法聲明更易讀。243.2

一個簡單C#程序:顯示一行文本(續.)在雙引號之間的字符表示是字符串strings。

在字符串中的空白符不會被編譯器忽略。Console.WriteLine

方法實現在控制臺窗口中顯示一行文本。括號中的字符串是Console.WriteLine

方法的參數。Console.WriteLine

方法的作用在控制臺窗口中顯示參數(也叫輸出)。253.2

一個簡單C#程序:顯示一行文本(續.)一個方法一般由一條或多條語句組成,執行方法的任務。(語句:statements)多數語句以分號結束。(分號:semicolon)常見的編程錯誤3.4在語句的結尾省略分號是一個語法錯誤。263.2

一個簡單C#程序:顯示一行文本(續.)錯誤防止提示3.3當編譯器報告語法錯誤時,錯誤可能不在錯誤消息所指的行中。首先要檢查報告錯誤的行,如果該行沒有語法錯誤,則要檢查前面的幾個行。好的編程經驗3.6在方法體或類聲明的后面,進行注釋有利于提高程序的可讀性。273.3

在VisualC#Express中創建一個簡單的程序創建控制臺應用程序r選擇“文件”

File

>“新建”-“項目”

New

Project…顯示“新建項目”對話框

(Fig.

3.3)。選擇“控制臺應用程序”Console

Application

模板。在對話框的名稱欄中,輸入Welcome1,并單擊“確定”

OK

創建工程。283.3

在VisualC#Express中創建一個簡單的程序(續.)Projectname圖.3.3

|用新建工程創建控制臺應用程序

工程名293.3

在VisualC#Express中創建一個簡單的程序(續.)IDE現在包含了打開的控制臺應用程序。IDE使用的代碼配色方案稱為“語法顏色高亮”

syntax-colorshading

,可以幫助程序員直觀地區分程序元素。303.3

在VisualC#Express中創建一個簡單的程序(續.)圖.3.4

|打開控制臺程序的IDE編輯器窗口

313.3

在VisualC#Express中創建一個簡單的程序(續.)設置IDE顯示行號,選擇“工具”

Tools

>“選項”

Options….在對話框中顯示(圖.

3.5),單擊對話框的左下方的“顯示所有設置”

Showallsettings

復選框。展開左邊的“文本編輯器”TextEditor的節點

,并選擇“所有語言”AllLanguages.在右側,選中“行號”Linenumbers

復選框。注:由于VisualStudio版本不同,設置稍有差異。323.3

在VisualC#Express中創建一個簡單的程序(續.)圖.3.5

|修改IDE的設置333.3

在VisualC#Express中創建一個簡單的程序(續.)設置代碼縮進三個字符:在選項對話框中,展開左面板中C#節點并并選擇制表符。確保選中插入空格。縮進大小和制表符大小都輸入。.單擊“確定”保存設置。關閉對話框轉入編輯窗口。343.3

在VisualC#Express中創建一個簡單的程序(續.)重命名程序文件,單擊“解決方案資源管理器”窗口中的Program.cs

文件,在屬性窗口中顯示它的屬性(圖.

3.6).改變文件名為Welcome1.cs。353.3

在VisualC#Express中創建一個簡單的程序(續.)圖.3.6

|在Properties

窗口中重命名程序文件

單擊

Program.cs

,顯示它的屬性在此處輸入Welcome.cs,重命名文件FileName

屬性屬性窗口SolutionExplorer363.3

在VisualC#Express中創建一個簡單的程序(續.)智能感應IntelliSense

列出類的成員,包括方法的名稱。當輸入時,VisualC#Express會高亮顯示第一個成員,輸入匹配全部字符,然后顯示工具提示包含這個成員的描述。你既可以輸入全部的成員名稱,也可以雙擊列表中成員名或按Tab鍵來完成輸入。當智能感應窗口顯示時,按Ctrl

鍵使窗口透明以致于可以看見窗口后面的代碼。373.3

在VisualC#Express中創建一個簡單的程序(續.)圖.3.7

|

VisualC#Express.的智能感應特點

鍵入的部分名稱智能感應窗口最匹配的項被高亮顯示工具提示描述了被高亮顯示的項383.3

在VisualC#Express中創建一個簡單的程序(續.)當你輸入開始圓括號字符,(,在方法名之后,會顯示

參數信息ParameterInfo窗口(圖.

3.8)。這個窗口包含方法參數的信息。向下箭頭參數信息窗口向上箭頭圖.3.8

|

參數信息窗口

向上向下箭頭允許通過滾動來加載方法393.3

在VisualC#Express中創建一個簡單的程序(續.)保存程序,選擇“文件”

File

>“保存全部”

Save

All

顯示保存工程對話框。

在“位置”Location

文本框中,指定想要保存的目錄。選擇“為解決方案創建目錄”

Create

directory

for

solution

復選框并單擊“保存”Save。403.3

在VisualC#Express中創建一個簡單的程序(續.)編譯程序,選擇“生成”

Build>“生成解決方案”

BuildSolution。運行程序,選擇“調試”

Debug

>開始執行StartWithoutDebugging(或按Ctrl+F5)。這樣就會調用Main方法。圖3.10顯示了程序的執行結果,在控制臺窗口顯示

。(控制臺也就是命令窗口CommandPrompt)413.3

在VisualC#Express中創建一個簡單的程序(續.)圖.3.9

|在圖.

3.1中執行程序.

控制臺窗口423.3

在VisualC#Express中創建一個簡單的程序(續.)錯誤防止提示3.4當學習編程時,有時“停止”正在運行的程序以便

了解編譯的語法錯誤信息。試圖移去圖Fig.3.1中的分號或括號,然后重新編譯應用程序,看被遺漏的錯誤信息。433.3

在VisualC#Express中創建一個簡單的程序(續.)當輸入代碼時,IDE通過語法顏色或語法錯誤。語法錯誤表明違反了VisualC#創建應用程序的規則。當語法錯誤產生時,IDE會用紅色標注錯誤,并顯示一個錯誤描述的窗口。(圖.

3.10).443.3

在VisualC#Express中創建一個簡單的程序(續.)圖.3.10

|

IDE中的語法錯誤消息故意省略分號(語法錯誤)表明語法錯誤的波浪線錯誤描述錯誤清單窗口453.3

在VisualC#Express中創建一個簡單的程序(續.)

錯誤防止提示3.5一個語法錯誤可能導致在錯誤清單窗口中出現多條錯誤信息。改正一個錯誤后,重新編譯程序時可能會消除多個后續的錯誤消息。因此,看到并知道如何修改一個錯誤時,應先改正它并重新編譯。這樣可能消除多個其他的錯誤信息。46圖3.11所示的Welcome2類使用了兩條語句,產生如前面的例子圖

3.11所示相同的輸出。與WriteLine不同,Console類Write方法不能將光標的位置定位到控制臺程序屏幕下一行的開始。3.4

修改C#程序47圖.3.11|用多條語句顯示一行文本.Write

方法不會將光標移動到新的一行3.4

修改C#程序(續.)Welcome2.cs48通過使用新行符可以用單條語句顯示多行文本。與空格符和制表符一樣,新行符也是空白符。圖3.12的應用程序輸出4行文本,用新行符表明什么時候開始新行。OutlineWelcome3.cs圖.3.12|用單條語句顯示多行文本493.4

修改C#程序(續.)反斜杠backslash(\)被稱為轉義符escapecharacter,并且它是轉義序列escape-sequence的一個字符。轉義序列\n表明新行符newlinecharacter。圖

3.13列出了幾個常用的轉義序列并描述了在控制臺窗口中如何輸出。503.4

修改C#程序(續.)Fig.3.16

|

Somecommonescapesequences.圖.3.13|一些常用的轉義序列S51Console的Write和WriteLine方法的功能就是現實格式化的數據。圖3.14展示了另外一種方法來使用WriteLine方法。OutlineWelcome4.cs圖.3.14|用字符串格式化方式顯示多行文本.WriteLine方法的第一個參數是格式化字符串formatstring

,可以包含預置文本fixedtext

和格式項formatitems。3.5

用Console.Write

Console.WriteLine

格式化文本523.5

用Console.Write和Console.WriteLine

格式化文本當一個方法需要多個實參時,參數用逗號分隔。(commas:逗號)好的編程經驗3.7在每個實參列表的逗號之后加一個空格(,)可以提高程序的可讀性。 大語句可以分成多行,但是存在一定的限制。常見的編程錯誤3.5將一條語句中的標識符或字符串從中間斷行分開是一個語法錯誤。533.5

用Console.Write和Console.WriteLine

格式化文本

WriteLine方法的第一個參數是一個格式化字符串formatstring

,由固定文本fixedtext

和格式項

formatitems組成.每個格式項都是一個值的占位符placeholder,WriteLine相對應的其它額外的參數:{0}是第一個額外的參數占位符。

{1}是第二個額外的參數占位符,等等。格式項也可以包含可選的格式信息。543.6

另一個C#程序:整數相加程序將數值和其他數據保存在計算機內存中,并通過稱為變量variables的元素訪問這些數據。變量variable

存放在內存中,存儲在變量中在以后的程序中可以被使用。變量聲明語句

variabledeclarationstatement(也叫定義

declaration)界定了變量的名稱和類型一個變量的名稱使程序訪問存儲在內存中的變量——名稱可以是任何有效的標識。

一個變量的類型界定了在類存中存儲什么類型的信息。55三個變量聲明為整形intOutlineAddition.cs(1of2)圖.3.15|顯示通過鍵盤輸入的兩個數的值.(Part1of2).Console.ReadLine()讀取用戶輸入的信息,用

Convert.ToInt32

轉換成為整形值。將三個變量聲明為整形用戶提示信息56OutlineAddition.cs(2of2)圖.3.15|顯示通過鍵盤輸入的兩個數的值(Part2of2).573.6

另一個C#程序:整數相加(續.)int

變量類型存儲整形integer

值(數字如7,–11,0

31914).float,double

decimal

類型指定實數(帶有小數點的十進制數)。char

類型表示單個字符。這些類型成為簡單類型simpletypes。簡單類型的名稱是關鍵字因而必須是小寫字母

。583.6

另一個C#程序:整數相加(續.)變量聲明語句可以被分成幾行,變量名用逗號分隔。(例如.,一個變量名的逗號分隔列表)。相同類型的變量可以聲明在一行或多行中。好的編程經驗3.8在單獨的行中聲明每個變量。這種格式變量聲明使得很容易插入注釋。593.6

另一個C#程序:整數相加(續.)好的編程經驗3.9選擇有意義的變量名,可使代碼具有自說明性,也就是說只需閱讀代碼本身就可以理解它的功能,而無需查看手冊或注釋。好的編程經驗3.10按照約定,變量名稱的第一個字母要小寫,而后續所有單詞都以一個大寫字母開始,這種命名慣例稱為小寫駝峰規則。(camelcasing:駝峰)603.6

另一個C#程序:整數相加(續.)Console的ReadLine方法等待用戶用鍵盤輸入字符并按“回車”鍵。ReadLine返回下一個用戶輸入。Convert類的ToInt32方法轉換這個字符串為int類型的數據。ToInt32

返回int

值,代表用戶的輸入。613.6

另一個C#程序:整數相加(續.)一個值用賦值符號存儲在變量中。assignmentoperator:賦值符號(=)符號“=”被稱為二元運算符binaryoperator,因為它對兩塊信息或操作數進行操作。賦值語句assignmentstatement將一個值賦給變量。賦值運算符右側任何內容總是在賦值執行之前計算的。好的編程習慣3.11在二元運算符的兩邊插入空格可以使它更突出并使代碼更可讀。623.6

另一個C#程序:整數相加(續.)語句中與值相關的任何部分都是表達式。number1

+

number2的表達式的值就是它們的和。表達式Console.ReadLine()的值就是用戶輸入的字符串。計算可以在輸出語句中執行。633.7

內存概念變量名實際上都對應于計算機中內存的某個位置。每個變量都具有名稱、類型、大小和值。在

3.16,計算機會將這個整數值45放入位置number1。圖.3.16

|展示變量

number1的名稱和值的內存位置.

643.7

內存概念(續.)在圖.

3.17,72

被放置在number2.圖.3.17

|保存變量number1

和number2的值后的內存位置.653.7

內存概念(續.)在sum

被計算后,內存應如圖.

3.18.圖.3.18

|計算并保存變量

number1

number2的和之后的內存位置.663.7

內存概念(續.)當一個值被放入內存位置時,這個值替換同一位置以前的,并且前面的值會丟失。當從內存中讀值時,過程是非破壞性的nondestructive。

67圖.3.19

|

算術運算符算術運算符arithmeticoperators被匯總在圖.

3.19。圖.

3.19的操作運算符是二元運算符3.8

算術運算符683.8

算術運算符(續.)整除Integerdivision產生一個整數商—整數后面的任何小數都直接刪除而不進行四舍五入。C#提供了余數運算符remainderoperator%,它產生整除后的余數。余數操作大多數用在整數操作,但是也可以用于浮點數floats,雙精度數doubles,和小數decimals.括號被用在C#表達式中同樣也用在代數表達式中。假如一個表達式包含嵌套括號nestedparentheses,最內層的括號表達式優先計算。69圖.3.20

|

算術運算符的優先級算術運算符根據運算符優先級operatorprecedence規則來計算,如下的代數運算符也遵循優先級規則。(圖.

3.20).3.8

算術運算符(續.)703.8

算術運算符(續.)下面語句中圓圈中的數字表示C#執行操作的順序。

乘法、求余和除法運算會首先按從左到右的順序執行(即它們的結合律是從左到右的),因為與加法和減法相比,它們具有更高的優先級。然后進行加法和減法運算。這些運算是從左到右的。713.8

算術運算(續.)為了更好地理解運算符優先級的規則,考慮下面這個二次多項式second-degreepolynomial

(y=ax2+bx+c):723.8

算術運算(續.)在代數式中,為了使代碼更加清楚加入非必要的括號是可接受的(redundant:不需要的)。前面的賦值語句可以用括號來強調它的項,如下所示:y=(a*x*x)+(b*x)+c;

733.8

算術運算符(續.)圖.3.21

|二次多項式中的求值.743.9

判斷:相等運算符與關系運算符Fig.3.25

|

Equalityandrelationaloperators.(Part1of2.)條件就是一個結果為真或假的表達式。條件語句可以由相等運算符equalityoperators(==and!=)和關系運算符relationaloperators(>,<,>=and<=)構成,如圖.

3.22.圖.3.25|相等運算符和關系運算符.(Part1of2)753.9

判斷:相等運算符與關系運算符(續.)Fig.3.25

|

Equalityandrelationaloperators.(Part2of2.)圖.3.22|相等運算符和關系運算符(Part2of2)763.9

判斷:相等運算符與關系運算符(續.)常見的編程錯誤3.6混淆相等運算符==和賦值運算符=

,會導致邏輯錯誤和語法錯誤。這個相等運算符表示,而賦值運算符相當于“獲得”或“獲得某個值”。為了避免混淆,有人講這個相等運算符讀作“雙等于”或“等于等于”。77圖

3.26中使用6個if語句比較用戶輸入的兩個整數。OutlineComparison.cs(1of3)圖.3.26|用if語句、相等運算符和關系運算符比較整數(Part1of3).78Comparenumber1andnumber2forequality.OutlineComparison.cs(2of3)Fig.3.26|用if語句、相等運算符和關系運算符比較整數

(Part2of3).79OutlineComparison.cs(3of3)圖.3.26|用if語句、相等運算符和關系運算符比較整數

(Part3of3).803.9

判斷:相等運算符與關系運算符(續.)如果if條件語句為真時,那么與if相關的語句將執行。

if語句總是以if關鍵字開頭,后接用圓括號括起來的條件。

if

語句的語句體總是一條語句。常見的編程錯誤3.7遺忘if語句的左括號或右括號是一種語法錯誤———圓括號是必

溫馨提示

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

最新文檔

評論

0/150

提交評論