狠狠撸

狠狠撸Share a Scribd company logo
颁语言初体验
? C語言發展
? 語法與語意
? 執行時期錯誤
? 程式編輯器
? 編譯器與連結器
? 使用Dev C++ IDE
Revised on July 21, 2021
Make
each
day
count
? C語言是 Dennis Ritchie 博士在 1972 年以 B 語言為基礎,在貝爾實驗
室設計、開發出來
? 弱型別、具有高效能、功能豐富、表達力強和較高可移植性等特點
? 1989年,C 語言被美國國家標準協會 (ANSI) 標準化,編號為 ANSI
X3.159-1989,這個版本又稱為 C89 (也稱為ANSI C)
? 1990年,國際標準化組織 (ISO) 成立 ISO/IEC JTC1/SC22/WG14 工作
群組,來規定國際標準的 C 語言,通過對 ANSI 標準的少量修改,最
終製定了 ISO 9899:1990,又稱為 C90
? 1999年ISO 9899:1999的發表。它通常被稱為 C99。C99 被 ANSI 於
2000年3月採用
? 目前最新版本為 ISO/IEC 9899:2018,簡稱 C18
C語言 1/2
2
Make
each
day
count
? TIOBE 2021程式語言排行
C語言 2/2
3 圖片來源 https://www.tiobe.com/tiobe-index/
Make
each
day
count
? 語法 (syntax) 是說明程式語言中,怎樣的符號及文字的組合是正確的
,也就是規範你如何正確撰寫每?行指令敘述 (statement)
#include <stdio.h>
int main(int argc, char* argv[]) {
printf("Hello, C language!n");
return 0;
}
? 在輸入 C 程式時,空格可使用空白鍵或 Tab 鍵
? 每?行 C 程式碼之後使用「;」分號結尾
? 每?行程式碼使用 Enter 換行鍵
? C 程式的括號有 { }、[ ]、( ) 和 < >,?定是成對的
? 不可使用中文標點符號
? main() 是 C 語言的主程式(程式的進入點),?個 C 程式專案都必須有?個
main 函數
語法與語意 1/2
4
Make
each
day
count
? 語意 (semantics) 指每?行指令敘述所表達的意思,也就是這?行指令
執行後會產生什麼結果
? 指令敘述語法正確並不表?這?行指令的功能符合目的需求,這種情
形稱為語意錯誤
a = a;
score = final * 0.3 + midterm * 0.3 + other * 0.3;
a = 5 / 2;
語法與語意 2/2
5
Make
each
day
count
? 還有?種錯誤是發生在程式執行階段,通常是程式設計者的邏輯不周
詳,或輸入資料不符合規定,或執行環境出現狀況所造成的
? 除數等於零 (程式邏輯不周詳所造成的)
? 陣列的索引值超出宣告的範圍 (程式邏輯不周詳所造成的)
? 資料輸入的型態違反規定 (輸入資料不符合規定所造成的)
? 因網路不通,導致無法讀取網路遠端的資料庫 (執行環境出現狀況所造成
的)
? 硬碟空間不足,導致資料無法存檔 (執行環境出現狀況所造成的)
執行時期錯誤
6
Make
each
day
count
? 電腦程式並不是要寫出給人們閱讀的文章,而是使用程式語言寫出給
電腦執行的程式碼,並不需要華麗的字型字體變化及排版
? 電腦程式只是?種純文字檔,只要使用純文字編輯器 (如記事本) 就可
以編寫
撰寫程式檔 1/2
7
Make
each
day
count
? 檔案/另存新檔 (A)…
? 檔案名稱: hello.c
? 存檔類型:所有檔案
? 編碼:UTF-8
撰寫程式檔 2/2
8
Make
each
day
count
? 雖然使用純文字編輯器也可撰寫程式碼,但缺乏即時指令查閱或輔助
編輯功能,也無法結合編譯、連結、除錯等相關工具程式,程式開發
作業過程相當繁瑣
? 整合開發環境 (Integrated Development Environment,IDE) 是?種
為特定程式語言量身打造,整合相關工具,輔助程式設計師開發軟體
的工具軟體,可以幫助我們撰寫程式碼、加速學習程式設計
? 目前有許多免費的 IDE,功能及實用性也不輸商業軟體,例如
Embarcadero Dev-C++
C語言IDE 1/2
9
Make
each
day
count
? Dev-C++ 是?套用於開發 C/C++ (C++11) 的整合式開發環境,並以
GPL (General Public License,通用公眾授權) 作為散布許可,使用
MinGW及GDB作為編譯系統與除錯系統
? Orwell Dev-C++ 是 Dev-C++ 衍生版本,由 Orwell 領銜開發,加入了
更新的 GCC 編譯器、並修正了許多錯誤,改善了穩定度
? https://sourceforge.net/projects/orwelldevcpp/
C語言IDE 2/2
10
Make
each
day
count
? C 語言程式碼檔案只是文字檔,需要使用編譯器 (compiler) 來檢查程
式碼,如果語法正確,就會翻譯成機器語言的目的碼檔案
? 程式中會使用?些標準函式庫或別人提供的函式,還需使用連結器
(linker) 將相關程式碼連結在?起成為執行檔
編譯與連結 1/3
11
hello.c
hello.obj
hello.exe
Make
each
day
count
? 開啟命令列視窗
? 編譯 hello.c 產生 hello.o
"c:Program Files (x86)Dev-CppMinGW64bingcc.exe" -c hello.c -o
hello.o -I "c:Program Files (x86)Dev-CppMinGW64include"
? 連結 hello.o 產生hello.exe
"c:Program Files (x86)Dev-CppMinGW64bingcc.exe" hello.o -o
hello.exe -L "c:Program Files (x86)Dev-CppMinGW64lib -static-
libgcc"
? 執行 hello.exe
編譯與連結 2/3
12
Make
each
day
count
編譯與連結 3/3
13
Make
each
day
count
? 選單命令 Tools> Editor Options…
Dev-C++環境設定 1/2
14
? 調整字體大小
Make
each
day
count
? 選單命令 Tools> Environment Options…
Dev-C++環境設定 2/2
15
? 設定操作介面語系
Make
each
day
count
? 選單命令 File> New> Project…
? Basic 頁籤,點選 Empty Project
? 點選 C Project
? 輸入專案名稱:HelloC
使用Dev-C++開發C程式專案 1/10
16
Make
each
day
count
? 指定存檔路徑
? 建立新資料夾 (HelloC)
使用Dev-C++開發C程式專案 2/10
17
Make
each
day
count
? 輸入以下程式碼
#include <stdio.h>
void main(int argc, char** argv[]){
printf("Hello, C language!n");
printf("2021/4/15");
return 0;
}
? 儲存檔案
使用Dev-C++開發C程式專案 3/10
18
Make
each
day
count
? 按Ctrl+S儲存程式檔
使用Dev-C++開發C程式專案 4/10
19
星號表示程式檔異動後尚未儲存
Make
each
day
count
? 按F11編譯、執行
使用Dev-C++開發C程式專案 5/10
20
Make
each
day
count
? 檢視編譯日誌。Errors訊息是錯誤數;Warnings是警告數
使用Dev-C++開發C程式專案 6/10
21
編譯日誌
Make
each
day
count
使用Dev-C++開發C程式專案 7/10
22
Make
each
day
count
使用Dev-C++開發C程式專案 8/10
23
Make
each
day
count
使用Dev-C++開發C程式專案 9/10
24
Make
each
day
count
? 觀察執行結果
使用Dev-C++開發C程式專案 10/10
25
Make
each
day
count
? 專案目錄內容
使用Dev-C++開發C程式專案 8/8
26
Make
each
day
count
開發C程式的基本步驟
27
開始
編輯C程式檔
編譯連結建立執行檔
編譯有誤?
沒有錯誤
執行測試
功能正確?
正確
結束
功能有誤
修正語法錯誤
Make
each
day
count
? 每?款CPU都有自己專屬執行的機械碼,並以組合語言指令集呈現。
Dev C++也允許將C語言編譯成組合語言對照,可解每?指令程式執行
的細部動作
? 選單命令Project> Project Options…,切換到 Compiler/Output 頁籤
,選擇產生組合語言及註解
檢視組合語言 1/2
28
Make
each
day
count
? F9重新編譯
? 檢視main.o
? 測試完成記得回復 Compiler/Output 設定
檢視組合語言 2/2
29
Make
each
day
count
? 熟記指令與關鍵字
? 閱讀錯誤訊息,看不懂就抄下來查單字
? 依據錯誤訊息嘗試除錯,思考為什麼會有這樣的錯誤發生
? 不知道函式用法時,查閱說明文件、上網搜尋
? 觀摩範例,練習寫作
? 把自己當成電腦,跟著程式碼模擬每?行指令的動作
如何學習程式設計
30
Make
each
day
count
? 使用 Dev C++ 建立C程式專案
? 專案名稱:學號_1
? 撰寫程式在 Console 顯? 3 行訊息
? 學系中英文名稱
? 學號
? 中文姓名 (英文姓名)
實作練習
31

More Related Content

颁语言初体验