SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
C語言初體驗
 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

Más contenido relacionado

Similar a C語言初體驗

C#语言与面向对象程序设计
C#语言与面向对象程序设计C#语言与面向对象程序设计
C#语言与面向对象程序设计
WizRay
 
Uc gui中文手册
Uc gui中文手册Uc gui中文手册
Uc gui中文手册
호연 최
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第三天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第三天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第三天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第三天
Gelis Wu
 
Android -汇博
Android -汇博Android -汇博
Android -汇博
dlqingxi
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Gelis Wu
 

Similar a C語言初體驗 (20)

Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
Ch01
Ch01Ch01
Ch01
 
C++
C++C++
C++
 
Android ADK
Android ADKAndroid ADK
Android ADK
 
C#语言与面向对象程序设计
C#语言与面向对象程序设计C#语言与面向对象程序设计
C#语言与面向对象程序设计
 
Uc gui中文手册
Uc gui中文手册Uc gui中文手册
Uc gui中文手册
 
小学期winform.pptx
小学期winform.pptx小学期winform.pptx
小学期winform.pptx
 
Android JNI
Android JNIAndroid JNI
Android JNI
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映
 
Hcsm lect-20120913
Hcsm lect-20120913Hcsm lect-20120913
Hcsm lect-20120913
 
C+
C+C+
C+
 
C#
C#C#
C#
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第三天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第三天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第三天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第三天
 
110922 knoss-vol26-c++运行库
110922 knoss-vol26-c++运行库110922 knoss-vol26-c++运行库
110922 knoss-vol26-c++运行库
 
Java - TA課 - 開發環境
Java - TA課 - 開發環境Java - TA課 - 開發環境
Java - TA課 - 開發環境
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
 
Android -汇博
Android -汇博Android -汇博
Android -汇博
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 

Más de 吳錫修 (ShyiShiou Wu)

Más de 吳錫修 (ShyiShiou Wu) (20)

mbot2.0教學-陀螺儀與三軸加速計應用.pdf
mbot2.0教學-陀螺儀與三軸加速計應用.pdfmbot2.0教學-陀螺儀與三軸加速計應用.pdf
mbot2.0教學-陀螺儀與三軸加速計應用.pdf
 
mbot2.0教學-使用makeblock雲服務.pdf
mbot2.0教學-使用makeblock雲服務.pdfmbot2.0教學-使用makeblock雲服務.pdf
mbot2.0教學-使用makeblock雲服務.pdf
 
mbot2.0教學-局域網路傳輸應用.pdf
mbot2.0教學-局域網路傳輸應用.pdfmbot2.0教學-局域網路傳輸應用.pdf
mbot2.0教學-局域網路傳輸應用.pdf
 
mbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdfmbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdf
 
mbot2.0教學-聲光控制應用.pdf
mbot2.0教學-聲光控制應用.pdfmbot2.0教學-聲光控制應用.pdf
mbot2.0教學-聲光控制應用.pdf
 
mbot2.0教學-光感測器與LED應用.pdf
mbot2.0教學-光感測器與LED應用.pdfmbot2.0教學-光感測器與LED應用.pdf
mbot2.0教學-光感測器與LED應用.pdf
 
mbot2.0教學-超音波感測應用.pdf
mbot2.0教學-超音波感測應用.pdfmbot2.0教學-超音波感測應用.pdf
mbot2.0教學-超音波感測應用.pdf
 
mbot2.0教學-移動控制.pdf
mbot2.0教學-移動控制.pdfmbot2.0教學-移動控制.pdf
mbot2.0教學-移動控制.pdf
 
mbot2.0教學-mblock5開發mBot 2.0應用程式.pdf
mbot2.0教學-mblock5開發mBot 2.0應用程式.pdfmbot2.0教學-mblock5開發mBot 2.0應用程式.pdf
mbot2.0教學-mblock5開發mBot 2.0應用程式.pdf
 
mbot2.0教學-組裝與測試.pdf
mbot2.0教學-組裝與測試.pdfmbot2.0教學-組裝與測試.pdf
mbot2.0教學-組裝與測試.pdf
 
Python元組,字典,集合
Python元組,字典,集合Python元組,字典,集合
Python元組,字典,集合
 
Python函式
Python函式Python函式
Python函式
 
Python串列資料應用
Python串列資料應用Python串列資料應用
Python串列資料應用
 
Python 迴圈作業
Python 迴圈作業Python 迴圈作業
Python 迴圈作業
 
Python分支作業
Python分支作業Python分支作業
Python分支作業
 
Python基本資料運算
Python基本資料運算Python基本資料運算
Python基本資料運算
 
建置Python開發環境
建置Python開發環境建置Python開發環境
建置Python開發環境
 
micro:bit加速度感測應用
micro:bit加速度感測應用micro:bit加速度感測應用
micro:bit加速度感測應用
 
C語言檔案處理
C語言檔案處理C語言檔案處理
C語言檔案處理
 
C語言列舉與聯合
C語言列舉與聯合C語言列舉與聯合
C語言列舉與聯合
 

C語言初體驗