y
變數y 亂數
y
變數y 資料型別
y 變數宣告及使用
y 亂數
y 課後練習
y 變數宣告及使用
y 型別轉換
y 運算子
y 運算子
y 常數
y 列舉型別
y 列舉型別
y 結構型別
y 何謂變數
y 何謂變數
y
『變數』是用來請電腦幫忙記住某些我們需要的東西y 變數宣告
y 變數宣告
y
變數在使用之前,必須先告訴電腦要預先準備多大的空 間來存放這個變數的內容,這樣的步驟稱之為『宣告』y 資料型別
y
利用『資料型別』來描述所需要的空間大小y 開頭第一個字必須為 A Z、a z 或 (底線) …
y 開頭第一個字必須為 A‐Z、a‐z 或 _ (底線) …
y 不允許數字 0‐9 當做變數的開頭
y 字母的大小會視為不相同的變數
y 字母的大小會視為不相同的變數
y
SCHOOL、School、schooly 變數的名稱最好具有意義,可用底線或大小寫增 加可讀性
y
school_name、schoolName可使用中文命名 但易造成混淆
y 可使用中文命名,但易造成混淆
y 不可以使用 C# 的關鍵字命名 錯誤的命名方式
y 錯誤的命名方式
y
my name、7_eleven、B&Q、newb 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
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
變數 y 亂數
y 變數
y
資料型別變數宣告及使用
y 亂數
y 課後練習
y 變數宣告及使用
y 型別轉換
y 運算子
y 常數
y 列舉型別
y 結構型別 結構型別
數值型別
y 數值型別
y
正負號與無正負號整數型別 浮點數型別y
浮點數型別y
布林型別y
字元型別y
字元型別y
貨幣、結構、列舉…y 參考型別 參考型別
y
物件y
字串y
陣列y
類別…型別 佔用位元 數值範圍 型別 佔用位元 數值範圍
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
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
布林型別 booly
布林型別 booly 布林型別的值為 true 或 false
字元型別 h
y 字元型別 char
y
用來表示單一個字元,字元資料需要以單引號將字元頭 尾括起來尾括起來
y
例如︰'A'、'a'、'1'、'2'y 字串型別 string
y 字串型別 string
y
用來表示一串的字元,字串資料需要以雙引號將字串頭 尾括起來尾括起來
y
例如︰"my name is ives!!"變數 y 亂數
y 變數
y 資料型別
變數宣告及使用
y 亂數
y 課後練習
y
變數宣告及使用y 型別轉換
y 運算子
y 常數
y 列舉型別
y 結構型別 結構型別
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;
程式功能
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();
程式功能
y 程式功能
y
第一行先請使用者輸入名字y
第二行再請使用者輸入性別y
第二行再請使用者輸入性別y
第三行先列印出 "XXX 您好!!“y
第四行再列印出 "我猜 XXX 您一定是 X !! "y
第四行再列印出 我猜 XXX 您一定是 X !!y 基本概念
y
宣告二個字串變數分別儲存使用者所輸入的姓名與性別y
宣告二個字串變數分別儲存使用者所輸入的姓名與性別Extra: http://acm.uva.es/p/v2/264.html
變數 y 亂數
y 變數
y 資料型別
變數宣告及使用
y 亂數
y 課後練習
y 變數宣告及使用
y
型別轉換y 運算子
y 常數
y 列舉型別
y 結構型別 結構型別
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;
數值轉成字串型別
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);
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);
程式說明
y 程式說明
//字串數值型別轉換
Console.Write("輸入一個整數:");
Console.Write( 輸入一個整數: );
string c = Console.ReadLine();
Console.WriteLine(c + " 加 1 後為 " + (int.Parse(c) + 1).ToString());
Console.ReadLine();
程式功能
y 程式功能
y
單純練習型別轉換y
請使用者輸入四個整數y
請使用者輸入四個整數y
將前二個整數及後二個整數個別相加y
再將這二個相加後的整數一起列印出來y
再將這二個相加後的整數一起列印出來y 基本概念
y
把讀入的四筆資料轉成整數型態,做加法處理後,再轉y
把讀入的四筆資料轉成整數型態,做加法處理後,再轉 回字串型態相加y
Console.WriteLine(c + " 加 1 後為 " + (int.Parse(c) + 1).ToString());變數 y 亂數
y 變數
y 資料型別
變數宣告及使用
y 亂數
y 課後練習
y 變數宣告及使用
y 型別轉換
y
運算子y 常數
y 列舉型別
y 結構型別 結構型別
運算子符號 意義 實例
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 的值為 5y 程式功能
y 程式功能
y
計算三角形面積y
先列印出二行文字請使用者輸入三角形的底及高 (整數)先列印出二行文字請使用者輸入三角形的底及高 (整數)y
計算後列印出三角形的面積大小y 基本概念
y
由 Console.ReadLine() 所讀取進來的資料皆為字串型別,必須將其轉換為數字型別 底乘高除二即為所求
y
底乘高除二即為所求y 用以比較字串或數值的大小,輸出結果為真 (true) 或假 (false)
運算子符號 意義 實例
== 相等 i == j
!= 不相等 i != j
大於 i j
> 大於 i > j
< 小於 i < j
>= 大於或等於 i >= j
>= 大於或等於 i >= j
<= 小於或等於 i <= j
用法
y 用法
y
4 > 3 //輸出為 truey
'a' > 'b' //輸出為 falsey
a > b //輸出為 falsey 字元比較
y
字元是以 U i d 碼來比較大小 的 U i d 碼為y
字元是以 Unicode 碼來比較大小, a 的 Unicode 碼為 97,比 b 的 Unicode 碼 98 小,所以 b 會大於 a程式功能
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));
程式功能
y 程式功能
y
先請使用者輸入一個數字y
判斷該數字是否大於 5y
判斷該數字是否大於 5y
大於 5 則列印 true ,否則列印 falsey 基本概念
y 基本概念
y
利用 > 或 <= 關係運算子即可完成條件運算子是用來測試複雜的條件
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
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
程式功能
y 程式功能
y
計算正方形面積y
請使用者輸入正方形邊長 (整數)y
請使用者輸入正方形邊長 (整數)y
計算後列印出正方形面積大小y 基本概念
y 基本概念
y
請利用複合運算子完成y
正方形面積公式為邊長平方y
正方形面積公式為邊長平方用來將變數值加一或減一
y 用來將變數值加一或減一
y 擺在變數前表示先加減值再做其它運算,擺 在變數後表示先做其它運算再加減值
在變數後表示先做其它運算再加減值
符號 意義 實例
++ 將變數值加一 i++、++i
-- 將變數值減一 i--、--i
y 用法
y
int a = 5, b = 5;y
int c = a++; //c 的結果為 5y
int d = ++b; //d 的結果為 6y
程式功能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);
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變數 y 亂數
y 變數
y 資料型別
變數宣告及使用
y 亂數
y 課後練習
y 變數宣告及使用
y 型別轉換
y 運算子
y
常數y 列舉型別
y 結構型別 結構型別
常數和變數的作用相同 用來儲存特定的資料
y 常數和變數的作用相同,用來儲存特定的資料
y 不同的地方在於常數的值必須在宣告時給定初始值,
並且常數值的初始值決定後 就無法在程式中做任何 並且常數值的初始值決定後,就無法在程式中做任何 修改
用法
y 用法
const double pi = 3.1415926;
程式功能
y 程式功能
y
計算圓面積y
請使用者輸入圓半徑 (整數)y
請使用者輸入圓半徑 (整數)y
計算後列印出圓形面積大小y 基本概念
y 基本概念
y
請設定常數值 pi = 3.1415926y
圓面積公式為半徑 * 半徑 * piy
圓面積公式為半徑 半徑 pi變數 y 亂數
y 變數
y 資料型別
變數宣告及使用
y 亂數
y 課後練習
y 變數宣告及使用
y 型別轉換
y 運算子
y 常數
y
列舉型別( enum )y 結構型別 結構型別
y
列舉型別可用來表示一些性質相似的項目對照到固定的值y
列舉型別可用來表示一些性質相似的項目對照到固定的值 (常數)y
列舉底層型別預設為 int,可用的型別尚包含 byte、sbyte、y y short、ushort、uint、long 及 ulongy
列舉的清單項目以 『, 』分隔y
列舉型別不可以在方法內宣告y
用法l l
enum language:long {
English = 0, Chinese = 1 }
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);
程式功能
y 程式功能
y
列印出星期一到日各為一星期的第幾天y
以星期日為第一天y
以星期日為第一天y 基本概念
利用列舉將星期一到日的名稱對應至第幾天的常數值記
y
利用列舉將星期一到日的名稱對應至第幾天的常數值記 錄下來y
Sun = 1 Mon = 2 Tue = 3 Wed = 4 Thu = 5 Fri = 6 Saty
Sun = 1, Mon = 2, Tue = 3, Wed = 4, Thu = 5, Fri = 6, Sat= 7
y 變數 y 亂數
y 變數
y 資料型別
y 變數宣告及使用
y 亂數
y 課後練習
y 變數宣告及使用
y 型別轉換
y 運算子
y 運算子
y 常數
y 列舉型別
y 列舉型別
y
結構型別y 結構可用來讓使用者自訂需要的型別,它是由許多不
y 結構可用來讓使用者自訂需要的型別,它是由許多不 同型別組織在一起所組成
y 結構不可在方法內宣告
y 結構不可在方法內宣告
y 用法
struct student struct student {
public int id;
public string name;
}
程式功能
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 );
程式功能
y 程式功能
y
利用結構自訂通訊錄資料型態y
列印三行請使用者輸入姓名、年齡及電話y
列印三行請使用者輸入姓名、年齡及電話y
輸入完後列印出使用者的相關資料y 基本概念
y 基本概念
y
利用 struct 建立 name、age、tel 三個資料欄位y 變數 y
亂數y 變數
y 資料型別
y 變數宣告及使用
y
亂數y 課後練習
y 變數宣告及使用
y 型別轉換
y 運算子
y 運算子
y 常數
y 列舉型別
y 列舉型別
y 結構型別
亂數作用
y 亂數作用
y
可用來產生隨機的數字亂數宣告
y 亂數宣告
y
Random 變數名稱 = new Random();亂數產生方法
y 亂數產生方法
y
變數名稱.Next(最小值,最大值)亂數的值會大於等於最小值 小於最大值
y
亂數的值會大於等於最小值,小於最大值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));
程式功能
y 程式功能
y
先用亂數產生一個 1 ~ 3 之間的數y
讓使用者輸入一個數字y
讓使用者輸入一個數字y
使用者猜對則列印 true 猜錯印出 falsey 基本概念
y 基本概念
y
利用 Random 中的 Next 方法即可達成y 變數 y 亂數
y 變數
y 資料型別
y 變數宣告及使用
y 亂數
y
課後練習y 變數宣告及使用
y 型別轉換
y 運算子
y 運算子
y 常數
y 列舉型別
y 列舉型別
y 結構型別
程式功能
y 程式功能
y
Bob 和 Alice 買醬油y
利用常數定義醬油價格並列印出y
利用常數定義醬油價格並列印出y
分別請使用者輸入 Bob 及 Alice 買了幾瓶醬油以及有多 少折扣少折扣