• 沒有找到結果。

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
57
0
0

加載中.... (立即查看全文)

全文

(1)

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

講師︰唐士軒

CSIE, NTU 2005/04/27

(2)

Outline

z

前情提要

z 變數

z 資料型別

z 變數宣告及使用 z 型別轉換

z 運算子 z 常數

z 列舉型別 z 結構型別

z 亂數

z 課後練習

(3)

基本程式架構

usingSystem;

namespace sample1_1 {

/// <summary>

/// Class1 的摘要描述。

/// </summary>

classClass1 {

/// <summary>

/// 應用程式的主進入點。

/// </summary>

[STAThread]

static void Main(string[] args) {

//

// TODO: 在此加入啟動應用程式的程式碼 //

}

(4)

程式碼註解

z單行註解

z

//我是註解

z多行註解

z

/*

我是註解 我也是註解

我們大家都是註解

*/

(5)

標準輸入輸出

z標準輸出

zConsole.Write("ives");

zConsole.WriteLine("ives");

z標準輸入

zConsole.Read();

zConsole.ReadLine();

(6)

格式化字串輸出

z格式字串

z以參數 {0} 開始,代表跟隨在雙引號結尾的 第一個參數,{1},代表跟隨在雙引號結尾 的第二個參數,以此類推

z用法舉例

zConsole.WriteLine("{0} {1} {2}","1","2","3");

輸出︰ 1 2 3

zConsole.WriteLine("{0}是{1}","我","超人!!");

輸出︰我是超人!!

(7)

Outline

z 前情提要 z

變數

z 資料型別

z 變數宣告及使用 z 型別轉換

z 運算子 z 常數

z 列舉型別 z 結構型別

z 亂數

z 課後練習

(8)

變數

z何謂變數

z『變數』是用來請電腦幫忙記住某些我們需 要的東西

z變數宣告

z變數在使用之前,必須先告訴電腦要預先準 備多大的空間來存放這個變數的內容,這樣 的步驟稱之為『宣告』

z資料型別

z利用『資料型別』來描述所需要的空間大小

(9)

變數命名原則

z 開頭第一個字必須為 A-Z、a-z 或 _ (底線) … z 不允許數字 0-9 當做變數的開頭

z 字母的大小會視為不相同的變數

z SCHOOL、School、school

z 變數的名稱最好具有意義,可用底線或大小寫 增加可讀性

z school_name、schoolName

z 可使用中文命名,但易造成混淆 z 不可以使用 C# 的關鍵字命名

z 錯誤的命名方式

(10)

C# 關鍵字 (1)

public protected

private params

override

out operator

object null

new

namespace long

lock is

internal

interface int

in implicit

if

goto foreach

for float

fixed

finally false

extern explicit

event

enum else

double do

delegate

default decimal

continue const

class

checked char

catch case

byte

break bool

base as

abstract

(11)

C# 關鍵字 (2)

while void

volatile virtual

using ushort

unsafe

unchecked ulong

uint typeof

try

true throw

this switch

struct

string static

stackalloc sizeof

short

sealed sbyte

return ref

readonly

(12)

Outline

z 前情提要 z 變數

z

資料型別

z 變數宣告及使用 z 型別轉換

z 運算子 z 常數

z 列舉型別 z 結構型別

z 亂數

z 課後練習

(13)

資料型別

z 數值型別

z 正負號與無正負號整數型別 z 浮點數型別

z 布林型別 z 字元型別

z 貨幣、結構、列舉…

z 參考型別

z 物件 z 字串 z 陣列

(14)

整數型別

0 ~ 18446744073709551615 64

ulong

-9223372036854775808

~9223372036854775807 64

long

0 ~ 4294967295 32

uint

-2147483648 ~ 2147483647 32

int

0 ~ 65535 16

ushort

-32768 ~ 32767 16

short

0 ~ 255 8

byte

-128 ~ 127 8

sbyte

數值範圍 佔用位元

型別

(15)

其它型別

z 浮點數型別

z 浮點數可用來儲存含有小數的數值

z 指定 float 變數值時,必須在數值最後加上 f

z decimal 型別

z 可處理至小數後第 28 位的數值,主要用在財務金融計算上

z 布林型別 bool

z 布林型別的值為 True 或 False 15~16位

7位 精確度

5.0 × 10-324 ~ 1.7 × 10308 64

double

1.5 × 10-45 ~ 3.4 × 1038 32

float

數值範圍 位元

型別

(16)

字元與字串型別

z字元型別 char

z用來表示單一個字元,字元資料需要以單引 號將字元頭尾括起來

z例如︰'A'、'a'、'1'、'2`

z字串型別 string

z用來表示一串的字元,字串資料需要以雙引 號將字串頭尾括起來

z例如︰"my name is ives!!"

(17)

Outline

z 前情提要 z 變數

z 資料型別

z

變數宣告及使用

z 型別轉換

z 運算子 z 常數

z 列舉型別 z 結構型別

z 亂數

z 課後練習

(18)

變數宣告

z變數宣告是為了請電腦先幫我們預留空 間來存放資料

z宣告方式

z資料型別 變數名稱;

zint telNum;

zint telNum = 321;

zstring myName;

zstring myName = “ives";

zstring myName = “";

zint i = 16 , j , k;

(19)

實例探討 sample2-a1

z 程式功能

z 先請使用者輸入名字 z 換行列印 "XXX 您好!!"

z 再換行列印 "我猜 XXX 您一定是個男生!! "

z 程式說明

static void Main(string[] args) {

Console.Write("請輸入您的名字︰");

string userName = Console.ReadLine();

Console.WriteLine(userName + "您好!!");

Console.WriteLine("我猜 " + userName + " 您一定是個男生!!" );

Console.ReadLine();

}

(20)

課堂練習 sample2-b1

z程式功能

z第一行先請使用者輸入名字 z第二行再請使用者輸入性別

z第三行先列印出 "XXX 您好!!“

z第四行再列印出 "我猜 XXX 您一定是 X !! "

z基本概念

z宣告二個字串變數分別儲存使用者所輸入的 姓名與性別

(21)

Outline

z 前情提要 z 變數

z 資料型別

z 變數宣告及使用 z

型別轉換

z 運算子 z 常數

z 列舉型別 z 結構型別

z 亂數

z 課後練習

(22)

數值型別轉換

z 隱含轉換 (implicity)

z 數值範圍較小的型別,被指定至數值範圍較大的型 別,此種轉換由編譯器自動完成

z 例如︰

int a = 321;

long b = a;

z 明確轉換 (explicity)

z 超出轉換型別的資料內容均會遺失 z 例如︰

long a = 123;

int b = (int) a;

(23)

字串數值型別轉換

z 數值轉成字串型別

z 利用 ToString() 方法來完成 z 例如︰

int a = 321;

string b = a.ToString();

z 字串轉數值型別

z 利用數值型別 Parse() 方法來完成 z 例如︰

string b = "321";

int a = int.Parse(b);

(24)

實例探討 sample2-a2 (1)

z程式功能

z 字串數值型別轉換及資料遺失問題說明

z程式說明

//資料遺失 float a = 3.14f;

double b = 3.9;

Console.Write("轉換前: ");

Console.Write("a = " + a);

Console.WriteLine(", b = "+ b);

Console.Write("轉換後: ");

Console.Write("a = " + (int)a);

Console.WriteLine(", b = " + (int)b);

(25)

實例探討 sample2-a2 (2)

z程式說明

//字串數值型別轉換

Console.Write("輸入一個整數:");

string c = Console.ReadLine();

Console.WriteLine(c + " 加 1 後為 " + (int.Parse(c) + 1).ToString());

Console.ReadLine();

(26)

課堂練習 sample2-b2

z程式功能

z單純練習型別轉換

z請使用者輸入四個整數

z將前二個整數及後二個整數個別相加 z再將二個相加後的整數一起列印出來

z基本概念

z把讀入的四筆資料轉成整數型態,做加法處 理後,再轉回字串型態相加

(27)

Outline

z 前情提要 z 變數

z 資料型別

z 變數宣告及使用 z 型別轉換

z

運算子

z 常數

z 列舉型別 z 結構型別

z 亂數

z 課後練習

(28)

算術運算子

z 用以進行一般的數學運算

z 字串相加為字串合併 z 用法

z int i = 16 , j , k;

z j = i / 3; //運算後 j 的值為 5 z k = i % 3; //運算後 k 的值為 1

實例 意義

運算子符號

i = j % k;

% 相除取餘

i = j / k;

/ 相除取商

i = j * k;

* 相乘

i = j - k;

- 相減

i = j + k;

+ 相加

(29)

課堂練習 sample2-b3

z程式功能

z計算三角形面積

z先列印出二行文字請使用者輸入三角形的底 及高 (整數)

z計算後列印出三角形的面積大小

z基本概念

z由 Console.ReadLine() 所讀取進來的資料皆 為字串型別,必須將其轉換為數字型別

z底乘高除二即為所求

(30)

關係運算子 (1)

z用以比較字串或數值的大小,輸出結果 為真 (true) 或假 (false)

i >= j 大於或等於

>=

實例 意義

運算子符號

i <= j 小於或等於

<=

i < j 小於

<

i > j

> 大於

i != j

!= 不相等

i == j 相等

==

(31)

關係運算子 (2)

z用法

z 4 > 3 //輸出為 true z“a" > “b"

//輸出為 false

z字串比較

z字串是以 Unicode 碼來比較大小, a 的 Unicode 碼為 97,比 b 的 Unicode 碼 98 小,所以 b 會大於 a

(32)

實例探討 sample2-a3

z 程式功能

z 輸入二個數字

z 列出二數之前的關係

z 程式說明

//輸入二數

Console.Write("輸入第一個數字:");

int i = int.Parse(Console.ReadLine());

Console.Write("輸入第二個數字:");

int j = int.Parse(Console.ReadLine());

//列出結果

Console.WriteLine(i + " == " + j + " 的結果為 " + (i==j));

Console.WriteLine(i + " != " + j + " 的結果為 " + (i!=j));

Console.WriteLine(i + " > " + j + " 的結果為 " + (i>j));

Console.WriteLine(i + " < " + j + " 的結果為 " + (i<j));

Console.WriteLine(i + " >= " + j + " 的結果為 " + (i>=j));

Console.WriteLine(i + " <= " + j + " 的結果為 " + (i<=j));

(33)

課堂練習 sample2-b4

z程式功能

z先請使用者輸入一個數字 z判斷該數字是否大於 5

z大於 5 則列印 true ,否則列印 false

z基本概念

z利用 > 或 <= 關係運算子即可完成

(34)

條件運算子

z 條件運算子是用來測試複雜的條件

z 用法

z (4>3) && ('a'=='b') //(true) && (false) → false z (4>3) || ('a'=='b') //(true) || (false) → true

z ! (4>3) // !(true) → false

!i i || j i && j

實例 用法

意義 符號

若 i 為真結果為假、若 i 為假結果為真

! 相反

若 i 和 j 其中一個為真,結果就為真

|| 不相等

當 i 和 j 比為真時,結果才為真

&& 相等

(35)

指定及複合指定運算子

z 指定運算子 (=) 的意義並非用來表示左式等於 右式,而是用來把右式的值指定給左式

i = i + 5 i += 5

相加後再指定 +=

i = i - 5 i -= 5

相減後再指定 -=

i = i * 5 i *= 5

相乘後再指定

*=

i = i / 5 i /= 5

相除取商後再指定 /=

i %= 5 i = 5

實例 原來的式子

意義 符號

i = i % 5 相除取餘後再指定

%=

i = 5 指定

=

(36)

課堂練習 sample2-b5

z程式功能

z計算正方形面積

z請使用者輸入正方形邊長 (整數) z計算後列印出正方形面積大小

z基本概念

z請利用複合運算子完成

z正方形面積公式為邊長平方

(37)

遞增及遞減運算子

z 用來將變數值加一或減一

z 擺在變數前表示先加減值再做其它運算,擺 在變數後表示先做其它運算再加減值

z 用法

z int a = 5, b = 5;

z int c = a++; //c 的結果為 5

i--、--i 將變數值減一

--

i++、++i 實例 意義

符號

將變數值加一 ++

(38)

實例探討 sample2-a4

z 程式功能

z 複合指定及遞增運算子說明

z 程式說明

int i=10, j=0, x=10, y=0;

j += ++i;

Console.WriteLine("i ="+ i +", j = " + j);

y += x++;

Console.WriteLine("x =" + x +", y = " + y);

Console.WriteLine("x =" + x++);

Console.WriteLine("x =" + x);

(39)

運算子的優先順序

z a + b + c

z先執行 a + b 得到結果再與 c 相加

z a + b * c

z先執行 b * c 得到結果再與 a 相乘

z(a + b) * c

z先執行 a + b 得到結果再與 c 相乘

za = b = c

z將 c 的值指定給 b 後,再將 b 的值指定給 a

(40)

Outline

z 前情提要 z 變數

z 資料型別

z 變數宣告及使用 z 型別轉換

z 運算子 z

常數

z 列舉型別 z 結構型別

z 亂數

z 課後練習

(41)

常數

z常數和變數的作用相同,用來儲存特定 的資料

z不同的地方在於常數的值必須在宣告時 給定初始值,並且常數值的初始值決定 後,就無法在程式中做任何修改

z用法

const double pi = 3.1415926;

(42)

課堂練習 sample2-b6

z程式功能

z計算圓面積

z請使用者輸入圓半徑 (整數) z計算後列印出圓形面積大小

z基本概念

z請設定常數值 pi = 3.1415926 z圓面積公式為半徑 * 半徑 * pi

(43)

Outline

z 前情提要 z 變數

z 資料型別

z 變數宣告及使用 z 型別轉換

z 運算子 z 常數

z

列舉型別

z 結構型別

z 亂數

z 課後練習

(44)

列舉型別

z 列舉型別可用來表示一些性質相似的項目對照到固定 的值 (常數)

z 列舉底層型別預設為 int,可用的型別尚包含 byte、

sbyte、short、ushort、uint、long 及 long z 列舉的清單項目以 『, 』分隔

z 列舉型別不可以在方法內宣告 z 用法

enum language:long {

English = 0, Chinese = 1 }

(45)

實例探討 sample2-a5

z 程式功能

z 用列舉記錄學生和座號對照表

z 程式說明

enum studentID:int {

alice = 12, bob = 24 }

static void Main(string[] args) {

Console.WriteLine(studentID.alice + " 的座號為: " + (int)studentID.alice);

Console.WriteLine(studentID.bob + " 的座號為: " + (int)studentID.bob);

(46)

課堂練習 sample2-b7

z程式功能

z列印出星期一到日各為一星期的第幾天 z以星期日為第一天

z基本概念

z利用列舉將星期一到日的名稱對應至第幾天 的常數值記錄下來

zSun = 1, Mon = 2, Tue = 3, Wed = 4, Thi = 5, Fri = 6, Sat = 7

(47)

Outline

z 前情提要 z 變數

z 資料型別

z 變數宣告及使用 z 型別轉換

z 運算子 z 常數

z 列舉型別 z

結構型別

z 亂數

z 課後練習

(48)

結構資料型別

z結構可用來讓使用者自訂需要的型別,

它是由許多不同型別組織在一起所組成 z結構不可在方法內宣告

z用法

struct student {

public int id;

public string name;

}

(49)

實例探討 sample2-a6

z 程式功能

z 利用 struct 建立 student 基本資料

z 程式說明

struct student {

public int id;

public string name;

}

static void Main(string[] args) {

student ives;

ives.id = 27;

ives.name = "ives";

(50)

課堂練習 sample2-b8

z程式功能

z利用結構自訂通訊錄資料型態

z列印三行請使用者輸入姓名、年齡及電話 z輸入完後列印出使用者的相關資料

z基本概念

z利用 struct 建立 name、age、tel 三個資料欄 位

(51)

Outline

z 前情提要 z 變數

z 資料型別

z 變數宣告及使用 z 型別轉換

z 運算子 z 常數

z 列舉型別 z 結構型別

z

亂數

z 課後練習

(52)

亂數

z亂數作用

z可用來產生隨機的數字

z亂數宣告

zRandom 變數名稱 = new Random();

z亂數產生方法

z變數名稱.Next(最小值,最大值)

z亂數的值會大於等於最小值,小於最大值

(53)

實例探討 sample2-a7

z 程式功能

z 列印出三個 0 ~ 9 之間的亂數

z 程式說明

//亂數宣告

Random rnd = new Random();

//產生亂數

Console.WriteLine(rnd.Next(1,10));

Console.WriteLine(rnd.Next(1,10));

Console.WriteLine(rnd.Next(1,10));

(54)

課堂練習 sample2-b9

z程式功能

z先用亂數產生一個 1 ~ 3 之間的數 z讓使用者輸入一個數字

z使用者猜對則列印 ture 猜錯印出 false

z基本概念

z利用 Random 中的 Next 方法即可達成

(55)

Outline

z 前情提要 z 變數

z 資料型別

z 變數宣告及使用 z 型別轉換

z 運算子 z 常數

z 列舉型別 z 結構型別

z 亂數

z

課後練習

(56)

課後練習 (1) sample2-1c

z程式功能

zBob 和 Alice 買醬油

z利用常數定義醬油價格並列印出

z分別請使用者輸入 Bob 及 Alice 買了幾瓶醬 油以及有多少折扣

z請利用 struct 記錄 Bob 和 Alice 的相關資訊 z列印出 Bob 及 Alice 分別花多少錢

z再列印出 Bob 花的錢比較少這句話為真或假

(57)

課後練習 (2) sample2-1c

z執行結果

參考文獻

相關文件

z 香港政府對 RFID 的發展亦大力支持,創新科技署 06 年資助 1400 萬元 予香港貨品編碼協會推出「蹤橫網」,這系統利用 RFID

FUNCTION ODD_par8 (DI: STD_LOGIC_VECTOR(7 DOWNTO 0) ) RETURN STD_LOGIC;. FUNCTION ODD_par81 (DI: BIT_VECTOR(7 DOWNTO 0))

z請利用 struct 記錄 Bob 和 Alice 的相關資訊 z列印出 Bob 及 Alice 分別花多少錢. z再列印出

z請利用 struct 記錄 Bob 和 Alice 的相關資訊 z列印出 Bob 及 Alice 分別花多少錢. z再列印出

private void closeBTN_Click(object sender, System.EventArgs

Session.Add(string name, object value) z將新項目加入 Session 當中。..

zCount 屬性–取得項目個數 zAdd 方法–新增項目. zRemove 方法–移除指定項目

z z 發展學生解難及 發展學生解難及 溝通能力 溝通能力 ,鼓勵學生運用 ,鼓勵學生運用 批判性思考 批判性思考