官术网_书友最值得收藏!

第1章 步入C語言的世界——Hello C

C語言是國際上廣泛流行的計算機高級程序設計語言,從誕生就注定了會受到世界的關注。它是世界上最受歡迎的語言之一,具有強大的功能,許多軟件都是用C語言編寫的。學習好C語言,可以為以后的程序開發打下堅實的基礎?,F在就跟筆者一起步入C語言的世界吧。

本章要點(已掌握的在方框中打鉤)

□C語言的開發環境

□開始C編程——我的第一個C程序

1.1 C語言的開發環境

學習一門編程語言之前,首先要做的就是熟悉這門語言所使用的開發軟件——開發環境。下面介紹一下C語言常用的開發環境。

1.1.1 C語言常用的開發環境

C語言常用的集成開發環境(Integrated Development Environment,IDE)和編譯器有Microsoft Visual C++6.0、Microsoft Visual C++.NET、Turbo C、Borland C++Builder、Code::Blocks、Dev-C++、KDevelop、Eclipse CDT等。IDE主要是在程序員開發時提供各種軟件應用組件,而受程序員歡迎的IDE都有一個共同點,那就是用戶界面非常有吸引力。

01 Microsoft Visual C++

Microsoft Visual C++不僅是一個C++編譯器,而且是一個基于Windows操作系統的功能強大的可視化集成開發環境。自1993年微軟公司推出Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業程序員進行軟件開發的重要工具。雖然微軟公司推出了Visual C++.NET(Visual C++7.0),但它的應用有很大的局限性,只適用于Windows 2000、Windows XP和Windows NT 4.0。所以實際中,更多的是以Microsoft Visual C++6.0為平臺。Microsoft Visual C++6.0由許多組件組成,包括編輯器、調試器以及程序向導AppWizard、類向導Class Wizard等。這些組件通過一個名為Developer Studio的組件集成為和諧的開發環境。Microsoft Visual C++較受推崇的是Microsoft Visual C++6.0,簡稱VC 6.0。

02 Microsoft Visual C++.NET

Microsoft Visual Studio.NET是Microsoft Visual Studio 6.0的后續版本,是一套完整的開發工具集。它在.NET平臺下調用Framework的類庫,功能強大,其中包含了Visual C++開發組件。

03 Turbo C

Turbo C是美國Borland公司的產品,是一個基于DOS平臺的應用程序,也可以在Windows環境下運行。目前比較新的版本為Turbo C 3.0,常用的版本是Turbo C 2.0。Turbo C 2.0是C語言集成環境,它集編輯、編譯、連接和運行功能于一身,使得C程序的編輯、調試和測試非常簡捷,編譯和連接速度極快,使用也很方便。它提供了兩種編譯方式,一種是命令行方式,另一種是集成開發環境。

04 Borland C++Builder

Borland C++Builder是Borland公司繼Delphi之后推出的一款高性能集成開發工具,具有可視化的開發環境,是基于C++語言的快速應用程序開發工具。C++Builder充分利用已經發展成熟的Delphi的可視化組件庫,吸收Borland C++優秀編譯器的諸多優點,結合先進的基于組件的程序設計技術,已成為一個非常成熟的可視化應用程序開發工具。C++Builder可以快速、高效地開發出基于Windows環境的各類程序,尤其在數據庫應用和網絡應用方面,更是一個十分理想的軟件開發平臺。

05 Code::Blocks

Code::Blocks是一個開放源碼的全功能的跨平臺C/C++集成開發環境,在Linux、macOS、Windows操作系統上都可以運行,且自身體積小,安裝非常方便。它擁有簡潔的用戶界面,高效的編譯器和調試器等,而且不需要購買許可證,上手難度不高,是一款輕量卻又不失強大功能的好軟件,支持GCC和g++(Linux操作系統下)。Code::Blocks由純粹的C++語言開發完成,它使用了著名的圖形界面庫wxWidgets(2.6.2 unicode版)。

不同版本的C語言編譯系統,所實現的語言功能和語法規則又略有差別,因此讀者應了解所用的C語言編譯系統的特點,這可以參閱有關手冊。

本書主要是以Code::Blocks 16.01為程序開發環境,因為它功能完善,操作簡便,界面友好,適合初學者開發使用。它除了能夠完成最基本的編輯、編譯、調試的功能,還具備以下特點。

(1)開源。

開源全稱為開放源代碼。開源軟件的本質是開放,也就是任何人都可以得到軟件的源代碼,并在版權限制范圍內使用。

(2)跨平臺、跨編譯器。

Windows、Linux、mac OS操作系統都可以使用,即使將來更換了設備也無須擔憂。支持多款編譯器,只要簡單配置就可以輕松切換GCC/g++、Visual C++、Borland C++、Intel C++等20多款編譯器。

(3)插件式框架。

初學者可能無法理解框架的概念,簡單說就是方便添加各種小功能。

(4)采用C++寫成。

運行環境非常簡單,不用安裝其他龐雜的架構。

(5)升級頻繁與維護良好。

幾乎每個月都有升級包,還有熱心網友提供的各種功能包。

(6)內嵌可視化GUI設計。

IDE的圖形界面,采用了wxWidgets。

1.1.2 Code::Blocks開發環境

Code::Blocks 16.01下載完成后會得到一個安裝包(.exe可執行文件),雙擊該文件即可開始安裝。具體安裝過程如下。

雙擊.exe文件,直接進入安裝程序,如下圖(左)所示,單擊【Next】按鈕。

同意Code::Blocks的各項條款,如下圖(右)所示,單擊【I Agree】按鈕。

選擇要安裝的組件,默認選擇Full全部安裝,如下圖(左)所示,然后單擊【Next】按鈕。

選擇安裝路徑時,默認位置即可,也可以安裝在任意位置,但是路徑中不要包含中文,如下圖(右)所示,然后單擊【Install】按鈕。

等待安裝。安裝完成后,如下圖(左)所示,單擊【Finish】按鈕。

打開【開始】→【所有程序】,會發現多了一個名為“CodeBlocks”的文件夾,如下圖(右)所示,證明Code::Blocks已安裝成功,同時在桌面上也會產生CodeBlocks的快捷方式。

啟動Code::Blocks 16.01,窗口如下圖所示。

1.1.3 手機編譯器

對于沒有計算機,或者計算機不在身邊的讀者,也可以使用手機隨時學習C語言,只需要在手機上安裝C語言的編譯器。不過由于手機屏幕限制,虛擬鍵盤使用非常不便,因為要經常在英文、數字、符號之間切換,代碼編寫效率較低。

目前,比較常用的手機編譯器有C4droid、C語言編譯器、Quoda、AIDE、CppDroid、Mobile C等。這些軟件需要到手機的“應用商店”或者官網中下載安裝,有些是需要付費的。

本書主要介紹在安卓系統中使用的一個用戶友好、功能強大的C/C++IDE和編譯器C4droid。C4droid默認使用TCC(Tiny C Compiler)為編譯器,可以選擇安裝GCC插件和SDL插件庫(不需要ROOT)。選用GCC后,可以用SDL(簡單直控媒體層庫,需安裝SDL plugin for C4droid)和QT(Nokia官方開發庫,需安裝SDL plugin for C4droid);也可以開發Native Android App(需安裝SDL plugin for C4droid),就像Google NDK一樣。GCC插件的4.7.2版本提供了示例程序,包含SDL、Android Native、QT和命令行測試程序源碼。

C4droid支持離線C語言編譯器、源代碼編輯器、語法高亮、標簽、自動補全代碼、代碼格式化、文件關聯和撤銷/重做、調試器、可定制的圖形用戶界面等常用功能,編譯時間隨手機CPU主頻而定,主頻越高編譯越快,支持將程序打包成.apk安裝包。

下面介紹筆者安裝C4droid的具體過程。

首先在計算機上搜索“C4droid安卓漢化版”,通過手機掃碼或者用連接線的方式把手機連接到計算機上,直接把軟件下載到手機上并進行安裝,如下圖(左)所示。

安裝成功后,在手機桌面上會出現C4droid的圖標,如下圖(右)所示。

在安裝過程中出現“Do you want to install GCC?”提示,這時選擇【Yes】。當出現“You need to install GCC for C4droid from Google Play,proceed?”提示時,選擇【OK】。

GCC和SDL也可以在軟件安裝完成后單獨安裝。單擊手機桌面上的C4droid圖標,啟動C4droid,單擊右上角下拉按鈕,選擇【Preferences】選項,找到【Install GCC】和【Install SDL】就可以進行安裝了,如下圖所示。

當然讀者也可以直接在手機的“應用商店”中搜索“C4droid”,可以找到很多類似的應用程序。

1.2 開始C編程——我的第一個C程序

C語言集成開發環境比較多,沒有必要對每一種開發環境都熟練地掌握,只需要精通一種開發環境即可。下面在開發環境中學習編寫第一個C程序。

1.2.1 程序編寫及運行流程

匯編程序要轉換成可執行文件(可以理解為能夠“單獨運行”的文件,一般在Windows操作系統中常見的可執行文件為.exe、.sys、.com文件等),需要通過匯編器來實現。那么,對于用C語言編寫的代碼,是如何把它轉換為可執行文件的呢?

要轉換C語言源代碼為可執行文件,需要借助的工具是編譯器(Compiler),轉換的過程叫作編譯。經過編譯生成目標程序,目標文件是機器代碼,是不能夠直接執行的,它需要有其他文件或者其他函數庫輔助,才能生成最終的可執行文件,這個過程稱之為連接,使用的工具叫作連接器。

C程序的編寫和運行流程如下圖所示。

我們把編寫的代碼稱為源文件或者源代碼,輸入、修改源文件的過程稱為編輯。在這個過程中還要對源代碼進行布局排版,使之有層次、方便閱讀,并輔以一些說明的文字,幫助我們理解代碼的含義,這些文字稱為注釋。它們僅起到說明的作用,不是功能代碼,不會被執行。編輯的源代碼經過保存,生成擴展名為“.c”的文件。這些源文件并不能夠直接運行,而需要經過編譯,把源文件轉換為以“.obj”為擴展名的目標文件。此時目標文件再經過一個連接的環節,最終生成以“.exe”為擴展名的可執行文件。計算機系統能夠運行的是可執行文件。

1.2.2 在Code::Blocks中開發C程序

啟動Code::Blocks 16.01并新建程序。

范例1-1 使用Code::Blocks 16.01創建C程序并運行。

第1步:創建.c文件,如下圖(左)所示,在Code::Blocks窗口中單擊【Create a new project】。

當然也可以用菜單或者功能按鈕區域里的命令按鈕來創建新文件。在【New from template】對話框中選擇【Files】→【C/C++source】,如下圖(右)所示,單擊【Go】按鈕。

在【C/C++source】對話框中選擇【C】,如下圖(左)所示,單擊【Next】按鈕。

在“Filename with full path:”下的文本框中輸入完整的文件名“1-1.c”,注意不要出現全角字符,然后單擊文本框右邊的【...】路徑選擇向導按鈕,如下圖(右)所示,選擇文件保存路徑后,單擊【Finish】按鈕。

在主窗口的工作區中可以看到多了一個名字為“1-1.c”的文件選項卡[見下圖(左)],現在可以在這里面輸入以下代碼(代碼1-1.txt)。


#include <stdio.h>               /*包含標準輸入輸出頭文件*/
int main (void)                  /*主函數*/
{                                /*函數體開始*/
     printf(“Hello C!\n”);       /*在屏幕上輸出Hello C!*/
     return 0;                   /*主函數結束后返回值0*/
}                                /*函數體結束*/

第2步:運行程序。

單擊功能按鈕區中的【Build and Run】按鈕,程序直接完成編譯、連接和運行工作,如下圖(右)所示。

在程序執行窗口中輸出程序的結果,如下圖所示。

提示

如果程序在編譯時有語法錯誤,則不出現運行結果,會在代碼編輯工作區下面的“Logs & others”窗口中顯示“第×行……(錯誤信息)”,這時可以按照這些提示信息修改代碼,重新編譯、運行,直到沒有語法錯誤,并且能夠在程序執行窗口中輸出程序的結果為止。對應快捷鍵:編譯【Ctrl+F9】,運行【Ctrl+F10】。

1.2.3 在手機編譯器中開發C程序

單擊手機桌面上的C4droid圖標,啟動C4droid。

第1步:在提示行中直接輸入代碼,如下圖(左)所示。

第2步:運行程序。

單擊窗口底部功能按鈕區中的【RUN】,程序直接完成編譯、連接和運行工作。如果代碼有語法錯誤,窗口中會出現錯誤提示,如下圖(右)所示,提示錯誤出現在第一行中,點擊屏幕,回到編輯窗口中修改所有錯誤。

重新單擊【RUN】,直到在程序執行窗口中輸出正確的結果,如下圖(左)所示。此時點擊屏幕回到編輯窗口中。

第3步:保存程序。

窗口底部功能按鈕區中的【OPEN】【NEW】【SAVE】【COMPILE】可以打開文件、創建新文件、保存文件、編譯文件。如點擊【SAVE】,在提示窗口中輸入完整的文件名即可保存,如下圖(右)所示。

1.3 高手點撥

學習任何一種編程語言,實踐練習都是十分重要的,不要只看不練、眼高手低。要活學活用,看完課本中的范例之后,自己要在開發環境中獨立操作一遍,不能認為簡單而不親手去操作。在編寫C語言程序時,一定要注意養成好的書寫習慣,好的書寫習慣是一名優秀程序員具備的基本修養。一段程序可以反映一個人的編程水平,所以,針對C語言編程的書寫,有以下4點建議。

(1)在每個程序文件最前面注釋編寫日期、程序的功能。

(2)代碼格式要清晰,避免錯亂;每段代碼后面要注釋這段代碼的功能,便于以后的修改和查看。

(3)程序的模塊化,也就是說對于一些功能復雜的程序,除了main()函數之外,還要定義其他函數,以免main()函數中的程序煩瑣,也便于其他函數調用某個功能模塊。例如,一個程序既要對整數排序,又要實現比較大小,那么可以將排序的程序放在函數A中,將比較大小的程序放在函數B中,然后在main()函數中調用這兩個函數就可以了。如果其他函數中的整數也要排序,只需調用排序函數A就可以了,避免反復書寫同樣功能的程序段。

(4)函數命名規范化,例如,某段程序專門實現排序,可以將這段程序放到一個自定義函數中,將這個函數命名為“order”。因為order有排序的意思,這樣命名可以一目了然,閱讀程序的人通過函數名就可以知道該函數實現什么樣的功能,便于理解。

1.4 實戰練習

在Code::Blocks中編寫C程序,在程序執行窗口中輸出如下一行內容:“你好,世界!”

主站蜘蛛池模板: 铜川市| 新疆| 旬邑县| 鄢陵县| 奇台县| 呼伦贝尔市| 乌拉特后旗| 潮州市| 隆化县| 屏山县| 临泽县| 常山县| 兖州市| 靖西县| 普兰县| 县级市| 凤冈县| 安化县| 勃利县| 社会| 长武县| 罗山县| 莱阳市| 历史| 团风县| 普兰店市| 明溪县| 新巴尔虎左旗| 建德市| 广东省| 会宁县| 乐陵市| 喀什市| 兴国县| 平安县| 杭州市| 枣庄市| 道孚县| 新绛县| 宁乡县| 会东县|