◎隨書附贈資料檔光碟
※了解程式邏輯,帶你解決日常生活中的問題!
※理論與程式案例互相搭配,學習記憶更深刻!
※過關斬將!附有大學程式設計先修檢測(APCS)試題解析。
擁有一個好的工具,處理問題會更方便又快速。程式設計是一種利用電腦程式語言解決問題的工具,只要將所要處理的問題,依據程式的語法描述出問題的流程,電腦便會根據我們所設定的程序,完成目標。
本書是一本適合高中職生閱讀的C語言自學書,從說明何謂程式開始,逐步介紹C語言的語法,搭配程式範例,實際操作、實際撰寫,精進對程式語言的熟練度及興趣。每個章節末附有大學程式設計先修檢測(APCS)試題解析,提供給未來想申請大學資訊相關科系的高中職生一個明確的學習方向。
章節試閱
一般來說,不斷重複的工作,若以人工處理,則會讓人煩心且沒有效率。因此,尋求方便又快速的方法,是大眾夢寐以求的。而運用程式設計所開發的工具,正是符合大眾需求的方法之一。
程式設計,運用在生活中的範例不計其數。例:提供民眾叫車服務、公車到站查詢、訂票服務等智慧型手機 App 應用程式;監控記錄人體心跳、睡眠品質等物聯網智慧手環App應用程式;輔助駕駛人執行自動駕駛、煞車、停車等人工智慧 AI 應用程式。因此,學習程式設計,是現代人必修的一門顯學。
人類藉由相同的語言,進行相互溝通。人類的想法希望能被電腦解讀,也是同樣的道理。像這類的語言,稱之為電腦程式語言(Computer Programming Language)。電腦程式語言,分成下列三大類:
1.編譯式程式語言:若以某種程式語言所撰寫的原始程式碼 (Source Code),須經過編譯器 (Compiler) 正確編譯成機器碼 (Machine Code)後才能執行,則稱這種程式語言為「編譯式程式語言」。例:COBOL、C、C++ 等。若原始程式碼編譯無誤,就可執行它且下次無須重新編譯,否則必須修改原始程式碼且重新編譯。編譯式程式語言,從原始程式碼變成可執行檔需經編譯 (Compile) 及連結 (Link) 兩個過程,分別由編譯程式 (Compiler) 及連結程式 (Linker) 負責。編譯程式負責檢查程式的語法是否正確,連結程式則負責檢查程式使用的函式是否有定義。若原始程式碼從編譯到連結都正確,最後會產生一個與原始程式檔同名的可執行檔 (.exe)。
2.直譯式程式語言:若以某種程式語言所撰寫的原始程式碼,須經過直譯器 (Interpreter) 將指令一邊翻譯成機器碼一邊執行,直到產生錯誤或執行結束才停止,則稱這種程式語言為「直譯式程式語言」。例:BASIC、HTML 等。利用直譯式程式語言所撰寫的原始程式碼,每次執行都要重新經過直譯器翻譯成機器碼,執行效率較差。
3. 編譯式兼具直譯式程式語言:若以某種程式語言所撰寫的原始程式碼,必須經過編譯器將它編譯成中間語言 (Intermediate Language)後,再經過直譯器產生原生碼 (Native Code),才能執行,則稱這種程式語言為「編譯式兼具直譯式程式語言」。例:Visual C#、Visual Basic 等程式語言。
程式從撰寫階段到執行階段,常遇到的問題有三類:編譯錯誤(compile error),連結錯誤 (link error) 及執行錯誤 (run-time error)。撰寫程式時。若違反程式語言的語法規則,則會產生編譯錯誤或連結錯誤。這兩類的錯誤,稱之為「語法錯誤 (Syntax error)」。例:在 C 語言中,大多數的指令敘述是以「;」(分號)做為該指令敘述的結束符號。若違反此規則,則編譯時會出現錯誤訊息「error: expected ''」,表示缺少「;」。程式執行時,若產生意外的輸出或與預期不符的結果,則暗示程式的邏輯設計不周詳。像這類的執行錯誤,稱之為「語意錯誤 (Semantic error)」或「邏輯錯誤 (Logic error)」。例:「a = b / c;」,在語法上是正確的。但執行時,若 c 為 0,則會出現錯誤訊息「Process returned -1073741676(0xC0000094)」,表示「除以 0」。
1-1 何謂程式設計
使用任何一種電腦程式語言所撰寫的程式指令集,稱之為電腦程式。而撰寫程式的過程,稱之為程式設計。以程式設計方式解決問題的程序如下:
1.分析問題。
2.構思問題的處理步驟,並繪出流程圖。
3.選擇熟悉的電腦程式語言,並依據流程圖撰寫程式。
4.程式執行結果,若符合問題的需求,則結束;否則須重新檢視程序1~3。
一般來說,不斷重複的工作,若以人工處理,則會讓人煩心且沒有效率。因此,尋求方便又快速的方法,是大眾夢寐以求的。而運用程式設計所開發的工具,正是符合大眾需求的方法之一。
程式設計,運用在生活中的範例不計其數。例:提供民眾叫車服務、公車到站查詢、訂票服務等智慧型手機 App 應用程式;監控記錄人體心跳、睡眠品質等物聯網智慧手環App應用程式;輔助駕駛人執行自動駕駛、煞車、停車等人工智慧 AI 應用程式。因此,學習程式設計,是現代人必修的一門顯學。
人類藉由相同的語言,進行相互溝通。人類的想法希望能被電腦解讀,也...
作者序
一般來說,以人工方式處理日常生活事務,只要遵循程序就能達成目標。但以下類型案例告訴我們,以人工方式來處理,不但效率低浪費時間,且不一定可以在既定時間內完成。
1. 不斷重複的問題。例:早期人們要存提款,都必須請銀行櫃檯人員辦理。在人多的時候,等候的時間就拉長。現在有了可供存提款的自動櫃員機 (ATM),存提款變成一件輕輕鬆鬆的事了。
2. 大量計算的問題。例:設 f (x) = x^100 + x^99 + ⋯ + x + 1,求f(2)。若用人工方式計算,則無法在短時間內完成。有了計算機以後,很快就能得知結果。
3. 大海撈針的問題。例:從500萬輛車子中,搜尋車牌為888-8888的汽車。若用肉眼的方式去搜尋,則曠日廢時。現在有了車輛辨識系統,很快就能發現要搜尋的車輛。
一個好的工具,能使問題處理更加方便及快速。以上案例都可利用電腦程式設計求解出來,由此可見程式設計與生活的關聯性。程式設計是一種利用電腦程式語言解決問題的工具,只要將所要處理的問題,依據程式語言的語法描述出問題之流程,電腦便會根據我們所設定之程序,完成所要的目標。
多數的程式設計初學者,因學習成效不彰,對程式設計課程興趣缺缺,進而產生排斥。導致學習效果不佳的主要原因,有下列三點:
1. 上機練習時間不夠,又加上不熟悉電腦程式語言的語法撰寫,導致花費太多時間在偵錯上,進而對學習程式設計缺乏信心。
2. 對問題的處理作業流程(或規則)不了解,或畫不出問題的流程圖。
3. 不知如何將程式設計應用在日常生活所遇到的問題上。
因此,初學者在學習程式設計時,除了要不斷上機練習,熟悉電腦程式語言的語法外,還必須了解問題的處理作業流程,才能使學習達到事半功倍的效果。
本書所撰寫之文件,若有謬錯或疏漏之處,尚祈先進及讀者們指正。謝謝!
2020/10/8 戌時
邏輯林 於大學池
一般來說,以人工方式處理日常生活事務,只要遵循程序就能達成目標。但以下類型案例告訴我們,以人工方式來處理,不但效率低浪費時間,且不一定可以在既定時間內完成。
1. 不斷重複的問題。例:早期人們要存提款,都必須請銀行櫃檯人員辦理。在人多的時候,等候的時間就拉長。現在有了可供存提款的自動櫃員機 (ATM),存提款變成一件輕輕鬆鬆的事了。
2. 大量計算的問題。例:設 f (x) = x^100 + x^99 + ⋯ + x + 1,求f(2)。若用人工方式計算,則無法在短時間內完成。有了計算機以後,很快就能得知結果。
3. 大海撈針的問題。例:從500萬...
目錄
自序
Chapter 1 電腦程式語言介紹
1-1 何謂程式設計
1-2 C語言簡介
1-3 C語言之架構
1-4 良好的程式撰寫習慣
1-5 程式撰寫常疏忽的問題
1-6 Code::Blocks軟體簡介
1-7 提升讀者對程式設計之興趣
1-8 隨書光碟之使用說明
1-9 大學程式設計先修檢測 (Advanced Placement Computer Science, APCS)
大學程式設計先修檢測(APCS)試題解析
Chapter 2 資料型態
2-1 資料型態
2-2 識別字
2-3 常數與變數宣告
2-4 資料處理
2-5 運算子的優先順序
2-6 資料型態轉換
大學程式設計先修檢測(APCS)試題解析
Chapter 3 資料輸入與資料輸出
3-1 資料輸出
3-2 資料輸入
3-3 浮點數之準確度
大學程式設計先修檢測(APCS)試題解析
Chapter 4 流程控制
4-1 程式流程控制
4-2 選擇結構
4-3 巢狀選擇結構
大學程式設計先修檢測(APCS)試題解析
Chapter 5 迴路結構
5-1 迴路結構
5-2 break與continue敘述
5-3 其他迴路應用範例
大學程式設計先修檢測(APCS)試題解析
Chapter 6 內建函式
6-1 常用的C語言內建函式
6-2 數學函式
6-3 字元函式
Chapter 7 陣列
7-1 陣列變數宣告
7-2 排序與搜尋
7-3 二維陣列變數
7-4 字串函式
7-5 隨機亂數
大學程式設計先修檢測(APCS)試題解析
Chapter 8 自訂函式
8-1 函式定義
8-2 函式宣告
8-3 函式呼叫
8-4 參數型態為陣列的函式
8-5 益智遊戲範例
大學程式設計先修檢測(APCS)試題解析
Chapter 9 遞迴函式
9-1 遞迴
9-2 合併排序法(Merge Sort)
9-3 益智遊戲範例
大學程式設計先修檢測(APCS)試題解析
Chapter 10 指標
10-1 一重指標變數
10-2 一重指標變數與一維陣列元素
10-3 一重指標變數與二維陣列元素
10-4 雙重指標變數
大學程式設計先修檢測(APCS)試題解析
Chapter 11 自訂資料型態
11-1 結構(Structure)
11-2 巢狀結構
11-3 串列(List)
11-4 堆疊(Stack)及佇列(Queue)
11-5 樹(Tree)
大學程式設計先修檢測(APCS)試題解析
自序
Chapter 1 電腦程式語言介紹
1-1 何謂程式設計
1-2 C語言簡介
1-3 C語言之架構
1-4 良好的程式撰寫習慣
1-5 程式撰寫常疏忽的問題
1-6 Code::Blocks軟體簡介
1-7 提升讀者對程式設計之興趣
1-8 隨書光碟之使用說明
1-9 大學程式設計先修檢測 (Advanced Placement Computer Science, APCS)
大學程式設計先修檢測(APCS)試題解析
Chapter 2 資料型態
2-1 資料型態
2-2 識別字
2-3 常數與變數宣告
2-4 資料處理
2-5 運算子的優先順序
2-6 資料型態轉換
大學程式設計先修檢測(APCS)試題解析
Cha...