本課簡介
這課主要介紹上一課所寫的 HelloWorld 程式碼架構
以及 C# 的 Entry Point(程式進入點)
教學影片
注意:影片有高畫質 720P 的選項,可以看得更清楚喔!
重點提示
1. 我們可以大致將 C# 程式碼分成兩塊,一塊是含有 using 的區塊,一塊是程式碼的主要部分
(1) using 部分主要是在呼叫內建的程式庫
(2) 主要區塊就是我們編寫程式邏輯的地方
2. C# 裡面,用大括號包起來的程式碼算是一個「區塊」。這個區塊屬於括號上面的程式碼所有。
3. Hello World 的這個程式由裡到外分成三層,namespace、class、method
4. namespace 可以想成是自己的程式庫,所以在 namespace 內寫程式碼就是在編寫自己的程式庫
5. class 一般負責 namespace 裡面一部分的工作
6. method 是在 class 下,負責更細部事務的東西。它有一個明顯的特徵,通常 method 後面都會跟著一個小括號,像是:void Example(int num)
7. static void main(string[] args) 是特別的 method,所有的 C# 程式都會從這個 method 開始執行。 一般稱之為「進入點(Entry Point)」
8. Console.WriteLine 跟 Console.ReadKey 也都是 method。前者會在黑色視窗上顯示文字,後者會等待使用者輸入任意字元
9. 每一行程式碼都必須要加上「;」(分號),代表一行的結束
補充
using System
大家可以看到程式裡面出現了 Console.WriteLine 以及其他 method。那這些 method 到底都寫在哪裡呢?事實上,就是寫在那些名為「System」的程式庫裡。那些程式庫包含了大量可以讓我們寫 C# 更方便的程式碼,以及我們之後會用到的「視窗」也都是寫在名為「System.Windows.Forms」的程式庫內。想要使用這些程式庫,就必須要在程式碼上面打上「using {程式庫名稱}」才行。不過剛開始不太需要注意,因為你的 IDE 都會自動地幫你打理好這些問題。
Console
寫過 C\C++ 程式的人,我想大多數顯示出來的結果都是出現在這個黑色的視窗上對吧?其實我們現在所看到這些視窗、按鈕甚麼的,背後都是由大量的程式碼所建立出來的。而且事實上,這些圖形的畫面是非常耗費資源。早期的程式設計師寫程式,都是在我們看到那個黑底白字的畫面上跑的。而 Console 就是 Windows 下的黑底白字介面。大家可以在「附屬應用程式」>「命令提示字元」那邊開啟 Console 的畫面。
Entry Point
每個程式都會有個獨一無二的「進入點」,也就是作為電腦一開始執行的 method。C\C++ 一般是使用「int main(void)」,win32 的程式是使用「int WINAPI WinMain(...)」,而 C# 就是這個「static void main(string[] args)」。基本上,這個名稱是規定好的,所以不可以隨便更改。如果改成別的名字,電腦就會不知道該從哪裡開始執行。
練習
1. 試著讓程式顯示多行的文字
例如:
C# 真好玩
而且我會寫第一個程式了
這是第三行的說
2. 接上一題,試著讓程式顯示一行停頓一次。每次停頓時,必須要按下鍵盤按鍵才會繼續。
3. 根據「相關資訊連結」的「Console 可以使用的 method 清單」,查查看還有甚麼其他 method 可以使用。例如:讓電腦發出 Beep 的一聲。
參考解答:https://github.com/slmt-tutorial-channel/c-sharp-solutions/blob/master/class_1_10/class3.md
相關資訊連結
System 程式庫裡面包含的 Class 清單
http://msdn.microsoft.com/zh-tw/library/system%28v=vs.80%29.aspx
Console 可以使用的 method 清單
http://msdn.microsoft.com/zh-tw/library/system.console_methods%28v=vs.80%29.aspx
不好意思我想問一個很笨的問題
回覆刪除您第二題出按個按鈕才會繼續,我用了Console.ReadLine()在每段話間放一次成功達到目的,但是我的疑問是為什麼用Console.Read()沒法達到同樣的效果,測試時第二段和第三段話會同時顯示
這邊要特別注意的是,電腦之中在輸入字元,按下 enter 之後
刪除其實是將你輸入的字串暫存在系統的一塊記憶體空間之中,俗稱緩衝區 (buffer)
當你呼叫 Console.Read() 時,它其實是從緩衝區之中讀取一個字元
這個時候就要看你緩衝區之內,是否有之前已經輸入過的字
如果有的話,就會依序先讀取之前輸入過的字
Console.Read() 會回傳一個字元,你可以把它印出來看看是甚麼
如果你印出來沒有東西的話,可以試著改用 int 變數存起來再印印看
感謝你的課程,對我幫助很大,謝謝你
回覆刪除不會!感謝支持~
刪除最近開始看你的影片和借書自學,講的簡單很好懂,還有部落格講解更仔細和分享相關網站,謝謝你的用心。
回覆刪除最近開始看你的影片和借書自學,講的簡單很好懂,還有部落格講解更仔細和分享相關網站,謝謝你的用心。
回覆刪除謝謝你的支持~
刪除感恩~
回覆刪除感謝你的影片給我很大的幫助!
回覆刪除我想問一下我想讓電腦持續bbbb是用這個嗎?
Console.Beep(int32 ,int32),
不知道怎麼設定參數frequency和duration
他給的範例我看不懂
謝謝
我一直在想,程式語言這部分未來的條件好嗎?到底適不適合走這條路?還煩請大師回答
回覆刪除