• 沒有找到結果。

y 資料型別

N/A
N/A
Protected

Academic year: 2022

Share "y 資料型別"

Copied!
52
0
0

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

全文

(1)
(2)

y

變數

y 亂數

y

變數

y 資料型別

y 變數宣告及使用

y 亂數

y 課後練習

y 變數宣告及使用

y 型別轉換

y 運算子

y 運算子

y 常數

y 列舉型別

y 列舉型別

y 結構型別

(3)

y 何謂變數

y 何謂變數

y

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

y 變數宣告

y 變數宣告

y

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

y 資料型別

y

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

(4)

y 開頭第一個字必須為 A Z、a z 或  (底線) …

y 開頭第一個字必須為 A‐Z、a‐z 或 _ (底線) …

y 不允許數字 0‐9 當做變數的開頭

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

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

y

SCHOOL、School、school

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

y

school_name、schoolName

可使用中文命名 但易造成混淆

y 可使用中文命名,但易造成混淆

y 不可以使用 C# 的關鍵字命名 錯誤的命名方式

y 錯誤的命名方式

y

my name、7_eleven、B&Q、new

(5)

b t t b b l b k abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto

if implicit in int interface internal is lock long namespace new null object operator out

override paramsp privatep protectedp publicp

(6)

d l f t b t l d readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true

try typeof uint ulong unchecked unsafe ushort using virtual volatile void while

(7)

變數 y 亂數

y 變數

y

資料型別

變數宣告及使用

y 亂數

y 課後練習

y 變數宣告及使用

y 型別轉換

y 運算子

y 常數

y 列舉型別

y 結構型別 結構型別

(8)

數值型別

y 數值型別

y

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

y

浮點數型別

y

布林型別

y

字元型別

y

字元型別

y

貨幣、結構、列舉…

y 參考型別 參考型別

y

物件

y

字串

y

陣列

y

類別…

(9)

型別 佔用位元 數值範圍 型別 佔用位元 數值範圍

sbyte 8 -128 ~ 127

b t

Signed 與 unsigned 的差別 ?

8 0 255

byte 8 0 ~ 255

short 16 -32768 ~ 32767

ushort 16 0 ~ 65535

int 32 -2147483648 ~ 2147483647 int 32 2147483648 2147483647

uint 32 0 ~ 4294967295

l 64 9223372036854775808

long 64 -9223372036854775808

~9223372036854775807

ulong 64 0 ~ 18446744073709551615

(10)

y

浮點數型別

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

型別 位元 精確度 數值範圍

float 32 7位 1.5 × 10-45 ~ 3.4 × 1038

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

d i l 型別

double 64 15~16位 5.0 × 10-324 ~ 1.7 × 10308

y

decimal 型別

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

y

布林型別 bool

y

布林型別 bool

y 布林型別的值為 true 或 false 

(11)

字元型別 h

y 字元型別 char

y

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

尾括起來

y

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

y 字串型別 string

y 字串型別 string

y

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

尾括起來

y

例如︰"my name is ives!!"

(12)

變數 y 亂數

y 變數

y 資料型別

變數宣告及使用

y 亂數

y 課後練習

y

變數宣告及使用

y 型別轉換

y 運算子

y 常數

y 列舉型別

y 結構型別 結構型別

(13)

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

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

y 宣告方式

y

資料型別 變數名稱;

y

資料型別 變數名稱;

y

int telNum;

y

int telNum = 321;

y

string myName;

y

string myName = “ives";

y

string myName = “"; string myName    ;

y

int i = 16 , j , k;

(14)

程式功能

y 程式功能

y

先請使用者輸入名字

y

換行列印 "XXX 您好!!"

y

換行列印 XXX 您好!!

y

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

y 程式說明

static void

Main(string[] args) {

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

string userName = Console.ReadLine();

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

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

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

Console.ReadLine();

(15)

程式功能

y 程式功能

y

第一行先請使用者輸入名字

y

第二行再請使用者輸入性別

y

第二行再請使用者輸入性別

y

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

y

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

y

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

y 基本概念

y

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

y

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

Extra: http://acm.uva.es/p/v2/264.html

(16)

變數 y 亂數

y 變數

y 資料型別

變數宣告及使用

y 亂數

y 課後練習

y 變數宣告及使用

y

型別轉換

y 運算子

y 常數

y 列舉型別

y 結構型別 結構型別

(17)

y 隱含轉換 (implicity)

y 隱含轉換 (implicity)

y

數值範圍較小的型別,被指定至數值範圍較大的型別,

此種轉換由編譯器自動完成 此種轉換由編譯器自動完成

y

例如︰

int a  = 321;

l  b    long b = a;

y 明確轉換 (explicity)

y

超出轉換型別的資料內容均會遺失

y

超出轉換型別的資料內容均會遺失

y

例如︰

long a = 123;g int b = (int) a;

(18)

數值轉成字串型別

y 數值轉成字串型別

y

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

y

例如︰

int a = 321;

string b = a.ToString();g g();

y 字串轉數值型別

y

利用數值型別 Parse() 方法來完成利用數值型別 Parse() 方法來完成

y

例如︰

string b = "321";

int a = int.Parse(b);

(19)

y 程 式 功 能

y 程 式 功 能

y

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

y 程 式 說 明

y 程 式 說 明

//資料遺失 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);

(20)

程式說明

y 程式說明

//字串數值型別轉換

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

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

string c = Console.ReadLine();

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

Console.ReadLine();

(21)

程式功能

y 程式功能

y

單純練習型別轉換

y

請使用者輸入四個整數

y

請使用者輸入四個整數

y

將前二個整數及後二個整數個別相加

y

再將這二個相加後的整數一起列印出來

y

再將這二個相加後的整數一起列印出來

y 基本概念

y

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

y

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

y

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

(22)

變數 y 亂數

y 變數

y 資料型別

變數宣告及使用

y 亂數

y 課後練習

y 變數宣告及使用

y 型別轉換

y

運算子

y 常數

y 列舉型別

y 結構型別 結構型別

(23)

運算子符號 意義 實例

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

+ 相加 i = j + k;

- 相減 i = j - k;

* 相乘相乘 i = j * k;i j k;

/ 相除取商 i = j / k;

% 相除取餘 i = j % k;

字串相加為字串合併

y 字串相加為字串合併

y 用法

y

int i = 16 , j , k;

y

j = i / 3;        //運算後 j 的值為 5

(24)

y 程式功能

y 程式功能

y

計算三角形面積

y

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

y

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

y 基本概念

y

由 Console.ReadLine() 所讀取進來的資料皆為字串型別,

必須將其轉換為數字型別 底乘高除二即為所求

y

底乘高除二即為所求

(25)

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

運算子符號 意義 實例

== 相等 i == j

!= 不相等 i != j

大於 i j

> 大於 i > j

< 小於 i < j

>= 大於或等於 i >= j

>= 大於或等於 i >= j

<= 小於或等於 i <= j

(26)

用法

y 用法

y

4  >  3       //輸出為 true

y

'a' > 'b'  //輸出為 false 

y

a  >  b   //輸出為 false 

y 字元比較

y

字元是以 U i d  碼來比較大小  的 U i d  碼為

y

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

(27)

程式功能

y 程式功能

y 輸入二個數字

y 列出二數之前的關係

y 程式說明

//輸入二數

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

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));

(28)

程式功能

y 程式功能

y

先請使用者輸入一個數字

y

判斷該數字是否大於 5

y

判斷該數字是否大於 5

y

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

y 基本概念

y 基本概念

y

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

(29)

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

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

符號 意義 實例 用法

符號 意義 實例 用法

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

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

y 用法

! 相反 !i 若 i 為真結果為假、若 i 為假結果為真

用法

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

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

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

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

(30)

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

符號 意義 實例 原來的式子

指定 i 5 i 5

= 指定 i = 5 i = 5

+= 相加後再指定 i += 5 i = i + 5

= 相減後再指定 i = 5 i = i 5

-= 相減後再指定 i -= 5 i = i - 5

*= 相乘後再指定 i *= 5 i = i * 5

/= 相除取商後再指定 i /= 5 i = i / 5

/ 相除取商後再指定 i / 5 i i / 5

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

(31)

程式功能

y 程式功能

y

計算正方形面積

y

請使用者輸入正方形邊長 (整數)

y

請使用者輸入正方形邊長 (整數)

y

計算後列印出正方形面積大小

y 基本概念

y 基本概念

y

請利用複合運算子完成

y

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

y

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

(32)

用來將變數值加一或減一

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

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

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

符號 意義 實例

++ 將變數值加一 i++、++i

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

y 用法

y

int a = 5, b = 5;

y

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

y

int d = ++b;    //d 的結果為 6

(33)

y

程式功能

y

程式功能

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

y

程式說明

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

j += ++i;

j += ++i;

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

   

y += x++;

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

Console.WriteLine("x =" + x++); // How about ++x ? Console.WriteLine("x =" + x);

(34)

   b   

y a + b + c

y

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

   b * 

y a + b * c

y

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

(    b) * 

y (a + b) * c

y

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

   b   

y a = b = c

y

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

(35)

變數 y 亂數

y 變數

y 資料型別

變數宣告及使用

y 亂數

y 課後練習

y 變數宣告及使用

y 型別轉換

y 運算子

y

常數

y 列舉型別

y 結構型別 結構型別

(36)

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

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

y 不同的地方在於常數的值必須在宣告時給定初始值,

並且常數值的初始值決定後 就無法在程式中做任何 並且常數值的初始值決定後,就無法在程式中做任何 修改

用法

y 用法

const double pi = 3.1415926; 

(37)

程式功能

y 程式功能

y

計算圓面積

y

請使用者輸入圓半徑 (整數)

y

請使用者輸入圓半徑 (整數)

y

計算後列印出圓形面積大小

y 基本概念

y 基本概念

y

請設定常數值 pi = 3.1415926

y

圓面積公式為半徑 * 半徑 * pi

y

圓面積公式為半徑  半徑  pi

(38)

變數 y 亂數

y 變數

y 資料型別

變數宣告及使用

y 亂數

y 課後練習

y 變數宣告及使用

y 型別轉換

y 運算子

y 常數

y

列舉型別( enum )

y 結構型別 結構型別

(39)

y

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

y

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

y

列舉底層型別預設為 int,可用的型別尚包含 byte、sbyte、y y short、ushort、uint、long 及 ulong

y

列舉的清單項目以 『, 』分隔

y

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

y

用法

 l l

enum language:long {

English = 0, Chinese = 1 }

(40)

y

程式功能

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

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

y

程式說明

enum studentID:int {

alice = 12, bob = 244 }

static void Main(string[] args) {{

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

Console.WriteLine(studentID.bob + " 的座號為: " +  (i ) d ID b b)

(int)studentID.bob);

Console.WriteLine("座號 12 號的是: "+(studentID)12);

Console.WriteLine("座號 24 號的是: "+(studentID)24);

(41)

程式功能

y 程式功能

y

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

y

以星期日為第一天

y

以星期日為第一天

y 基本概念

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

y

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

y

Sun = 1  Mon = 2  Tue = 3  Wed = 4  Thu = 5  Fri = 6  Sat 

y

Sun = 1, Mon = 2, Tue = 3, Wed = 4, Thu = 5, Fri = 6, Sat 

= 7

(42)

y 變數 y 亂數

y 變數

y 資料型別

y 變數宣告及使用

y 亂數

y 課後練習

y 變數宣告及使用

y 型別轉換

y 運算子

y 運算子

y 常數

y 列舉型別

y 列舉型別

y

結構型別

(43)

y 結構可用來讓使用者自訂需要的型別,它是由許多不

y 結構可用來讓使用者自訂需要的型別,它是由許多不 同型別組織在一起所組成

y 結構不可在方法內宣告

y 結構不可在方法內宣告

y 用法

struct student  struct student  {

public int id;

public string name;

}

(44)

程式功能

y

程式功能

y 利用 struct 建立 student 基本資料

y

程式說明程式說明

struct student {

public int id;

public string name;

}

static void Main(string[] args) {{

student ives;

ives.id = 27;

ives name = "ives";

ives.name    ives ;

Console.WriteLine("學生姓名: " + ives.name + "\n" + "學生座號: " + 

ives.id );

(45)

程式功能

y 程式功能

y

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

y

列印三行請使用者輸入姓名、年齡及電話

y

列印三行請使用者輸入姓名、年齡及電話

y

輸入完後列印出使用者的相關資料

y 基本概念

y 基本概念

y

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

(46)

y 變數 y

亂數

y 變數

y 資料型別

y 變數宣告及使用

y

亂數

y 課後練習

y 變數宣告及使用

y 型別轉換

y 運算子

y 運算子

y 常數

y 列舉型別

y 列舉型別

y 結構型別

(47)

亂數作用

y 亂數作用

y

可用來產生隨機的數字

亂數宣告

y 亂數宣告

y

Random 變數名稱 = new Random();

亂數產生方法

y 亂數產生方法

y

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

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

y

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

(48)

y 程式功能

y 程式功能

y

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

y 程式說明

y 程式說明

//亂數宣告

Random rnd = new Random();

Random rnd   new Random();

//產生亂數

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

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

Console WriteLine(rnd Next(1 10));

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

(49)

程式功能

y 程式功能

y

先用亂數產生一個 1 ~ 3 之間的數

y

讓使用者輸入一個數字

y

讓使用者輸入一個數字

y

使用者猜對則列印 true 猜錯印出 false

y 基本概念

y 基本概念

y

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

(50)

y 變數 y 亂數

y 變數

y 資料型別

y 變數宣告及使用

y 亂數

y

課後練習

y 變數宣告及使用

y 型別轉換

y 運算子

y 運算子

y 常數

y 列舉型別

y 列舉型別

y 結構型別

(51)

程式功能

y 程式功能

y

Bob 和 Alice 買醬油

y

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

y

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

y

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

少折扣

y

請利用 struct 記錄 Bob 和 Alice 的相關資訊

y

列印出 Bob 及 Alice 分別列印出 及 分別花多少錢花多少錢

y

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

(52)

執行結果

y 執行結果

參考文獻

相關文件

情分泌素所刺激為最高之百分率。結果公認在月經後十天至十四天為最高之性

〝 Exact methods for determining the kinematics of a Stewart platform using additional displacement sensors,〞Journal of Robotic Systems,Vol.

Ambedkar and Untouchability: Fighting the Indian Caste System, New York: Columbia University Press, 2005 , p.121.. Christopher Jaffrelot,

明攝山棲霞寺沙門釋法會傳  燕京吉祥院沙門釋明信傳  新城壽昌寺沙門釋慧經傳  青陽九華山沙門釋性蓮傳

Interface positions at different instants: experimental (left) and numerical results computed without (Simulation 1, middle) and with (Simulation 2, right)

CBETA uses its service to provide the uses to donate by using the credit cards or PayPal account to support the CBETA

二年愛班有 7 位同學假日相約去爬山,秀秀帶了 113 個聖女小番茄分給大家品嚐,已知男生每 人分得 14 個,女生每人分得 17 個,剛好分完所有的小番茄,假設男生有

Grant, ed., The Process of Japanese Foreign Policy (London: Royal Institute of International Affairs, 1997), p.119.