280 likes | 441 Views
C# 課程 . 基本介面介紹. 建立新 專案 STEPS 1 開啟 Visual Studio 2010 ,畫面左方選擇建立新專案. 基本介面介紹. 建立新 專案 STEPS 2 左邊注意所選擇的語言 (C#) ,中間選擇要建立的專案類型。主要會用到 Windows Form 應用程式以及主控台應用 程式兩種。這邊先選擇建立主控台應用程式, 預設專案名稱為 ConsoleApplication1. Windows Form 應用程式 執行結果為視窗化界面的程式 , 具表單、按鈕、下拉式選單等等. 主控台應用程式 執行結果為文字介面的程式 ,
E N D
基本介面介紹 建立新專案 STEPS1開啟Visual Studio 2010,畫面左方選擇建立新專案
基本介面介紹 建立新專案 STEPS 2左邊注意所選擇的語言(C#),中間選擇要建立的專案類型。主要會用到Windows Form應用程式以及主控台應用 程式兩種。這邊先選擇建立主控台應用程式,預設專案名稱為ConsoleApplication1 Windows Form應用程式 執行結果為視窗化界面的程式, 具表單、按鈕、下拉式選單等等 主控台應用程式 執行結果為文字介面的程式, 如同Windows作業系統內建 的明令提示字元
主控台應用程式-程式基本架構 專案建立完成後,visual Studio 2010會自動產生程式的基礎架構。 01 Using System; 02 Using System.Collections.Generic; 03 Using System.Linq; 04 Using System.Text; 05 Namespace ConsoleApplication1 06 { 07 Class Program 08 { 09 Static void Main(string[] args) 10 { 11 12 } 13 } 14 } 01-04行: 引用系統定義的命名空間(namespace) 05行: 預設的命名空間 07行: 預設的類別 09行: Main()為程式執行的進入點。 一個c#程式,可以同時有多個class 但只有一個class能有main方法。 C#編譯器在編譯時, 會將main()視為程式開始執行的進入點。
Class Class (類別) 專案一建立完成, 會預設產生名稱為Program的類別 =>class Program 建立方式: 1.對著專案名稱=>右鍵=>新增項目 =>檔案類型選擇類別(如右圖所示) 2.直接在Namespace ConsoleApplication1 命名空間內撰寫,如: class a { }
Class 範例一 在 class Class1 { 撰寫 public inta=10; } 並在原本Program.cs檔案中的main方法裡,撰寫 Class1 h = new Class1(); Console.WriteLine("Class1 的屬性a{0}為:",h.a); 對著專案名稱=>右鍵=>新增項目 =>檔案類型選擇類別 右方專案總管會發現新增了一個.cs檔案 名稱為Class1.cs 內容如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Class1 { } }
Class建構子 範例二 : 在Class1中撰寫如下程式碼 class Class1 { private int weight; private intheigh; public Class1() { weight = 60; heigh = 170; Console.Write("身高為:{0} 體重為{1}", heigh, weight); } public Class1(int w) { weight = w; heigh = 170; Console.Write("{0} {1}",weight,heigh); } } • 建構子為在建立class物件時,會執行的初始化動作 • 建構子的名稱必須和class名稱相同 • 在未撰寫任何建構子的時候,系統會預設一個空白的預設建構子,一旦撰寫了任何建構子,系統預設的建構子就會消失() • 在Program.cs的main方法中,撰寫 • static void Main(string[] args) • { • int a=0; • Console.WriteLine("請輸入體重:"); • a=int.Parse(Console.ReadLine()); • Class1 h = new Class1(a);//此時宣告物件時因丟入一個參數,因此會執行建構子2 • Console.Read(); • } 建構子1 建構子2
Class建構子 範例三 : 在Class1中撰寫如下程式碼 class Class1 { private int weight; private intheigh; public Class1() { weight = 60; heigh = 170; Console.Write("身高為:{0} 體重為{1}", high, weight); } public Class1(int w) { weight = w; heigh = 170; Console.Write("{0} {1}",weight,heigh); } } • 建構子為在建立class物件時,會執行的初始化動作 • 建構子的名稱必須和class名稱相同 • 在未撰寫任何建構子的時候,系統會預設一個空白的預設建構子,一旦撰寫了任何建構子,系統預設的建構子就會消失() • 在Program.cs的main方法中,撰寫 • static void Main(string[] args) • { • Class1 h = new Class1();//與上頁不同,此時宣告物件時未丟入參數,因此會執行建構子1 • Console.Read(); • } 建構子1 建構子2
範例四 : 在Class1中撰寫如下程式碼 class Class1 { private int weight, high; public int W { get { return high; } set { if (value > 400) { Console.WriteLine("error"); value = 200; } high = value; } } } Class存取子 get & set 一般在class中,宣告變數,供其他類別或方法呼叫,無法對該變數做保護或值得檢測與限制。如透過get 及set方法來存取,可加上一些檢測機制,範例如下 在Program.cs的main方法中,撰寫 static void Main(string[] args) { Class1 h = new Class1(); Console.Write("請輸入身高:"); h.W= int.Parse( Console.ReadLine() );//此時執行W屬性中的set,使用者輸入的值會預設存入set所提供的value變數 Console.WriteLine("身高為:{0}",h.W); //此時執行W屬性中的get Console.Read(); } Value為使用者輸入之值
變數 變數
變數宣告 • 命名規則: • 1.不允許以數字作為開頭 • 2.有區分大小寫,如SCORE和score視為兩個不同的名稱 • 3.可用中文字命名(不建議) • 4.不可和程式中之保留字重複,如int、if、using…等。
數值變數 • 有兩種宣告方式 • int i=100; //宣告名稱為i的數字變數,初始值為100 • int i; • i=100; 1 2 各種數值型態變數
字元與字串 • ※字元變數 • EX: char mychar=’a’; //宣告名稱為mychar的字元變數,值為a • ※字串變數 • EX: • String str1=”你好”;//宣告名稱為str1的字串變數 • String str1; • str1=”你好”;
主控台應用程式-顯示文字& 讀取資料 顯示文字: Console.Write- 顯示完字串後游標停留在最後一個字元後,不換行 Console.WriteLine-顯示完字串後游標自動換到下一行 讀取變數: Console.Read()- 讀取使用者輸入的字元 Console.ReadLine()–讀取使用者輸入之字串 Int a=0; Console.Write (“請輸入一個數字:”); Console.WriteLine(“數字a的值為{0}:",a);
範例 建立一程式,讓使用者輸入姓名及分數,最後在畫面上顯示結果
範例 12行:宣告字串變數name 13行:宣告數字變數score 14行:Console為命名空間System(已在01行中引用)中的一個類別。此類別中write方法,可將()中,雙引號包住的字串,由目前游標位置開始顯示在執行畫面中,並將游標停在該行的最後。 [可對照21行] 15行:用console類別中的Readline方法,讀取使用者輸入的字串
範例 18行:用int.Parse方法,將Readline方法讀取的字串強制轉換為int型態。 21行:和Write方法的差別在於,顯示完字串後,會自動將游標移動到下一行。 當中{0}、{1}分別用來表示要印出的第1個變數name,第2個變數score。 24行:等待由鍵盤輸入資料,利用此方法將執行畫面停留下來,方便觀看結果。
逸出序列(Escape sequence) 若在C#中,想要顯示已經具有特殊意義之字元(字串),如\n、\a等。可在該字元前面加上一個反斜線\,此反斜線稱為逸出序列(Escape sequence)
If else & If … else if … else If … else if … else 語法 If (條件1) { 敘述區段1 } else if(條件2) { 敘述區段2 } else { 敘述區段3 } If else語法: if (條件) { 敘述區段 } else { 敘述區段 }
三元運算子 .. ? .. : .. [可對照if else] 語法 變數 = 運算式1 ? 運算式2 : 運算式3; 若運算式1為真,則運算式2的結果指定給變數,否則將運算式3的結果指定給變數 EX: max =a > b ? a : b 若a大於b,max = a,否則 max =b 改寫為if else則為: If(a>b) { max=a; } else { max=b }
Switch 若撰寫程式時,遇到有多種選擇的情形,一般來說是可以使用if else if 來完成。但會造成程式碼不易閱讀。若改用switch可使程式碼簡潔易維護。 語法 switch(變數 或 運算式) { case value1: [敘述區段1] break; … … case value5: [敘述區段5] break; } 說明: 運算式或變數的值,若等於value1,則執行接在value1後面的敘述區段,其餘依此類推
結構(struct) 結構可將數個相關但不同型別的變數集合在一起。成為一個新的結構資料型別。結構名稱和列舉相同,可做為新的資料型別使用。 語法 [存取修飾詞] struct結構名稱 { [存取修飾詞] 資料型別 結構成員1 … [存取修飾詞] 資料型別 結構成員4 } 說明: 存取修飾詞,可使用public(共用成員)或private(私有成員),若不寫,預設為private
列舉enum 為常數的集合。可以在類別(class)或結構(struct)內宣告,但不能在函式中宣告。存取修飾詞預設為public,可不打。 • 說明: • 列舉名稱可視為使用者自訂之新資料型別(見程式碼範例說明) • 列舉型態只能是: byte, sbyte, short, ushort, int, uint, long, ulong • 列舉內的每個成員,若沒有指定,預設從編號0開始。也可如下用指定的方式(見程式碼範例13-19行說明) 宣告方式 enum列舉名稱 : 列舉型別 { 列舉成員1, 列舉成員2, };
列舉enum程式碼範例(宣告一個用來表示一星期七天的列舉型別。)列舉enum程式碼範例(宣告一個用來表示一星期七天的列舉型別。) 11行:宣告名稱為weekDays,型別為int的列舉,名稱weekDays可做為新的型別使用。 13-19行:宣告列舉成員,並指定各個成員的常數值 22行:進入主程式 29行:使用者輸入之weeknum之值,必須先強制轉換型別為weekDays,才能夠與列舉成員之常數值做比較。 29-54行:使用switch進行多條件判斷。若使用者輸入之weeknum其值為1,則與weekDays.monday(利用存取修飾詞 ”.”,存取列舉weekDays中的monday成員)值相等,符合case weekDays.monday。接著利用console.WriteLine印出列舉成員Monday之字串值”monday”。ToString()為內建之方法,可將weekDays.Monday強制轉換為字串型別。 50行:若想印出該列舉成員之常數值,可在weekDays.列舉成員前加上(int),轉換為int型別即可。
上課驗收 試使用多項選擇敘述,由鍵盤輸入信用卡的前兩位數字作下列判斷:(本列請使用if-else或switch敘述達成) 若為03,顯示「03:聯合信用卡」 若為35,顯示「 35: JCB信用卡」 若為45,顯示「 45 : VISA信用卡」 若為54,顯示「 54 : MASTER信用卡」 其他顯示「xx:非商業用的信用卡」