450 likes | 601 Views
親愛的老師您好. 感謝您選用本書作為授課教材,文魁行銷準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 1 、本教具為非賣品,不得作為商業之用。 2 、本教具僅授權使用原著作為授課教材之教師作為教學或研究等學術用途。 3 、本教具未授權提供學生任何拷貝、影印、引用、翻印等行為。 4 、教師若需申請網站或內容授權,可透過您的博碩業務協助處理,謝謝。. 文魁行銷: 總公司:台北縣汐止市新台五路一段 112 號 10 樓 A 棟 電話: (02) 2696-9699 分機 324 林小姐 傳真: (02) 2696-9668
E N D
親愛的老師您好 感謝您選用本書作為授課教材,文魁行銷準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 1、本教具為非賣品,不得作為商業之用。 2、本教具僅授權使用原著作為授課教材之教師作為教學或研究等學術用途。 3、本教具未授權提供學生任何拷貝、影印、引用、翻印等行為。 4、教師若需申請網站或內容授權,可透過您的博碩業務協助處理,謝謝。 文魁行銷: 總公司:台北縣汐止市新台五路一段112號10樓A棟 電話:(02) 2696-9699 分機 324 林小姐傳真:(02) 2696-9668 網址:www.drmarketing.com.tw客服信箱:school@drmarketing.com.tw 出書提案信箱 publish@drmarketing.com.tw
C++程式設計 請老師填入姓名主講 課本:掌握C++程式設計 作者:文淵閣工作室 文魁行銷出版發行
第一章 認識C++程式語言 課前指引 C++ 語言發展至今,已使用在各種不同的電腦平台上,應用範圍非常廣泛,包括個人電腦上的辦公室軟體、資料庫、繪圖套裝軟體等,到大型電腦上的商業應用軟體、UNIX 作業系統等,大部分是以 C++ 語言設計。C++ 語言具有下面的特點:移植性高、強大類別庫、可模組化、兼具高低階語言能力。
章節大綱 1-1C++ 程式語言是什麼? 1-2C++ 的開發環境 1-3 撰寫 C++ 程式準備工作 1-4 基本程式指令 備註:可依進度點選小節
1.1 C++ 程式語言是什麼? • 程式語言是程式設計師與電腦溝通的管道,藉由程式設計所開發的各種軟體,可以讓電腦為我們解決許多生活上的問題。 • C++ 語言是最常使用的程式語言之一,其功能強大,目前很多系統及應用軟體都是用使用 C++ 語言撰寫,因此以C++ 語言做為學習程式設計的基礎是非常好的選擇。
1.1 C++ 程式語言是什麼? • C++ 的特點 • 移植性高 • 強大類別庫 • 可模組化 • 兼具高低階語言
1.1 C++ 程式語言是什麼? • 程式語言的編譯 • 電腦所認識的語言稱為「機器碼」,而機器碼是由眾多「0」與「1」的數字所構成 • 程式語言可分為編譯式語言及直譯式語言兩種 • 編譯式語言是使用編譯器(Compiler)將程式語言翻譯成機器碼,程式設計師所撰寫的程式只要經過該語言的編譯器編譯成機器碼,就能在電腦上執行,達成所賦予的任務。(如C++) • 直譯式語言則是使用直譯器(Intepreter)對程式碼做逐行解譯,每解譯一行就會執行該行程式,設計者立刻可以見到該行程式的執行結果,如果有錯誤可以立即修改,對於初學者的除錯非常方便。(如BASIC)
1.2 C++ 的開發環境 • 開發程式的步驟: • 撰寫: • 在文書編輯軟體中輸入程式碼,最簡單的方式就是用 Windows 系統內建的「記事本」編輯,或是使用其他的文字編輯器。 • 編譯: • 程式撰寫完成後開啟編譯器進行編譯,編譯過程中如果出現語法錯誤將無法完成編譯,必須修改錯誤的程式碼後再進行編譯,直到所有語法都正確才能完成編譯。 • 執行及檢查: • 編譯完成後,執行編譯產生的檔案觀察執行結果,若結果不符預期則需修改程式,重新編譯、觀察執行結果,直到結果符合需求為止。
1.2 C++ 的開發環境 • 市面上有許多 C++ 語言整合性開發環境軟體,這些軟體已預先內建自行設計的文字編輯器,用來撰寫程式碼,撰寫完後按一個鍵就會自動進行編譯及執行,而且通常會有完善的除錯功能,方便設計者改正錯誤,大幅提高程式設計的效率 • 目前使用者最多的 C++ 整合開發環境軟體為 Dev-C++ 及 Visual C++Express,不但功能強大,而且這兩套軟體都是免費的。
1.2 C++ 的開發環境 • Dev-C++ • Dev-C++ 的功能雖然比不上 Visual C++ 強大,但其系統檔案非常小,只有9M,佔用的資源很少,並且支援中文,操作方式簡易,各種整合功能一應俱全,很適合初學 C++ 語言者使用。 • Visual C++ • 微軟公司提供各種語言的免費 Express 版本,其中包含 Visual C++ 2010 Express, 使用者可在其網站上自由下載。 • 詳細安裝步驟,請同學翻閱課本1-5至1-12頁說明。
1.3 撰寫 C++ 程式準備工作 • C++程式中有些部分是在每個程式都會使用到,可將其視為 C++ 程式的基本架構,包括: • C++ 程式執行是由 main() 函式開始,所以 C++ 程式一定要有main() 函式。 • 每個程式必定都有輸出或輸入的部分,要使用輸出、輸入指令必須引入部分標頭檔。 • 顯示 C++ 程式的結果時,若不加上暫停的指令,將立刻關閉顯示結果的視窗而無法觀察到執行結果。 • 設計者可先建立好這些程式碼,再複製到新程式檔內,而不必每次都重複輸入。
1.3 撰寫 C++ 程式準備工作 • Dev-C++ 工作環境
1.3 撰寫 C++ 程式準備工作 • 標頭檔及命名空間 • 要將各資訊顯示在螢幕上的指令是「cout」,而讓使用者在鍵盤上輸入資料的指令是「cin」,這些輸出或輸入的功能幾乎在每個程式都無法避免。 • 系統將規範有關輸出及輸入功能的事項置於 <iostream> 檔中,程式中若要使用輸出及輸入功能需先將 <iostream> 引入才可使用,否則編譯時會產生錯誤。
1.3 撰寫 C++ 程式準備工作 • 引入 <iostream> 標頭檔的語法為: #include <iostream> • C++ 語言中,前面有「#」符號的程式列,在編譯時會透過編譯器內建的前置處理器,在編譯其他程式碼之前就先被讀入。 • cin、cout 等輸入及輸出功能的指令是定義在「std」命名空間中,所以要使用這些指令時的語法為「std::cin」、「std::cout」,每次使用都要重複輸入「std::」豈不是太麻煩了?只要使用 using 指令宣告要使用的命名空間,往後在此命名空間中的指令都可以省略命名空間的名稱。
1.3 撰寫 C++ 程式準備工作 • 宣告命名空間的語法為: • using namespace 命名空間; • 此處要宣告使用的命名空間名稱為「std」: • using namespace std; • 做了上述宣告後,在程式中要使用輸入及輸出功能的指令時,只需輸入「cin」、「cout」就可以,非常方便,而且節省許多輸入程式碼的時間。
1.3 撰寫 C++ 程式準備工作 • 主程式區塊 • 一個程式少則數十列,多則數百甚至數千列,電腦如何得知要由那一列程式開始執行呢? • C++ 程式指定會由 main() 函式開始執行,所以每個程式都要有main() 函式,程式開始執行時會由 main() 函式區塊中的程式碼一列一列依序向下執行。 • C++ 語言規定 main() 函式的傳回值必需是整數,所以在 main() 函式的最後要以「return 整數」做為函式的結束指令,通常使用「return 0」即可,表示由main() 函式返回,也就是結束 C++ 程式的執行。
1.3 撰寫 C++ 程式準備工作 • 在 C++ 語言中,函式中的程式碼必須被包含在一對大括號之中,即函式是以「{」開始,「}」結束。綜合上述規則,主程式區塊的寫法為:
1.3 撰寫 C++ 程式準備工作 • C++ 程式執行時,電腦會開啟一個新的視窗來顯示執行結果,當程式執行完畢後,就自動關閉顯示結果的視窗。 • 由於電腦執行的速度非常快,使用者往往只見到螢幕閃了一下,什麼也沒有看見,視窗就關閉了,使用者根本不知道執行結果是什麼! • 通常設計者會在主程式的倒數第二列(最後一列是「return 0」)加入暫停指令,讓程式在結束(即關閉視窗)前可以暫停一下,讓使用者觀察執行結果。
1.3 撰寫 C++ 程式準備工作 • C++ 暫停指令的語法為: • system("pause"); • 暫停指令的執行結果為: • 等使用者觀察完結果後,按任意鍵就可繼續執行程式而關閉視窗。
1.3 撰寫 C++ 程式準備工作 • C++ 的程式基本架構: • 以後每個程式都要使用此段基本架構,要撰寫新程式時只要將「程式敘述」移除,再於該處撰寫新程式碼即可。
1.4 基本程式指令 • 輸出及輸入是程式與使用者溝通的管道。 • 換行則可讓輸出的資料具有段落結構,避免使用者在一堆雜亂的顯示中不知所措。
1.4 基本程式指令 • 輸出及換行指令 • 通常學習 C++ 語言者所學的第一個程式指令都是 cout,其作用是將資料送到「標準輸出」上,如果沒有特別設定,標準輸出是指電腦螢幕。 • 將執行結果在電腦螢幕上顯示,幾乎是每個程式都要使用的功能,所以 cout 指令是使用最頻繁的指令。 • cout 指令的語法為: • cout << 輸出內容一 [<< 輸出內容二 …………];
1.4 基本程式指令 • 輸出及換行指令 • cout 指令可以一次輸出多段內容,輸出「內容二」會緊接著輸出「內容一」之後顯示,輸出「內容三」會緊接著輸出「內容二」之後顯示,依此類推。 • C++ 的程式列是以分號「;」做為結束,所以要記得在每列程式結束處加上分號,否則會產生編譯錯誤,這是剛開始撰寫程式者最容易犯的錯誤。
1.4 基本程式指令 • 輸出及換行指令 • 輸出內容主要分為兩種型態:如果是字串,則必須在字串前後加上「”」符號,例如: • cout << "這是字串示範"; • 如果是數值,則直接輸出數值即可: • cout << 1234; • 當然,也可以在數值前後加上「”」符號,將數值做為字串使用,例如: • cout << "1234";。
1.4 基本程式指令 • 輸出及換行指令 • cout 指令輸出時會將全部內容都連接在一起,即使是以不同程式列撰寫 cout指令也是如此,例如下面範例是在一列中輸出兩段內容: • cout << "Dev-C++" << "程式示範"; • 將兩段內容分別以不同程式列輸出,其結果仍然相同,皆為「Dev-C++ 程式示範」: • cout << "Dev-C++"; • cout << "程式示範";
1.4 基本程式指令 • 輸出及換行指令 • 如果要將輸出內容顯示於下一列,該如何做呢? endl 指令可將輸出位置移到下一列的開始位置,讓其後的輸出顯示於下一列。 • endl 指令的語法為: • cout << endl; • 例如下面的程式碼: • cout << "Dev-C++" << "程式示範" << endl; • cout << "這些文字會顯示於第二列"; • 執行結果為: • Dev-C++程式示範 • 這些文字會顯示於第二列
1.4 基本程式指令 • 建立 C++ 程式 • 詳細操作步驟,請同學翻閱課本1-20至1-22頁
1.4 基本程式指令 • 程式碼縮排 • C++ 程式的區塊是以一對大括號「{ }」做為界限,例如前一小節範例的main() 函式中,所有程式碼都在大括號內。 • 程式較為複雜時,會有相當多層次的大括號出現,設計者常會搞不清楚那一個左大括號和右大括號是一組,或缺了部分大括號而造成編譯錯誤。 • 設計程式時,可以使用空白鍵或 [Tab] 鍵將程式敘述縮排,將同一階層的程式碼整齊排列,同組的大括號也可置於相同位置,如此不但提高程式可讀性,也減少語法錯誤。
1.4 基本程式指令 無縮排:吃力難讀! C++ 程式是根據大括號及分號來判斷每一列程式的結束位置,在程式列中加入空白鍵、[Tab] 鍵、空白列等都不會影響程式編譯及執行。 有縮排:清爽好讀!
1.4 基本程式指令 • 以 Visual C++ 建立程式 • 詳細操作步驟,請同學翻閱課本1-23至1-25頁
1.4 基本程式指令 • 輸入指令 • cout 的作用是將資料送到「標準輸出」上,而 cin 的作用與 cout 相反,是讓使用者由「標準輸入」裝置輸入資料,如果沒有特別設定,標準輸入是指鍵盤。 • cin 指令也是使用相當頻繁的指令,例如教師若要利用電腦幫忙計算成績,則需先由鍵盤輸入學生成績。
1.4 基本程式指令 • 輸入指令 • cin 指令的語法為: • cin >> 變數一 [>> 變數二…………]; • 使用者輸入的資料是儲存於「>>」符號後面的變數中,變數及資料型態將在下一章中詳細說明。
1.4 基本程式指令 • 輸入指令 • 因為 cin 指令執行時只會在螢幕上顯示閃爍的游標,不會顯示任何提示訊息,使用者往往不知所措,因此在使用 cin 指令之前通常會用 cout 指令輸出一段提示訊息,告知使用者如何輸入資料。例如要使用者輸入數學成績的程式碼為: • cout << "請輸入數學成績(0-100):"; • cin >> score; • 執行結果為: 接下頁
1.4 基本程式指令 • 輸入指令 • 輸入資料時,當使用者按下 [Enter] 鍵後就視為輸入結束,cin 指令會將使用者輸入的資料存入變數中。
1.4 基本程式指令 • 輸入指令 • cin 指令也可以一次輸入多筆資料,例如讓使用者一次輸入數學及英文成績: • cout << "請輸入數學、英文成績:"; • cin >> score1 >> score2; • 多筆資料要如何輸入呢? • 每次輸入在使用者按下 [Enter] 鍵或 [Tab] 鍵或 空白 鍵後就視為一筆資料。 • 例如使用者輸入「78 92」,其結果為「score1=78,score2=92」。 使用 cin 指令一次輸入多筆資料雖然看起來很方便,但即使如上例加入提示訊息,大多數使用者仍不知道該如何在同一列中輸入多筆資料,所以建議盡量不要使用同一列輸入多筆資料,而在每一列僅輸入一項資料,並給予明確的提示訊息。
1.4 基本程式指令 • 範例時間:輸入姓名及成績 • 詳細操作步驟,請同學翻閱課本1-26至1-28頁
1.4 基本程式指令 • 程式註解 • 當程式變得龐大或撰寫時間久遠時,往往會忘記撰寫程式碼的本意,這時就必須重新推敲程式的邏輯及意義,無形中浪費了許多時間。因此,初學者最好養成為程式碼做註解的好習慣。 • 註解程式碼是標示程式的目的或解釋為何要如此撰寫程式,註解本身不會被執行,如此不但有助於未來自己解讀程式,也有助於他人對本程式的了解。 • C++ 是以雙斜線「//」做為註解符號,語法為: • //註解文字
1.4 基本程式指令 • 程式註解 • 當 C++ 編譯器見到註解符號時,會忽略同列中在註解符號後面的文字。例如: • //取得使用者輸入的姓名 • cin >> name; • 註解文字可以單獨成為一列,如上面的範例;有時為了節省程式撰寫空間,也可以跟隨在程式敘述之後,例如: • cin >> name; //取得使用者輸入的姓名
1.4 基本程式指令 • 程式註解 • 以雙斜線做為註解符號的方式對於單列程式的註解非常方便,但如果註解文字很長需跨越多列時,每一列都要加上雙斜線做為註解則是一件繁瑣的工作。 • C++ 提供另一種註解文字的方式,就是將註解文字以「/*」及「*/」符號包住,所有在「/*」及「*/」符號之間的文字都是註解文字,語法為: • /* 註解文字一 • 註解文字二 • …………… */
1.4 基本程式指令 • 程式註解 • 以雙斜線及「/*⋯*/」符號做為註解最大的不同,在於雙斜線註解文字只能使用於單列文字,不能跨列,但其使用較為簡便;「/*⋯*/」符號可以跨列做多列註解,使用時要注意「/*」及「*/」符號必須成對,如果未成對,編譯器會出現錯誤。 • Dev-C++ 文字編輯器也提供程式註解功能,能讓設計者暫時將部分程式列視為註解列而不予執行,對於程式除錯有很大幫助。 • 詳細操作步驟,請同學翻閱課本1-29頁。
1.4 基本程式指令 • 程式註解 • 如果要將已標示為註解的程式列還原,也就是移除這些程式列的註解符號,可進行相同程序的操作,只是執行的功能改為「回復註解前狀態」:選取要註解的程式列,選取的程式列會呈現反白,執行功能表 編輯 / 回復註解前狀態,就會移除這些程式列的註解符號。
1.4 基本程式指令 • 程式除錯 • 沒有人不會犯錯,設計者開發應用程式時,撰寫的程式碼不可能沒有錯誤。 • 當程式碼發生錯誤要視為正常現象,如何提升程式的除錯能力才是初學者最重要的事。
1.4 基本程式指令 • 程式除錯 • 程式中最常發生的是語法錯誤,例如初學者常忘記在程式敘述的尾端加上分號「;」,於是在編譯時產生下列錯誤訊息: 第 5 列程式忘記在尾端加上分號,編譯時會在下方自動開啟 除錯/ 監看 視窗,顯示第 6 列程式之前少了分號。
1.4 基本程式指令 • 程式除錯 • 較難找出的錯誤是程式通過編譯,但執行的結果卻與預期不符,此時可使用Dev-C++ 提供的除錯功能,可以設定程式執行的中斷點、逐步執行程式、觀察各種變數值等,以找出程式錯誤所在。要使用 Dev-C++ 的除錯功能。 • 詳細操作步驟,請同學翻閱課本1-31至1-32頁
本章結束 Q&A討論時間