Microsoft PowerPoint - ch5.pptx

Similar documents
untitled

untitled

untitled

untitled

Microsoft Word - 04_object_Boxing_property_indexer.doc

untitled

投影片 1

Microsoft PowerPoint - ch1.pptx

第1章

第1章

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

chp6.ppt

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式]

運算子多載 Operator Overloading

untitled

《大话设计模式》第一章

第1章

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

Microsoft Word - 投影片ch13

第3章.doc

Microsoft PowerPoint - 20-string-s.pptx

Microsoft Word - CPMidTerm2011SpringSolution

Microsoft PowerPoint - ch09_AEL0080.ppt

Microsoft PowerPoint - Chap03.ppt [相容模式]

untitled

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

Microsoft PowerPoint - C-Ch10.ppt

The golden pins of the PCI card can be oxidized after months or years

Microsoft Word - JAVA Programming Language Homework I ans

EJB-Programming-4-cn.doc

Chapter 9: Objects and Classes

Microsoft Word - ch04三校.doc

untitled

The Embedded computing platform

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Microsoft PowerPoint - 13_ClassAndObj.ppt

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

4. 如下的程式碼中, 宣告了類別 A3 和 B3 由於在兩個類別中都定義了 print() 的方法, 所以依據定義, 總共有兩次的 overloading 以及一次的 overriding public class A3 { public class B3 extends A3 { protect

untitled

Microsoft PowerPoint - 14Threads.ppt

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

新版 明解C++入門編

JavaIO.PDF

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

untitled

Microsoft PowerPoint - SAGE 2010

一、

Chapter 16 集合

運算子多載 Operator Overloading

Microsoft PowerPoint - 13_Exception.ppt

Microsoft Word - CPMidTerm2011Spring


Microsoft Word - CPMidTerm2012SpringSolution

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

EJB-Programming-3.PDF

第一章 章标题-F2 上空24,下空24

PowerPoint 簡報

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63>

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

建立Android新專案

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

CC213

CC213

PowerPoint Presentation

Microsoft PowerPoint - C-Ch11.ppt

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

書面

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

96年特種考試第一次司法人員考試試題解答

PowerPoint Presentation

FY.DOC

C 語言—陣列及字串

PowerPoint 簡報

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

Microsoft Word - 1-1泰宇解答

( )... 5 ( ) ( )

Microsoft PowerPoint - 13_指標、資料傳遞2.pptx

Microsoft PowerPoint - Class5.pptx

Microsoft PowerPoint - 04_Array

Excel VBA Excel Visual Basic for Application

Visual C# 2005程式設計

ActiveX Control

Microsoft Word - 投影片ch15

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

Microsoft PowerPoint - 遊戲企劃

Microsoft Word - 01.DOC

Microsoft PowerPoint - C-Ch12.ppt

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

Chapter12 Derived Classes

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

Microsoft PowerPoint - SE7ch05.ppt

untitled

Slide 1

Transcription:

.NET 程式設計入門 ( 使用 C#) 1

Outline ArrayList 集合類別 陣列類別 字串類別 其它常用類別 引用外部類別 程式偵錯 例外處理 2

MSDN Library MSDN Library 含括大量的專業程式設計資訊, 其中包含範例程式碼 技術文件 白皮書及參考指南 我們可以藉由工具列上 [ 說明 ] 中的 [ 內容 ] [ 索引 ] [ 搜尋 ], 來查詢 MSDN Library, 了解欲使用的類別中擁在那些成員及各成員的用法等資訊 在程式碼撰寫視窗中, 將游標放於欲查詢的類別或成員名稱上, 可利用快速鍵 F1 查詢之 線上文件 英文 http://msdn.microsoft.com/library/ 中文 3 http://msdn.microsoft.com/library/cht/

Object 型別 object 型別是所有參考型別的基礎, 因此所有類別都是直接或間接繼承自 object 型別 任何參考型別的值皆可指定至 object 型別 Boxing 將實值型別轉換成參考型別的動作稱為 boxing ex.. object o = (int) 1; 4

Object 型別 UnBoxing 將物件的值轉換成實值型別的值的過程稱之為 UnBoxing ex.. int i = (int) o; 5

ArrayList 類別 (1) 使用陣列時我們必須先設定好陣列的大小才可以使用, 相當不方便 ArrayList 屬於集合, 集合大小會隨資料量大小動態改變 陣列與集合比較 項目 陣列 集合 自動調整大小 不可 可 儲存型別 相同 不同 執行速度 較快 較慢 6

ArrayList 類別 (2) 命名空間 System.Collections; 常用屬性 Count 實際包含的元素個數 常用方法 Add 將物件加入至末端 Insert 將物件插入至指定位置 Remove 移除第一個符合指定物件的元素 Clear 清除所有元素 Sort 以遞增方式排序元素 Reverse 將元素次序反轉 7

實例探討 sample5-a1 a1 (1) 程式功能 將元素加入 ArrayList 中 列印 ArrayList 中各元素值 程式內容 class car { } public car(int x) { id = x; } public int id; 8

實例探討 sample5-a1 a1 (2) 程式內容 static void Main(string[] args) { ArrayList myal = new ArrayList(); car mycar = new car(10); myal.add(12); myal.add("ives"); myal.add(mycar); y Console.WriteLine("myAL[{0}]..{1}",0,myAL[0]); Console.WriteLine("myAL[{0}]..{1}",1,myAL[1]); Console.WriteLine("myAL[{0}]..{1}",2,((car)myAL[2]).id); ((car)myal[2]).id = 100; Console.WriteLine( WriteLine("myCar.." + mycar.id); } 9

課堂練習 sample5-b1 程式功能 請使用者輸入正整數資料 ( 不限筆數 ) 當使用者輸入為負數停止 將使用者輸入的資料排序後列印至螢幕 基本概念 利用迴圈及 ArrayList 來儲存使用者輸入的資料 利用 Sort 方法將資料進行排序動作 10

Outline ArrayList 集合類別 陣列類別 字串類別 其它常用類別 引用外部類別 程式偵錯 例外處理 11

陣列類別常用成員 常用屬性 Rank 陣列的維度大小 Length 陣列元素個數 常用方法 GetLength 回傳某一維度的長度 Clone 複製陣列內容至一新陣列實體 ( 不會複製參考所參考的物件 ) 靜態方法 Sort 排序陣列元素 IndexOf 回傳第一個符合參數值的索引位置 12

實例探討 sample5-a2 a2 (1) 程式功能 陣列類別屬性方法測試 比較實值型別與參考型別 程式內容 class car { } public int id; 13

實例探討 sample5-a2 a2 (2) static ti void Main(string[] i args) { int[,] x = new int[2,3]; Console.WriteLine("Length Length.." + x.length); Console.WriteLine("Rank.. " + x.rank); Console.WriteLine("GetLength(0) tl th(0).. " + x.getlength(0)); Console.WriteLine("GetLength(1).. " + x.getlength(1)); 14

實例探討 sample5-a2 a2 (3) car[] mycar = new car[5]; for(int i=0; i<mycar.length; i++) { mycar[i] = new car(); mycar[i].id = i; } Console.WriteLine(); 15

實例探討 sample5-a2 a2 (3) // 實值型別與參考型別比較 x[0,0] = 100; mycar[0].id = 100; int[,] y = (int[,]) x.clone(); car[] mymoto = (car[]) mycar.clone(); y[0,0] 0] = 0; mymoto[0].id = 0; 16

實例探討 sample5-a2 a2 (4) } Console.WriteLine("x[0,0].." + x[0,0]); Console.WriteLine("y[0,0] (y[.." + y[0,0]); Console.WriteLine("myCar[0].id.." + mycar[0].id); Console.WriteLine("myMoto[0].id.." + mymoto[0].id); 17

課堂練習 sample5-b2 程式功能 建立一個型別為 int 的一維陣列, 內含 10 個元素, 元素值利用亂數來決定 (1~10) 10) 請使用者輸入一個數字 (1~10) 列印出陣列當中是否包含該數字, 若有則列 印該數字在陣列當中的位置 最後將陣列中所有元素列印出來 基本概念 利用 IndexOf 靜態方法找出所在位置 18

Outline ArrayList 集合類別 陣列類別 字串類別 其它常用類別 引用外部類別 程式偵錯 例外處理 19

字串類別常用成員 常用屬性 Length 字串字元個數 ( 中文長度計算同英文 ) 常用方法 ToUpper / ToLower 字串大小寫轉換 Insert 字串插入 20

字串類別常用成員 PadLeft / PadRight 以指定字元補足指定長度 IndexOf 找出指定文字在字串中第一次出現的位置 Split 將字串依指定分隔字元切割依序存入字串陣列 Replace 將字串中部份文字以其它文字取代 SubString 取得字串中指定範圍的文字 21

實例探討 sample5-a3 a3 程式功能 字串類別屬性方法測試 程式內容 string str = "Alice is a good student!!"; Console.WriteLine(str); Console.WriteLine("ToUpper.." + str.toupper()); 22

實例探討 sample5-a3 a3 Console.WriteLine("ToLower.." + str.tolower()); Console.WriteLine("Insert.." + str.insert(6,"wang ")) string[] strarray = str.split(' '); for(int i=0; i<strarray.length; i++) Console.WriteLine(strArray[i]); 23

課堂練習 sample5-b3 程式功能 請使用者輸入多個整數值 ( 以逗號區隔 ) 列印輸入的整數值總和 基本概念 利用 Split 方法取得輸入字串中的各數值 24

格式化字元 貨幣格式 C C 或 c Console.WriteLine("{0:c}",4.5); //NT$4.50 十進位數 Dn 或 dn Console.WriteLine("{0:d5}",4); //00004 科學記號 E 或 e Console.WriteLine("{0:e}",4); //4.000000e+001 定點格式 Fn 或 fn Console.WriteLine( WriteLine("{0:f3}",4); //4.000 數值格式 Nn 或 nn Console.WriteLine("{0:n2}",4000); ({ }, //4,000.00 十六進位 X 或 x Console.WriteLine("{0:x}",10); //a 25

自訂數值格式輸出字串 0 顯示數值位數比設定格式位數小時, 資料左邊以 0 填滿位數 # 顯示數值位數比設定格式位數小時, 資料右邊以空白填滿位數. 以小數點右方位數決定小數位數, 超過位數以四捨五入處理 26

自訂數值格式輸出字串, 使用千位分隔符號, 千位分隔放在最後, 則數值除以 1000 顯示, 放置二個除以 1000000 顯示 % 數值乘以 100 顯示 27

實例探討 sample5-a4 a4 (1) 程式功能 測試自訂數值格式輸出字串 程式內容 double myvar1 = 0801234567; Console.WriteLine(" 1." + myvar1.tostring( ToString("(0##)### (0##)###-####")); 28

實例探討 sample5-a4 a4 (1) int myvar2 = -12345; Console.WriteLine(" 2." + myvar2.tostring("######")); Console.WriteLine(" 3." + myvar2.tostring("000000")); 29

實例探討 sample5-a4 a4 (2) 程式內容 double myvar3 = -2.455; Console.WriteLine(" 4." + myvar3.tostring("#.##")); Console.WriteLine(" 5." + myvar3.tostring("00.00")); 3T ("0000")) Console.WriteLine(" 6." + myvar3.tostring( ToString("00.00000 00000")); double myvar4 = 1234567890; 30

實例探討 sample5-a4 a4 (2) Console.WriteLine(" 7." + myvar4.tostring("#,#")); Console.WriteLine(" 8." + myvar4.tostring("#,")); ")) Console.WriteLine(" 9." + myvar4.tostring( ToString("# #,,")); Console.WriteLine("10." + myvar4.tostring("#,,,")); double myvar5 = 0.086; Console.WriteLine("11." + myvar5.tostring("#.#%")); 31

Outline ArrayList 集合類別 陣列類別 字串類別 其它常用類別 引用外部類別 程式偵錯 例外處理 32

其它類別 DateTime 提供時間與日期相關的設定 ( 含閏年查詢靜態方法 ) Math 提供許多關於三角函數 指數 對數等常見數學函數運算 Random 提供亂數方面的功能 33

實例探討 sample5-a5 a5 程式功能 DateTime 及 Math 類別靜態方法測試 程式內容 Console.WriteLine(" 現在時刻.. " + DateTime.Now); Console.WriteLine("2 的 10 次方為 " + Math.Pow(2,10)); Console.WriteLine("-2 的絕對值為 " + Math.Abs(- 2)); Console.WriteLine("Sin(pi/2) 為 " + Math.Sin(Math.PI/2)); 34

課堂練習 sample5-b4 程式功能 請使用者輸入一年份 列印該年是否為閏年 基本概念 利用 DateTime 中判斷閏年的方法來完成 35

Outline ArrayList 集合類別 陣列類別 字串類別 其它常用類別 引用外部類別 程式偵錯 例外處理 36

引用外部類別 (1) 我們可以將常用的類別寫在類別庫專案當中, 提供自己或是外部專案來引用 要引用外部類別必須將該類別所屬的組件檔 (.dll) 加入至欲引用的專案參考中 欲使用某一類別時, 尚需利用 using 關鍵字加入該類別所屬命名空間 37

引用外部類別 (2) 將常用類別撰寫於類別庫當中 利用工具列中 建置 建置方案 進行編譯產生組件檔 (.dll) 38

引用外部類別 (3) 若要引用該類別庫類別, 在欲引用專案的方案總管參考部份點選右鍵 39

引用外部類別 (4) 透過瀏覽按鈕加入該類別庫組件 40

引用外部類別 (5) 選取組件檔 41

實例探討 sample5-a6 a6 (1) 程式功能 以類別庫建立一類別包含二數相加靜態方法 在專案中引用該類別庫呼叫該相加運算方法 程式內容 ClassLibrary1 namespace ClassLibrary1 { public class myclass { public static int Add(int a, int b) { return a+b; } } } 42

實例探討 sample5-a6 a6 (2) 程式內容 sample5-a6 using System; using ClassLibrary1; namespace sample5_a6 { class Class1 { static void Main(string[] args) { Console.WriteLine("2+3=" + myclass.add(2,3)); Console.ReadLine(); } } } 43

課堂練習 sample5-b5 程式功能 類別庫 以類別庫建立一類別包含一靜態方法 該靜態方法可傳入一字串回傳一布林型別 此靜態方法可檢查傳入字串是否為合法 E- mail 帳號 程式功能 主程式 引用上述類別庫 請使用者輸入 E-mail 帳號 列印輸入結果是否正確 44

課堂練習 sample5-b5 基本概念 假設合法 E-mail 帳號需包含 @ 符號並且 @ 符號後至少需有一個. 符號 可利用 string 類別中的 IndexOf 方法來檢查 45

Outline ArrayList 集合類別 陣列類別 字串類別 其它常用類別 引用外部類別 程式偵錯 例外處理 46

程式偵錯 語法錯誤 程式的語法撰寫不正錯, 編譯時即會指出錯誤的地方 邏輯錯誤 程式撰寫邏輯觀念有誤, 也是最難察覺的錯誤, 可利用偵錯工具來協助找出錯誤之處 執行時期錯誤 使用者輸入的資料型別不符 計算過程分母為 0 磁碟中無指定檔案等執行時期錯誤, 可利用 try catch 敍述來解決 47

中斷 (1) 中斷 當程式執行至中斷點處即會暫停, 此時可藉由其它工具來查詢各變數目前數值 設定中斷點 將滑鼠移到欲設置中斷點程式碼左方, 按下滑鼠左鍵即可設定中斷點 48

中斷 (2) 當程式執行至中斷點時, 我們可以逐步一行行執行程式觀察每個變數數值的變化 逐步執行 每按一次 [ 逐步執行 ] 執行一行程式碼, 會執行函式內程式碼 不進入函式 每按一次 [ 不進入函式 ] 執行一行程式碼, 但不會執行函式內部的程式 49

中斷 (3) 當程式執行至中斷點處, 可以開啟 [ 偵錯 ] [ 視窗 ] 中的 [ 自動變數 ] [ 區域變數 ] [ 監看式 ] 視窗來觀察變數值的變化 自動變數 顯示程式目前執行行號附近的變數 區域變數 顯示程式目前執行區塊所宣告的變數 監看式 自訂想要觀看的變數 50

實例探討 sample5-a7 a7 程式功能 觀察變數值 中斷測試 程式內容 x = 10; int c = 0; for(int i=0; i<10; i++) c+=i; c += x; ArrayList myal = new ArrayList(); myal.add(c); x = (int)myal[0]; 51

Outline ArrayList 集合類別 陣列類別 字串類別 其它常用類別 引用外部類別 程式偵錯 例外處理 52

例外處理 (1) 程式在執行時, 經常會因為使用的操作或環境因素而出現未預期的錯誤 讀取軟碟, 但軟碟機尚未放置磁片 我們可以使用 try catch finally 來捕捉未預期的錯誤 當執行至 try 程式區塊內發生錯誤時, 會逐一檢查該錯誤符合那個 catch, 以便執行該 catch 內所撰寫的錯誤處理程式 不管有沒有符合的 catch, 最後都會執行 finally 內的程式區塊 53

例外處理 (2) 所有的例外類別都是衍生自內建的 Exception 例外類別 常用的例外類別 類別 Exception 說明 執行時期產生錯誤 DivideByZeroException 除數為 0 IndexOutOfRangeException InvalidCastException OverflowException 索引值超出陣列範圍 型別轉換錯說溢位 常用屬性 Message 取得例外的描述訊息 54

語法 try { 程式區塊 ; } catch ( 例外類別變數名 ) { 程式區塊 ; } catch ( 例外類別變數名 ) { 程式區塊 ; } finally { 例外處理 (3) 程式區塊 ; } 55

例外處理 (4) 用法 try { int x = 0; x = 3/x; } catch { Console.WriteLine(" 發生錯誤!!"); } finally { Console.WriteLine(" 結束 "); } 56

實例探討 sample5-a8 a8 (1) 程式功能 請使用者輸入一個數 x 計算 3 除以 x 的值 程式內容 try { } Console.Write(" 請輸入一個數.. "); int x = int.parse(console.readline()); Console.WriteLine(" 計算結果為.. " + (3/x)); 57

實例探討 sample5-a8 a8 (2) 程式內容 Catch( Exception e ) { } Console.WriteLine( e.message+ Message+" 發生錯誤!!"); finally { Console.WriteLine(" 結束 "); } 58

課堂練習 sample5-b6 程式功能 請使用者輸入一個數字 x 計算 x 的平方值 輸入字串為文字時列印錯誤訊息 基本概念 藉由例外處理來預防使用者輸入文字字串 59

自訂例外處理 我們可以藉由 throw 敍述來自訂特殊的錯誤 throw 可指定所使用的例外類別 語法 throw new 例外類別 (); 用法 throw new Exception("error!!"); error!! 60

實例探討 sample5-a9 a9 (1) 程式功能 請使用者輸入月份 月份輸入錯誤產生例外 程式內容 static int getmonth() { Console.Write(" 請輸入月份.. "); int month = int.parse(console.readline()); } if(month > 12 month <= 0) throw new Exception(" 您輸入的月份不正確!!"); else return month; 61

實例探討 sample5-a9 a9 (2) 程式內容 static void Main(string[] args) { try { Console.WriteLine(" 您輸入的月份為.. " + getmonth()); } catch(exception e) { Console.WriteLine(e.Message); } finally { Console.ReadLine(); } 62 }