Azul Zulu on Azure Overview -- OpenTech CEE Workshop, Warsaw, Poland
PREACE - OPENTECH
Transcript of PREACE - OPENTECH
PREACE 序
iii
Visual Studio整合式開發環境可以被用來開發 Windows 應用程式、ASP.NET Web 應
用程式、XML Web Services、資料庫應用程式及行動裝置APP,我們可以在同一個環境下
使用Visual Basic、Visual C#和Visual C++ 來開發程式,並結合.NET Framework 強大功能
來簡化程式的開發工作。Visual Studio提供程式碼編輯器及使用者介面設計工具,並包括
偵錯及其它工具,可以讓您以C# 輕鬆開發應用程式。
C#是一種簡潔的物件導向語言,支援封裝 (Encapsulation)、繼承 (Inheritance) 和多型
(Polymorphism)。本書規劃的理念,期望成為一本難易適中Visual C#教材,全書架構共分
四篇:基礎語法篇、物件導向篇、視窗程式篇、多媒體與資料庫應用篇。
第一篇:基礎語法篇
從程式設計入門開始談起,接著介紹如何撰寫第一支C#主控台應用程式,然後第3-6
章的主軸在資料處理、流程控制、字串與陣列等集合類別,最後則是方法及參數。
第二篇:物件導向篇
會先討論物件導向特點、定義、成員及屬性,第8章則是直接導入C# 物件導向程式
的實作,包括:建構函式與解構函式、繼承、抽象類別、介面與運算子多載等。
第三篇:視窗程式篇
先介紹如何建立第1支視窗應用程式及與視窗程式開發的基礎知識。接下來的兩章則
是介紹各種控制項元件,最後則會談到視窗程式事件,除了滑鼠及鍵盤事件外,也會介
紹共享事件的建立與移除。
第四篇:多媒體與資料庫應用篇
包括繪圖與多媒體影音的播放、檔案I/O輸出入資料流、資料庫應用程式的建立及語
言整合查詢-LINQ的介紹。
為了提高閱讀的順暢感,在內容介紹儘量力求詳明,筆者相信這會是一本適合教學
的Visual C# 入門教材,本書在校正上雖然力求細心無誤,如有疏忽之處,還望各位見
諒。
06307007-編大.indd 3 2016/5/19 上午 08:52:26
v
CONTENTS 目錄
�第一篇 VISUAL C#基礎語法篇
第 01章 程式設計的第一堂課
1-1 電腦儲存單位簡介 ........................................ 2
1-2 程式語言簡介 ............................................... 2
1-3 程式設計簡介 ............................................... 6
1-4 認識資料型態 ............................................. 10
1-5 程式撰寫原則 ............................................. 14
第 02章我的第一支 C#程式
2-1 .NET Framwork和類別庫簡介 ................... 21
2-2 Visual Studio 2013開發環境 ..................... 23
2-3 建立第 1支主控台程式 .............................. 29
2-4 C#的基礎語法 ........................................... 34
2-5 開啟舊專案與關閉 ...................................... 39
第 03章資料處理概說
3-1 變數與常數 ................................................ 46
3-2 資料型別簡介 ............................................. 52
3-3 資料型別轉換 ............................................. 65
3-4 運算子與運算式 ......................................... 70
3-5 跳脫控制字元 ............................................. 83
第 04章流程控制
4-1 結構化程式 ................................................ 91
4-2 選擇結構簡介 ............................................. 93
4-3 重複結構 ...................................................110
4-4 迴圈控制指令 ........................................... 123
4-5 程式偵錯與例外處理 ................................ 127
06307007-編大.indd 5 2016/5/19 上午 08:52:30
vi
第 05章字串、陣列與集合類別
5-1 字串宣告與使用 ....................................... 139
5-2 陣列宣告與使用 ....................................... 151
5-3 集合 (Collection)類別 .............................. 168
第 06章方法與參數
6-1 方法宣告與使用 ....................................... 176
6-2 參數傳遞簡介 ........................................... 179
6-3 遞迴應用 .................................................. 188
6-4 方法多載 .................................................. 192
6-5 常用公用類別方法 ................................... 195
�第二篇 我的第一支 C#程式
第 07章物件導向概說
7-1 類別與物件簡介 ....................................... 209
7-2 類別的定義 .............................................. 213
7-3 物件導向程式設計的特性 ......................... 220
7-4 設定屬性 .................................................. 224
第 08章C#物件導向程式實作
8-1 建構函式 .................................................. 237
8-2 C#的繼承與介面 ..................................... 244
8-3 運算子多載 .............................................. 267
8-4 重寫 ........................................................ 271
06307007-編大.indd 6 2016/5/19 上午 08:52:32
第 01章
程式設計的第一堂課
電腦本身就是一堆的電路元件所形成的集合體,電腦用內部的電子開關狀態表示所
有的資料,僅能辯識電路上電流的「通」(ON)與「不通」(OFF)兩種訊號,所以只能用
兩個數字值來表示。對電腦而言,開關是關的時候,以一個 0作表示;是開的時候,以
一個 1來作表示,而這種只有 "0"與 "1"兩種狀態的系統,稱為「二進位系統」(Binary
System)。
圖1-1 電腦最基本的儲存單位為「位元」
06307007.indd 1 2016/5/19 上午 09:12:54
Visual C#2013無痛學習2
1-1 電腦儲存單位簡介
電腦中的資料是由數字所組成,甚至連文字、顏色也是由數字所組成。對電腦來說,
所有處理的資料都可視為是一個數字,是由 0或 1所組成的數字。當談論到電腦中的資
料時,無論是開或是關,由每個開關狀態所表示的值,稱為一個位元 (bit),一個位元就
可以表示兩種資料:0與 1。而兩個位元則可以表達四種資料,即 00、01、10、11,越
多的位元則表示可以處理更多的資料,不過因為電腦所處理的資料相當龐大,所以又將
八個位元組合成一個「位元組」(byte)。
有了位元組,電腦可以表示 256(28=256)個不同的符號或字元的其中一種,因為八
種足夠不同位元的組合來表示鍵盤上所有的字元,包括所有的字母(大寫字元和小寫字
元)、數字、標點符號和其他符號。事實上,當電腦操作者利用鍵盤輸入資料時,無論
是數字或字元資料,電腦都會將其轉換成二進位形式,並以二進位碼來儲存。
常用的電腦儲存單位有 KB(Kilo Byte)、MB(Mega Bytes)、GB(Giga Bytes)等等,
這些單位的換算關係如下:
1KB(Kilo Bytes)= 210Bytes= 1024Bytes
1MB(Mega Bytes)= 220 Bytes= 1024KB
1GB(Giga Bytes)= 230 Bytes= 1024MB
1TB(Tera Bytes)=240 Bytes= 1024GB
TIPSTIPS
1-2 程式語言簡介
「程式語言」是一種人類用來和電腦溝通的語言,也是用來指揮電腦運算或工作的
指令集合,可以將操作者的思考邏輯和語言轉換成電腦能夠了解的語言,也就是直接利
用 0與 1的二進位元模式機器語言來溝通。
程式語言發展的歷史已有半世紀之久,由最早期的機器語言發展至今,已經邁入到
第五代自然語言。每一代的語言都有其特色,並且一直朝著容易使用、除錯與維護功能
06307007.indd 2 2016/5/19 上午 09:12:55
第 01章 程式設計的第一堂課 3
更強的目標來發展。基本上,不論任何一種語言都有其專有語法、特性、優點及相關應
用的領域。依照其演進過程分類如下:
圖1-2 程式語言的發展史
1-2-1 機器語言
機器語言 (Machine Language)是最早期的程式語言,由 1和 0兩種符號構成,也是
電腦能夠直接閱讀與執行的基礎語言,也就是任何程式在執行前都必須被轉換為機器語
言。例如「10111001」代表「設定變數 A」,而「00000010」代表「數值 2」。當指示
電腦將變數 A設定為數值 2時,機器語言寫法為:
10111001 (設定變數 A)00000010 (將 A設定為數值 2)
一段機器語言記錄了運作的種類及所要處理的資料之相關訊息。不同的機器碼會引
起計算機上不同電路產生動作,例如:加法的機器碼會引起加法器產生動作。不過每一
家電腦製造商,往往因為電腦硬體設計的不同而開發不同的機器語言。這樣不但使用不
方便,可讀性低也不容易維護,並且不同的機器平台,編碼方式都不盡相同。
1-2-2 組合語言
組合語言 (Assembly Language)指令比機器碼指令有意義多了,但與機器語言仍然成
一對一的對應,所以與機器語言一樣被歸類為低階語言。用組合語言所寫的程式,事實
上也是很接近 CPU所能認識的格式,只是它在撰寫上比機器語言來的容易多了。假設
01100000B(C0H)是機器語言中,用來告訴 CPU將 AX暫存器的值,放到記憶體堆疊的
指令,若以組合語言來寫,則是用 PUSH AX來表示。
由以下範例可以很清楚的看到,組合語言是用較接近口語的方式來表達機器語言的
一些指令。只要看到上述的指令,就大致能瞭解它是要將 AX暫存器存到堆疊裡,這遠
06307007.indd 3 2016/5/19 上午 09:12:55
第 01章 程式設計的第一堂課 9
例如在現實生活中充滿了各種形形色色的物體,每個物體都可視為一種物件。我們
可以透過物件的外部行為 (behavior)運作及內部狀態 (state)模式,來進行詳細地描述。行
為代表此物件對外所顯示出來的運作方法,狀態則代表物件內部各種特徵的目前狀況。
如下圖所示:
圖1-4 物件的內部狀態與外部行為
如果要使用程式語言方式,來描述一個物件,就必須進行所謂的抽象化動作
(abstraction)。也就是利用程式碼來記錄此物件的屬性、方法與事件。分別說明如下:
表1-2 物件的屬性、方法與事件
名稱 特 色 與 說 明
屬性
屬性 (attribute) 是指物件的靜態外觀描述,例如一輛車子的顏色、大小等。或是對抽象的內在,如車子引擎的馬力、排氣數等,作為描述的動作,就如同於 JAVA程式中的類別成員資料 (member data)。
方法方法 (method)是指物件中的動態回應方式,例如車子可以開動、停止。就是一種行為模式,是用來代表一個物件的功能,也就是 JAVA中的類別成員方法 (member method)。
事件
事件 (event)是指物件可以針對外部事件做出各種反應,譬如車子沒油時,引擎就會停止,當然物件也可以主動地發出事件訊息。例如 JAVA程式中的視窗元件,就可以對事件做出反應與處理。
另外物件導向程式設計還具備以下三種特性:
(Encapsulation) (Inheritance) (Polymorphism)
圖1-5 物件導向程式設計的特性
06307007.indd 9 2016/5/19 上午 09:12:57
Visual C#2013無痛學習68
� Parse轉換
強制型別轉換時,還可以利用 Parse()方法指定欲轉換的資料型別,語法如下。
數值變數 = 資料型別 .Parse(字串 );
4 資料型別是指欲轉換的數值資料型別。
在控制台應用程式中,以 ReadLine()方法讀進的資料是字串,透過 Parse()方法轉換
成指定的數值型別,才能進行後續的運算,簡例如下。
area = float.Parse(Console.ReadLine());
4 ReadLine()方法讀取字串後,再以 Parse()方法轉換 float型別,再指定給 area變數,
進行下一個敘述。
01 using System;02 using System.Collections.Generic;03 using System.Linq;04 using System.Text;05 using System.Threading.Tasks;06 07 namespace 型別轉換08 {09 class Program10 {11 static void Main(string[] args)12 {13 const double pi = 3.14159D;//常數14 Console.Write("請輸入半徑 (單位為公尺 ):");15 //讀取半徑,再以 Parse轉為 int16 int radius = int.Parse(Console.ReadLine());17 Console.WriteLine("圓面積是 {0}平方公尺 ", pi * radius * radius);18 Console.Read();19 }20 }21 }
【範例】 型別轉換.sln
06307007.indd 68 2016/5/19 上午 09:13:21
Visual C#2013無痛學習88
本章習題園地
一、填充題
1. 對編譯器有特殊意義而預先定義的保留識別項,所以無法作為
識別字名稱,又稱保留字。
2. 在 C#中使用常數時,要加入關鍵字 ,宣告常數的同時要給予初
值。
3. decimal提供了數字的最大有效位數,能支援 個有效位數。
4. 物件資料型態在 C#中以 表示,佔有 4個位元組的記憶體長度,
可以用來儲存各種類型的資料型態。
5. 型別提供相關常數的組合。
6. 運算式是由 與 所組成。
7. 一些特殊的字元無法利用鍵盤來輸入或顯示於螢幕,這時候必須在字元
前加上 。
8. 如果要一次宣告多個同資料型態的變數,可以利用 隔開變數名
稱即可。
9. 宣告變數的同時可以利用 運算子同時指定變數的初值。
10. 使用貨幣數值時,需於數字最後加上 或 以茲區別。
二、問答與實作題
1. 常數與變數有何不同?
2. C#強型別 (Strongly Typed) 語言,它有何特性?
3. 簡述變數命名的限制?
4. 使用變數時要有那些基本屬性?
5. 請各位列舉使用常數的三項優點。
6. 浮點數型態可以分為哪兩種類別?
7. 何謂關鍵字,試簡單說明之。
06307007.indd 88 2016/5/19 上午 09:13:23
第 03章 資料處理概說 89
本章習題園地
8. 請問「靜態儲存配置」(static storage allocation) 的程式語言的主要特點。
9. C#中有哪兩種資料型別?
10. 試寫出字串的宣告格式。
11. 什麼是結構資料型態?
12. 什麼是列舉 enum資料型態?
13. 型別轉換可以分成哪兩種?
14. 請舉例說明位元移動運算子的功用?
15. 試簡述運算子的優先順序的採用原則。
16. 什麼是跳脫控制字元?
17. 請以建立下圖的輸出外觀。
圖3-23
18. 請輸出如下圖所示的運算結果。
圖3-24
06307007.indd 89 2016/5/19 上午 09:13:23
Visual C#2013無痛學習90
本章習題園地
19. 請輸出您的電腦目前的時間。
圖3-25
20. 請將三個字串變數串接,建立如下圖的輸出外觀。
圖3-26
06307007.indd 90 2016/5/19 上午 09:13:24