投稿類別:資訊類

Similar documents
<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

Excel VBA Excel Visual Basic for Application

投影片 1

Microsoft Word - 小心翼翼的二十一點N.doc

untitled

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

Visual Basic D 3D

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

untitled

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

untitled

(京)新登字063号

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

Microsoft PowerPoint - VB14.ppt

資料結構之C語言重點複習

¥¼©R¦W-5

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

untitled

Excel VBA 初探 投稿類別 : 資訊類 篇名 : Excel VBA 初探 作者 : 葉明捷 高雄市立高雄高級工業職業學校 資訊三乙林咏諒 高雄市立高雄高級工業職業學校 資訊三乙羅賢擎 高雄市立高雄高級工業職業學校 資訊三乙 指導老師 : 莊利吉老師

星星排列 _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

投影片 1

運算子多載 Operator Overloading

Microsoft PowerPoint - Chapter3

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

Microsoft Word - ACI chapter00-1ed.docx

TC35短信发送程序设计

Java 程式設計入門

Microsoft PowerPoint - VB3

運算子多載 Operator Overloading

四川省普通高等学校

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

CC213

Visual C# 2005程式設計

CC213

此運算子具有的優先順序高於下一個區段且低於前一個區段 請注意, 您可以按一下運算子以移至內附範例的詳細資料頁面 x && y 邏輯 AND 如果第一個運算元為 false,c# 就不會評估第二個運算元 條件 OR 運算子 此運算子具有的優先順序高於下一個區段且低於前一個區段 請注意, 您可以按一下運

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

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

多層次傳銷與獎金系統

穨文件1

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

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

Microsoft Word - ACG chapter00c-3ed.docx

Microsoft PowerPoint - OPVB1基本VB.ppt

ThreeDtunnel.doc

untitled

一、研究動機

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式

Microsoft PowerPoint - sql2005_ch09.ppt

HTML網頁基礎語言

Microsoft Word - ACL chapter02-5ed.docx

1








Microsoft Word - 序.DOC

FZUBRIDGE

<313031A4C9BEC7C160BA5DB3E A457BAF4A4BDA769AAA9292E584C53>

nbqw.PDF

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

If Close[Length]!= 0 Then B Close[Length] 是 Length 日前的 Close 不是 0 的話則執行 B % Number 以 Divisor 來求取除法並傳回剩下的部份和 Divisor 具備相同的符 號 格式 :Number % Divisor Numb

The Embedded computing platform

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

Microsoft Word - 投影片ch11



_汪_文前新ok[3.1].doc

全国计算机技术与软件专业技术资格(水平)考试

untitled

Microsoft PowerPoint - vb_net5

目次 CONTENTS 2 1 乘法公式與多項式 二次方根與畢氏定理 因式分解 一元二次方程式

第5章修改稿

運算子多載 Operator Overloading

ActiveX Control

ROP_bamboofox.key

1

DIY香草植物乾燥

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

大 綱 最 有 利 標 目 的 及 類 型 最 有 利 標 之 辦 理 方 式 準 用 最 有 利 標 取 最 有 利 標 精 神 最 有 利 標 之 類 型 及 其 相 關 規 定 適 用 最 有 利 標 準 用 最 有 利 標 及 取 最 有 利 標 精 神 作 業 程 序 及 實 務 分 析

第一章.FIT)

《大话设计模式》第一章

中華民國 第49屆中小學科學展覽會

Microsoft Word - _m30.doc

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政

(Microsoft Word - \263\346\244\2705VB.doc)

Visual C# 2010 與 UML 開發實戰 C# 第 5 章物件導向基礎 C# C# 第 6 章資料與變數 C# 第 7 章判斷式與迴圈 C# 第 8 章陣列與集合 C# 第 9 章偵錯與例外狀況處理 Visual Studio 2010 C# try...catch ix

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

VB控件教程大全

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

Microsoft Word 電腦軟體設計.doc

Microsoft PowerPoint - Class2.pptx

untitled

Microsoft PowerPoint - VB5

Microsoft PowerPoint - vb_net8

VHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2

PowerPoint Presentation

攜手拼出圓滿的幸福 2

Transcription:

投稿類別 : 資訊類 篇名 : 從 VB.Net 學 C# 作者 : 陳諭瑩 高雄市立高雄高級工業職業學校 資訊科高三乙班王子喬 高雄市立高雄高級工業職業學校 資訊科高三乙班李宗恩 高雄市立高雄高級工業職業學校 資訊科高三乙班 指導老師 : 莊利吉老師

壹 前言 一 研究動機 在高職裡 VB.Net 是課程標準, 但由於現在職場上大部分都是使用 C#, 所以我們用 VB.Net 的基礎學 C#, 再利用高職所學到的 VB.Net 程式範例轉換成 C#, 比較兩者語法上的 差異, 快速學習 C# 二 研究目的 1 學會使用 C# 寫程式 2 設計不同的程式範例, 並輸出結果 3 比較 VB.Net 和 C# 的語法和重要特點 三 研究方法 ( 一 ) 研究過程 1 準備期 : 學習 C# 的程式語法 2 選擇程式結構 : 選擇要使用的程式結構 3 程式設計 : 將不同的程式結構做成範例, 並輸出結果 ( 二 ) 研究工具 1 硬體 : 個人電腦 2 軟體 :Visual Studio 2008 貳 正文 正文部份主要說明文獻探討與研究結果, 共分六個小節, 依序是基本概念 數值資料處理 選擇結構的指令 :If 敘述 重複結構指令 :Do Loop 與 For Next 敘述 陣列與排序 自訂副程式與參數傳遞 主要針對主控台應用程式的程式範例比較 VB.Net 和 C# 的語法和重要特點 一 基本概念 ( 一 ) 程式範例 : 輸入圓半徑, 並算出圓面積 1

表 1 BASIC 和 C# 的程式比較 Dim r As Integer ' 宣告變數 string r; // 宣告字串 Console.Write(" 輸入圓半徑 :") ' 提示訊息 Console.Write(" 輸入圓半徑 :"); // 提示訊息 r = Console.ReadLine ' 輸入圓半徑存於變 r = Console.ReadLine(); // 輸入圓半徑存於字 數 r 串 r Console.Write(" 圓面積等於 =") ' 提示訊息 Console.Write(" 圓面積等於 ="); // 提示訊息 Console.WriteLine(r ^ 2 * 3.14) ' 計算圓面 Console.WriteLine(Math.Pow(float.Parse(r), 2) * 積, 然後輸出 3.14); // 計算圓面積, 然後輸出 Console.ReadKey() ' 等待直到使用者按下任 Console.ReadKey(); // 等待直到使用者按下 意鍵 任意鍵 二 數值資料處理 ( 一 ) 算術運算子符號 表 2 算術運算子範例彙整表 ( 許清榮 賈大誠,2006) 運算子 說明 + 加 - 減 * 乘 / 除 Mod % 取餘數 ^ 次方 ( 二 )Math 類別 表 3 BASIC 與 C# 常用 Math 類別範例 ( 莊利吉,2008) Math.Ceiling(A) 得大於或等於 A 的最小整數 Math.Floor(A) 得小於或等於 A 的最大整數 Math.Exp(A) 得 e A, 其中 e 為自然數約等於 2.7 Math.Log(A) 得 lna, 其中 ln=loge, 以 e 為底的對數 Math.Log10(A) 得 loga Math. Pow(A,0.3) 得 A 0.3 Math.Round(A) 將 A 四捨五入為整數 Math.Round(a, 1) 將 A 四捨五入成一位小數 Math.Sqrt(A) 得 A 的平方根, 相當於 A^0.5 Math.Truncate(A) 捨棄 A 的小數變成整數 三角函數 例如 Math.Sin(30*Math.PI/180) 等於 Sin(30 ) 2

( 三 ) 程式範例 : 四捨五入成只有 2 位小數 從 VB.Net 學 C# 表 4 BASIC 和 C# 的程式比較 Dim a As Single = 0 string A = ""; Console.Write(" 輸入一個至少有 3 位小數的浮 double a = 0; 點數 ") Console.Write(" 輸入一個至少有 3 位小數的浮 a = Console.ReadLine 點數 "); a = Math.Truncate(a * 100 + 0.5) / 100 A = Console.ReadLine(); Console.Write(" 四捨五入成只有 2 位小數 ") a = Math.Truncate(double.Parse(A)* 100 + 0.5) Console.WriteLine(a) / 100; Console.ReadKey() Console.Write(" 四捨五入成只有 2 位小數 "); Console.WriteLine(a); Console.ReadKey(); 三 選擇結構的指令 :IF 敘述 ( 一 ) 比較運算子與邏輯運算子 表 5 運算子符號彙整表 ( 莊利吉,2008) 類別比較邏輯位元 運算子符號 功能 = = 等於 <>!= 不等於 < < 小於 <= <= 小於等於 > > 大於 >= >= 大於等於 Not! 取反向 AndAlso && And 且, 所有條件成立才成立 OrElse 或, 有一條件成立才可成 Or 立 Xor ^ 互斥 And & 且 Or 或 Not! 取反向 3

( 二 ) 語法 表 6 BASIC 與 C# 語法比較 ( 旗立研究室,2014) If 條件式 1 Then if ( 條件式 1) [ 敘述區塊 1 ] [ ElseIf 條件式 2 Then ] [ 敘述區塊 1; ] [ 敘述區塊 2 ] [ ElseIf 條件式 3 Then ] [ else if ( 條件式 2) ] [ 敘述區塊 3 ]. [ 敘述區塊 2; ] [ Else [ 敘述區塊 N ] ] [ else if ( 條件式 3) ] End If [ 敘述區塊 3; ]. [ else [ 敘述區塊 N; ] ] ( 三 ) 程式範例 : 求 a,b,c 三者的最大值 表 7 BASIC 和 C# 的程式比較 If a >= b AndAlso a >= c Then if (a >= b && a >= c) max = a ElseIf b >= c AndAlso b >= a Then max = a; max = b Else else if (b >= c && b >= a) max = c End If max = b; else max = c; 4

四 重複結構指令 :Do 與 For 敘述 ( 一 )Do 敘述 1 語法 表 8 BASIC 語法 ( 旗立研究室,2014) 前測式迴圈語法 Do While 條件式 Do Until 條件式 [ 敘述區塊 ] [ 敘述區塊 ] [ Exit Do ] [ Exit Do ] [ 敘述區塊 ] [ 敘述區塊 ] Loop Loop 後測式迴圈語法 Do Do [ 敘述區塊 ] [ 敘述區塊 ] [ Exit Do ] [ Exit Do ] [ 敘述區塊 ] [ 敘述區塊 ] Loop While 條件式 Loop Until 條件式 表 9 C# 語法 ( 旗立研究室,2014) 前測式迴圈語法 while ( 條件式 ) while (!( 條件式 )) [ 敘述區塊 ; ] [ 敘述區塊 ; ] [ break ] [ break ] [ 敘述區塊 ; ] [ 敘述區塊 ; ] 後測式迴圈語法 do do [ 敘述區塊 ; ] [ 敘述區塊 ; ] [ break] [ break] [ 敘述區塊 ; ] [ 敘述區塊 ; ] while ( 條件式 ) while (!( 條件式 )) 2 程式範例 : 求兩數最大公因數 ( 前測式迴圈 ) (1) 方法一 表 10 BASIC 和 C# 的程式比較 Remainder = INPNO1 Mod INPNO2 Remainder = INPNO1 % INPNO2; Do While Remainder <> 0 while (Remainder!= 0) INPNO1 = INPNO2 INPNO2 = Remainder INPNO1 = INPNO2; Remainder = INPNO1 Mod INPNO2 INPNO2 = Remainder; Loop Remainder = INPNO1 % INPNO2; 5

(2) 方法二 表 11 BASIC 和 C# 的程式比較 Remainder = INPNO1 Mod INPNO2 Remainder = INPNO1 % INPNO2; Do Until Remainder = 0 while (!(Remainder == 0)) INPNO1 = INPNO2 INPNO2 = Remainder INPNO1 = INPNO2; Remainder = INPNO1 Mod INPNO2 INPNO2 = Remainder; Loop Remainder = INPNO1 % INPNO2; ( 二 )For 敘述 1 語法 表 12 BASIC 與 C# 語法比較 ( 莊利吉,2008) For counter [As datatype ]=start To end [Step For ([ datatype ] counter=start; counter<=end; step] counter= counter + step) [ 敘述區塊 ] [ Exit For ] [ 敘述區塊 ; ] [ 敘述區塊 ] Next [ break ] [ 敘述區塊 ; ] 2 程式範例 : 算出 1 到 N 的總和 表 13 BASIC 和 C# 的程式比較 For i As Integer = 1 To N for (int i = 1; i <= N; i++) Sum = Sum + i Next Sum = Sum + i; 6

五 陣列與排序 ( 一 ) 陣列宣告 1 語法 (1) 明確指定索引上限 表 14 BASIC 與 C# 語法比較 ( 莊利吉,2008) Dim 陣列名稱 ( 索引上限 ) As 資料型別資料型別陣列名稱 [ 索引上限 ]; (2) 沒有指定索引上限 表 15 BASIC 與 C# 語法比較 ( 莊利吉,2008) Dim 陣列名稱 () As 資料型別 = 初值 1, 初值資料型別陣列名稱 [] = 2, 初值 3, 初值 1, 初值 2, 初值 3, ( 二 ) 排序 1 程式範例 : 輸入第 1 到第 N 數 表 16 BASIC 和 C# 的程式比較 For i As Integer = 1 To N for (int i = 1; i <= N; i++) Console.Write(" 第 ") Console.Write(i) Console.Write(" 第 "); Console.Write(" 數 :") Console.Write(i); Item(i - 1) = Console.ReadLine Console.Write(" 數 :"); Next Item[i - 1] = Console.ReadLine(); 六 自訂副程式與參數傳遞 ( 一 ) 函數 (Function) 7

1 語法 表 17 BASIC 與 C# 語法比較 ( 莊利吉,2008) Public Private Function 函 數 名 稱 public private 資料型態函數名稱 ([ ref ([ByVal Byref 參數名稱 1 As 資料型 資料型別參數名稱 1,. ]) 別,.]) As 資料型態 [Return 運算式 ] [return 運算式 ] End Function 2 程式範例 : 設計一個程序可將 1+2+3+ +N 之和透過參數 Sum 傳回呼叫端 表 18 BASIC 和 C# 的程式比較 Private Function Test(ByVal N As Integer) As Integer private int Test(int N) Dim x As Integer, y As Integer = 0 'y 是預 int x = 0; 備傳回之值 For x = 1 To N y = y + x Next Return y End Function int y = 0; //y 是預備傳回之值 for (x = 1; x <= N; x++) y = y + x; return y; ( 二 ) 程序 (Subroutine) 1 語法 表 19 BASIC 與 C# 語法比較 ( 莊利吉,2008) Public Private Sub 程序名稱 ([ByVal Byref public private void 程序名稱 ([ ref 資料型 參數名稱 1 As 資料型別,.]) 別參數名稱 1,. ]) End Sub 8

2 程式範例 表 20 BASIC 和 C# 的程式比較 Private Sub Test(ByVal N As Integer, ByRef Sum As Integer) private void Test(int N, ref int Sum) Dim x As Integer, y As Integer = 0 'y 是預 int x = 0; 備傳回之值 For x = 1 To N y = y + x Next Sum = y End Sub int y = 0; //y 是預備傳回之值 for (x = 1; x <= N; x++) y = y + x; Sum = y; 叄 結論 一 問題與討論 ( 一 )VB.Net 與 C# 的語法差異 VB.Net 和 C# 在一些重要功能上有差異 其中, 型別規範算是 VB.Net 與 C# 最大的不同之處 C# 屬於強型別程式語言, 而 VB.Net 屬於弱型別程式語言 舉個例子來說, 表 1-1 的程式範例在計算圓面積時, 輸入的圓半徑屬於字串型別, 而在計算圓面積時的半徑屬於變數型別 C# 因為屬於強型別, 所以程式不會自動將輸入的圓半徑 r 轉成變數型別, 需要寫成 C onvert.toint32(r) 才行 相反地,VB.Net 會在合理範圍內視情況自動轉換型別 C# 是大小寫相關的 ( 許清榮 賈大誠,2006) 所以, 當關鍵字或變數名稱的英文大小寫不同時, 編譯器會視為不同的東西 變數的大小寫不同, 編譯器會視為兩個變數 ; 而關鍵字的大小寫不同, 則不會被編譯器接受 VB.Net 會自動調整關鍵字的大小寫, 使編譯器能夠接受 BASIC 的變數則不能同時接受大小寫不同字母卻相同的多個變數 C# 和 BASIC For 迴圈都有變量自加的功能 假如初始值每次在迴圈執行時的遞增值為 1,C# 會寫成 i++ (i=i+1) 與 ++i 兩種寫法 i++ 指的是先用再加, ++i 指的是先加再用 ;BASIC 則是用 Step 1 表示 另外,BASIC 重複結構指令的 For 迴圈與 While 迴圈的結尾分別匯加上 End If 和 Loop C# 的結尾則不用加這兩道指令 C# 的條件式會使用小括號, 敘述區塊則使用大括號 如果一個敘述區塊內只有一道指令, 大括號可以省略 BASIC 並沒有指標, 而 C# 有提供指標類型, 但只能在 unsafe 模式下才能進行編譯, 9

而且須在宣告指標的方法名稱前面加上 unsafe 關鍵字才能執行 ( 許清榮 賈大誠,2006) 由於有一定程度的安全性威脅, 一般 C# 也不建議使用 副程式參數傳遞方式分為 傳值呼叫 (call by value) 與 傳址呼叫 (call by reference) 兩種 Call by value 從主程式傳入參數時, 經方法運算完之後並不會影響主程式所傳入的參數值 ; 而 Call by reference 從主程式傳入參數之後, 經由方法運算之後, 會指向同一個記憶體位址, 所以也影響了主程式當時所傳入的參數值 Private 只有在同一個類別下才能存取它, 是最嚴格的範圍存取條件 Public 存取範圍不受到任何限制, 是最寬鬆的存取範圍條件 二 未來研究建議 1 用 C# 設計物件導向程式 2 從 BASIC 學 C# 後, 再從 C# 學 JAVA 和 C++ 3 了解用 C# 與資料庫的連線方式與管理 肆 引注資料 莊利吉 (2008) 程序導向程式設計: 以 VB.Net 主控制台程式為例 ( 精簡版 ) 許清榮 賈大誠 (2006) Visual C#2005 建構資訊系統實戰經典教本 新北市汐止區 : 博碩文化 楊仁和 ( 譯 )(2007) 深入淺出 C# 臺北市: 歐萊禮 旗立研究室 (2014) 計算機概論 A 滿分總複習 臺北市 旗立資訊股份有限公司 10