【C#程式設計文章】
【Unity遊戲程式設計】
【期末考及成績計算方式】
- 平時出席率與上課參與25%
- 平時作業(錄影,線上繳交) 30%
- 遊戲設計25% (團隊)
- 期末筆試30% (30題,線上考試,選擇題,21日,早上10點),題庫:
- 【C#-題庫】函式與程序
- 【C#-題庫】字串 Strings
- 【C#-題庫】控制結構
- 【C#-題庫】程式-基礎
- 【C#-題庫】程式-控制結構
- 【C#-題庫】資料型態
- 【C#-題庫】運算子 Operator
- 【C#-題庫】陣列 (Arrays)
課堂用編譯器軟體下載(微軟免費版本):Visual Studio 下載
Syllabus課程簡介教學目標成績表指定用書學習資源 題庫 評分方法
使學生熟悉結構化之程式語言並學習設計C#程式之過程以建立C#程式設計之能力。
課程臉書
- 熟悉結構化之程式語言
- 學習設計程式之過程
- 建立程式設計之能力
- 培養學生操作電腦之能力
- 利於學生獲得相關證照之取得
- 增加學生對程式設計之興趣
- 激發學生利用程式設計之能力輔助日後相關課程之學習。
Visual C# 2015程式設計經典,蔡文龍,碁峰
- C#程式設計線上教學 - 小山
- http://192.192.246.169/~wells/wiki/index.php/課程:程式設計
- C# Sharp Programming Exercises, Practice, Solution
- C#專案開發案例全程實錄教學(大陸)
- 【C#程式設計】設計俄羅斯方塊遊戲 (大陸)
- Game development
- C#, JAVA,PHP, Programming ,Source Code
- C# Programming Questions and Answers
- Visual Studio IDE
- 【小工具推薦】SnippetEditor
- My snake game
- 平常成績(作業、小考等) 30%
- 期中考 30%
- 期末(考試與學期作業報告) 40%
第二學期 各週教學內容與習題資料 Week 1~9
W1 (2/22)W2 (3/1)W3 (3/8)W4 (3/15)W5 (3/22)W6 (3/29)W7 (4/5)W8 (4/12)W9 (4/19)
開學暖身操:
1.試寫一程式,輸入年齡,輸入年資,以85制計算,輸出要到民國幾年才能退休?
註:取得今年的年(字串) DateTime.Now.Year.ToString();
2.試寫一程式,輸入台幣金額及日圓匯率,輸出等值的日圓數。
作業繳交處: http://tronclass.hk.edu.tw/course/125023/content#/
【程式範例】
using System; namespace ConsoleApplication1 { class Program { static float max(float x, float y) { float max = x; if (max < y) max = y; return max; } static void Main(string[] args) { float x, y; Console.Write("輸入第1個要比較的數字(浮點數):"); x = float.Parse(Console.ReadLine()); Console.Write("輸入第2個要比較的數字(浮點數):"); y = float.Parse(Console.ReadLine()); Console.WriteLine("輸入的二數 {0} 和 {1} 之間大的數是 {2}", x, y, max(x, y)); Console.ReadKey(); } } }【參考資料】
【本週作業】
完成 行動電話通話費的計算程式:問題連結
本週作業需完成二個版本:主控台版本及Windows Form版本。
【寫法提示】
using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int fare = 0; int time = 0; double money = 0.0; char YN; do { Console.Write("請輸入月租費方案:"); fare = Int32.Parse(Console.ReadLine()); Console.Write("請輸入通話秒數:"); time = Int32.Parse(Console.ReadLine()); if (fare == 386) { money = time * 0.08; if (money <= 386) money = 386; else if (money <= 386 * 2) money = money * 0.8; else money = money * 0.7; } Console.WriteLine("您本月要繳的通話費為{0}", money); Console.Write("是否繼續執行?(Y/N)"); YN = Console.ReadKey().KeyChar; //取得輸入的字元(單一個按鍵) Console.WriteLine(); } while (YN == 'Y' || YN == 'y'); } } }
延續上週
1.程式作業解析
2.文字檔的讀取
https://msdn.microsoft.com/zh-tw/library/ezwyzy7b.aspx
【程式設計】【C#】使用OpenFileDialog來開啟文字檔案
3.設計小算盤 4.方法 (區域變數/方法變數 vs. 類別變數/物件變數) 這是 Office Online 提供的內嵌 Microsoft Office 簡報。
清明節放假
1.文字檔的讀取
參考資料 https://msdn.microsoft.com/zh-tw/library/ezwyzy7b.aspx
【程式設計】【C#】使用OpenFileDialog來開啟文字檔案
【程式設計】【C#】開啟CSV資料檔案(.csv)並處理資料
2.作業:延續上面資料檔的讀取,加總每個人3個成績並算出每個人的平均成績。 3.方法 (區域變數/方法變數 vs. 類別變數/物件變數) 這是 Office Online 提供的內嵌 Microsoft Office 簡報。 期中考
第二學期各週教學內容與習題資料 Week 10~18
W10(4/26)W11(5/3)W12(5/10)W13(5/17)W14(5/24)W15(5/31)W16(6/7)W17(6/14)W18(6/21)
重要:本週講解關於物件導向的觀念
【程式設計】【C#】開啟CSV資料檔案(.csv)並處理資料 (有增加資料,和上週不同)
【作業1】將2維的浮點數陣列再增加一欄,填入每一位學生的成績平均。
【作業2】將2維的浮點數陣列再增加一列(最後一列),填入每次成績的平均(直的)。
【作業-挑戰題(加分)】將2維的浮點數陣列再增加一欄,找出前三名,第1名填1,第2名填2…,注意,必須處理同分的狀況。
【作業輸出參考:成績檔-排名 】
分組活動
1.組員招募
2.組員工作角色指派 (程式、美工、音效、遊戲設計)
3.分組報告
【程式設計】打磚塊遊戲
分組作業:下週早上九點,各組簡報,你們的打磚塊遊戲的特色版,加上你們的:
- 遊戲設計
- 美工設計
- 音效設計
- 程式設計
期末考試
第一學期 各週教學內容與習題資料 Week 1~9
W1 (091/14)W2 (091/21)W3 (091/28)W4 (10/5)W5 (10/12)W6 (10/19)W7 (10/26)W8 (11/2)W9 (11/9)
1.課程綱要介紹;2.教科書;3.參考書介紹;4.計分標準說明;5.C# 語言簡介
Visual Studio整合式開發環境介紹
第一週 作業 說明
作業繳交方式:請將作業過程錄影(使用免費的錄影工具ocam或active presenter),上傳至youtube,交給學藝整理連結。流程控制 - 重複結構
作業 1 :
作業2:
做一個介面讓二個使用者輪流下,程式要求:- 已經選了的方塊不能再選
- 判斷O或X瀛
- 重複程式或結束
對話方塊範例:
DialogResult r = MessageBox.Show(winner + " win! 重玩?", "分成勝負了!", MessageBoxButtons.YesNo); if (r == DialogResult.Yes) //若使用者按了Yes,清空按鈕上的文字 { button1.Text = ""; button2.Text = ""; button3.Text = ""; button4.Text = ""; button5.Text = ""; button6.Text = ""; button7.Text = ""; button8.Text = ""; button8.Text = ""; isX = true; return; } else this.Close(); //不玩了,結束程式!
作業繳交方式: 1.安裝螢幕錄製軟體(oCam、everCam或其他),錄製作業製作過程及執行畫面,為了要識別是否為個人的作業,參考上面畫面,一開始就將自己的學號及學號設計放在畫面上,再做後面的動作。 2.將作業錄影檔上傳至Youtube或Vimeo等免費影音平台。 3.將作業錄影檔連結填到課程「程式設計」智慧大師:
陣列
陣列- II
期中考
各週教學內容與習題資料 Week 10~18
W10(11/16)W11(11/23)W12(11/30)W13(12/7)W14(12/14)W15(12/21)W16(12/28)W17(1/4)W18(1/11)
主題:
4~6課本習題作業解析
程式下載:
第4章:ch04%e7%bf%92%e8%a7%a32013
第5章:ch05%e7%bf%92%e8%a7%a32013
第6章:ch06%e7%bf%92%e8%a7%a32013
本週作業:(作業錄影連結請上課程的智慧大師平台填寫)
1.
參考上圖,完成底下的程式:
2.完成魔方陣
主題:
1.流程圖
2.課本第6章習題解說
2.魔方陣的解說,if版本與取餘數循環版本,資料連結:http://wp.me/p7SbsS-JZ
本週作業:
程式作業:
1.設計一找零程式(畫面自行規劃設計),例:你上市場買菜,買了250元,付一千元,請問,菜販應該要怎麼找你錢才會使得找錢幣的數量是最低的?
2.輸入1個數字(畫面自行規劃設計),輸出其相對應的二進位、八進位及十六進位
紙本作業
繪出魔方陣的if版流程圖,作業紙課堂上發放。
本週作業:
完成一個巴斯卡三角形,此三角形列數為r,行數為c=2*r-1,程式要能輸入列數,據此產生rxc大小的巴斯卡三角形。
此次作業追加一個要求,過程中使用單步追蹤來確定程式執行各項變數的變化情況。
(作業錄影連結請上課程的智慧大師平台填寫)
- Console 命令提示字元(DOS視窗)與Windows視窗 教材文章
- 寫出字串至Console:Console.Write 與 Console.WrieLine
- 進位的轉換解析,附:參考資料
- 找零錢程式解析
- 分數分級問題:將分數依 A:100~90 B:80~89 C:70~79 D:60~69 E:0~59 分等級
- 華氏與攝氏的轉換
一、連續輸入範例:
using System; public class Hello { public static void Main() { string str1; int price, qty; Console.WriteLine(); Console.WriteLine(" 富國電腦圖書廣場"); Console.WriteLine("======================"); Console.Write(" 1. 書名:"); str1 = Console.ReadLine(); // 輸入書名並指定給 輸入書名並指定給str1變數 Console.Write(" 2. 售價:"); price = int.Parse(Console.ReadLine()); //將輸入的字串(數字)轉型成int整數型態的數值給price整數變數 Console.Write(" 3. 數量:"); qty = Convert.ToInt32(Console.ReadLine()); //將輸入的字串(數字)轉型成int整數型態的數值給qty整數變數,第2種轉換的方法 Console.WriteLine("======================"); Console.WriteLine(" 您訂購了 {0} 單價 {1} 元, 總金額:{2} 元", str1, price, price * qty); //另一種寫法:Console.WriteLine(" 您訂購了" + str1 + "單價" + price + "元, 總金額:" + (price * qty) + "元"); Console.Read(); } }
二、輸出一字串,此字串有多筆數字,請將此字串中的數字解析出來,並將這些數字由小大到列印出來。 步驟:
- 使用字串分割方法String.Split,該方法會產生一個內含數字元素的字串陣列, 參考:https://msdn.microsoft.com/zh-tw/library/tabh47cf(v=vs.110).aspx
- 將上面步驟產出的字串中的元素,一個一個轉換成數字型態(int32, int16, float, double... ),將這些數字複製到另一個數字陣列。(新陣列的產生以上面陣列的長度作為建立新陣列大小的參數)
- 利用Array.Sort排序,參考:https://msdn.microsoft.com/zh-tw/library/system.array.aspx (預設是由小到大排序,如果要由大到小,如何做?)
- 使用foreach走訪陣列每一個元素,並列出來。
using System; namespace inputExample //將輸入的整行數字字串(數字間以空個分開)分割成字串數字 { class Program { static void Main(string[] args) { Console.WriteLine("請數入一組數字(中間以空格隔開):"); string input = Console.ReadLine(); //讀取整行,傳回字串 string[] inputArray = input.Split(' '); //以空白字元方式將字串中的數字分割,並傳回所有數字的字串陣列 foreach(string strNum in inputArray) //走訪每一個在inputArray字串陣列中的元素,每次走訪的元素放入strNum變數中 { Console.WriteLine(strNum); } Console.WriteLine("Press any key to close this application ... "); Console.ReadKey(); //讓程式等待使用者… } } }示範2:
using System; namespace inputExample //將輸入的整行數字字串(數字間以空個分開)分割成字串數字 { class Program { static void Main(string[] args) { string input = Console.ReadLine(); //讀取整行,傳回字串 string[] inputArray = input.Split(' '); //以空白字元方式將字串中的數字分割,並傳回所有數字的字串陣列 int[] inputNumArray = new int[inputArray.Length]; Console.WriteLine("將字串裏的數字一一印出:"); int i = 0; foreach(string strNum in inputArray) //走訪每一個在inputArray字串陣列中的元素,每次走訪的元素放入strNum變數中 { inputNumArray[i] = Convert.ToInt32(strNum); i++; Console.WriteLine(strNum); } Array.Sort(inputNumArray); Console.WriteLine("rn將數字陣列排序,並列印資料:"); foreach (int num in inputNumArray) //走訪每一個在inputArray字串陣列中的元素,每次走訪的元素放入strNum變數中 { Console.Write(num + " " ); } Console.WriteLine("rnPress any key to close this application ... "); Console.ReadKey(); //讓程式等待使用者… } } }
三、找零錢程式
using System; namespace inputExample { class Program { static void Main(string[] args) //找零錢程式 { Console.Write("輸入消費金額:"); string input = Console.ReadLine(); int amount = int.Parse(input); Console.Write("輸入投入的金額:"); input = Console.ReadLine(); int money = int.Parse(input); money = money - amount; //要找的金額 Console.WriteLine("找錢的種類及數量"); Console.WriteLine("================"); Console.WriteLine("500:{0}張", money / 500); money = money % 500; Console.WriteLine("100:{0}張", money / 100); money = money % 100; Console.WriteLine("50:{0}枚", money / 50); money = money % 50; Console.WriteLine("10:{0}枚", money / 10); money = money % 10; Console.WriteLine("5:{0}枚", money / 5); money = money % 5; Console.WriteLine("1:{0}枚", money); Console.WriteLine("rnPress any key to close this application ... "); Console.ReadKey(); //讓程式等待使用者… } } }
四、提問:在做字串轉成數字時,字串若不符合數字格式的話,會產生例外狀況而結束程式,我們要如何檢查此例外狀況?並且做出適當的處置?(提示:try...catch)
五、本週作業,使用命令提示字元方式,錄影,先寫一行註解 標明 : 學號 姓名 作業名稱:分數分級(例)
- 印出一數N的質因數 做法提示: 判斷2~(N-1)是否為N的因數,並且是否為質數
using System; public class Hello { public static void Main() { int N; Console.Write("請輸入1個整數:"); N = int.Parse(Console.ReadLine()); Console.Write("{0}的因數:1,", N); for (int i = 2; i <= N-1; i++) { if (N % i == 0) //如果整除,那麼i就是N的因數 { Console.Write("{0},", i); } } Console.Write(N); Console.Read(); } }質因數完整解法:
/* 質因數 先求因數,再判斷因數是否為質數 */ using System; public class Hello { public static void Main() { int N; Console.Write("請輸入1個整數:"); N = int.Parse(Console.ReadLine()); Console.Write("{0}的質因數:", N); for (int i = 2; i <= N-1; i++) { if (N % i == 0) { bool isPrime = true; for (int j = 2; j <= i - 1; j++) { if (i % j == 0) isPrime = false; } if (isPrime == true) Console.Write("{0},", i); } } Console.Write("b b"); //將最後一個逗點去掉 Console.Read(); } }
- 印出小於9999的完全數,完全數的參考:https://zh.wikipedia.org/wiki/完全数
.C#方法
using System; public class Hello { static int SUM(int n1, int n2) { return n1 + n2; } static float SUM(float n1, float n2) { return n1 + n2; } public static void Main() { int n1, n2; Console.Write("請輸入第1個整數:"); n1 = int.Parse(Console.ReadLine()); Console.Write("請輸入第2個整數:"); n2 = int.Parse(Console.ReadLine()); Console.WriteLine("{0} + {1} = {2} ", n1, n2, SUM(n1,n2)); Console.Read(); } }
方法 (C# 程式設計手冊)
.質因數解說
using System; public class Hello { public static void Main() { int N; Console.Write("請輸入1個整數:"); N = int.Parse(Console.ReadLine()); Console.Write("{0}的質因數:", N); for (int i = 2; i <= N-1; i++) { if (N % i == 0) //i是N的因數,底下再判斷i是否為質數 { bool isPrime = true; for (int j = 2; j <= i - 1; j++) { if (i % j == 0) isPrime = false; //只要2~i-1有1數可整除i,那麼i就一定不是質數 } if (isPrime == true) Console.Write("{0},", i); } } Console.Write("b b"); //將最後一個逗點去掉 Console.Read(); } }
.完全數解說
/* 完全數 */ using System; public class Hello { static bool isPerfectNumber(int N) { int sum = 1; for (int i = 2; i <= N - 1; i++) { if (N % i == 0) { sum = sum + i; } } if (sum == N) return true; else return false; } public static void Main() { Console.Write("小於9999的完全數:"); for (int i = 2; i <= 9999; i++) { if (isPerfectNumber(i) == true) Console.Write("{0},",i); } Console.Write("b b(end)"); Console.Read(); } }
.本週作業:
- 大值判斷,寫一方法MAX,傳入2個整數(int),傳回其中較大者
- 小值判斷,寫一方法MIN,傳入2個整數(int),傳回其中較小者
- 質數判斷 寫一方法isPrime,傳入1個整數(int),判斷是否為質數,若是傳回true,不是的話傳回false
- 閏年判斷,寫一方法isLeapYear,傳入年份,型態為整數(int),判斷是否為閏年,若是傳回true,不是的話傳回false
- 利用第3題作出來的質數判斷方法,印出一數N的質因數。
- 本週作業反思:在解質因數問題時,使用方法呼叫與不使用方法呼叫(上週的作業)之間的差異。
本週程式作業.:連結
期末考試分成二段:
選擇題:close book,範圍為下面題庫。 (13:10考,30分鐘)
程式題:open book,可帶任何資料,範圍為整個學期的程式作業。 (13:50考,180分鐘)
學期考試題庫:
【C#-題庫】運算子 OPERATOR 【C#-題庫】資料型態 【C#-題庫】基本程式設計題目 【C#-題庫】控制結構 【C#-題庫】陣列 (Arrays) 【C#-題庫】字串 Strings 本週作業(3976):連結 期末考試