從問(wèn)題到程序:CC++程序設(shè)計(jì)基礎(chǔ) 課件 PtoP-1-入門(mén)_第1頁(yè)
從問(wèn)題到程序:CC++程序設(shè)計(jì)基礎(chǔ) 課件 PtoP-1-入門(mén)_第2頁(yè)
從問(wèn)題到程序:CC++程序設(shè)計(jì)基礎(chǔ) 課件 PtoP-1-入門(mén)_第3頁(yè)
從問(wèn)題到程序:CC++程序設(shè)計(jì)基礎(chǔ) 課件 PtoP-1-入門(mén)_第4頁(yè)
從問(wèn)題到程序:CC++程序設(shè)計(jì)基礎(chǔ) 課件 PtoP-1-入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩83頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1第1章

程序設(shè)計(jì)和C/C++語(yǔ)言高級(jí)語(yǔ)言程序設(shè)計(jì)關(guān)于教學(xué)安排的說(shuō)明《從問(wèn)題到程序——C/C++程序設(shè)計(jì)基礎(chǔ)》一書(shū)充分考慮了作為高校教材的教學(xué)安排:課堂教學(xué)與上機(jī)編程練習(xí)的時(shí)間大約為2:1,而且從第一章開(kāi)始,每一部分的內(nèi)容都安排了合理的上機(jī)編程練習(xí)。這與傳統(tǒng)的“先講理論知識(shí),兩周之后才開(kāi)始上機(jī)練習(xí)”并不相同。本書(shū)第一章的課堂教學(xué)時(shí)間大約為3課時(shí)。比較合適的情況是在4課時(shí)的課堂教學(xué)之后進(jìn)行配套的上機(jī)練習(xí)。如果實(shí)際教學(xué)安排出現(xiàn)

2

課時(shí)的課堂教學(xué)之后就是上機(jī)練習(xí)時(shí)間。那么可以先快速地瀏覽1-1和1-2節(jié),然后就講解1-3和1-4,

再讓學(xué)生進(jìn)行上機(jī)練習(xí)。以后再花時(shí)間講解1-1和1-2。2本頁(yè)隱藏,不播放。僅供備課時(shí)查看3高級(jí)語(yǔ)言程序設(shè)計(jì)一、課程性質(zhì)、目的與任務(wù)

本課程是作為程序設(shè)計(jì)第一言語(yǔ)為非計(jì)算機(jī)專業(yè)開(kāi)設(shè)的計(jì)算機(jī)基礎(chǔ)課程。通過(guò)該課程的學(xué)習(xí)使學(xué)生具備扎實(shí)的面向過(guò)程的程序設(shè)計(jì)的能力,為在以后的學(xué)習(xí)或工作中,能夠使用一種高級(jí)語(yǔ)言編寫(xiě)程序,解決各自專業(yè)領(lǐng)域的計(jì)算機(jī)應(yīng)用問(wèn)題打下一個(gè)良好的基礎(chǔ)。二、教學(xué)目標(biāo)程序設(shè)計(jì)的基本概念與基本方法編程解題的思路與典型方法數(shù)學(xué)模型簡(jiǎn)介算法及算法步驟程序結(jié)構(gòu)與相應(yīng)語(yǔ)句編碼與上機(jī)調(diào)試4三、教學(xué)重點(diǎn)在C/C++語(yǔ)言的環(huán)境下,學(xué)會(huì)如何針對(duì)問(wèn)題進(jìn)行分析,得出數(shù)學(xué)模型,理出算法并編程實(shí)現(xiàn)。強(qiáng)化實(shí)踐:程序設(shè)計(jì)是高強(qiáng)度的腦力勞動(dòng),不是聽(tīng)會(huì)的、也不是看會(huì)的,而是練會(huì)的。這可能是與以往的教學(xué)安排最大的不同之處。重點(diǎn)放在思路、算法、編程構(gòu)思和程序?qū)崿F(xiàn)上。語(yǔ)句只是表達(dá)工具,要求堂上積極思考,盡量當(dāng)堂學(xué)懂,重在訓(xùn)練分析問(wèn)題和解決問(wèn)題的能力。5第1章1.1程序和程序語(yǔ)言1.2C語(yǔ)言和C++語(yǔ)言簡(jiǎn)介1.3C++程序快速入門(mén)1.4集成開(kāi)發(fā)環(huán)境Dev-C++使用簡(jiǎn)介6例1:一個(gè)學(xué)生的日常行為:起床→刷牙洗臉→吃早餐→上課→吃午餐→午休→上課→吃晚餐→晚自習(xí)→洗漱→上床睡覺(jué)。(順序執(zhí)行)例2:操作也可能是在多種情況中的選擇:早餐選擇哪種食品,晚自習(xí)是到教室還是到圖書(shū)館。例3:操作還可能在某個(gè)更大的上下文中的不斷重復(fù):從整個(gè)學(xué)期的角度來(lái)看,學(xué)生就是一天一天地重復(fù)每天的日常行為。1.1程序和程序語(yǔ)言對(duì)“程序”的直觀理解:“程序(program)”一詞來(lái)自生活,通常指完成某些事務(wù)的一種既定方式和過(guò)程。按順序?qū)嵤┻@些步驟,即完成了該項(xiàng)事務(wù)。7“程序”的一些直觀特征:按部就班地進(jìn)行;有開(kāi)始,有結(jié)束;完成某項(xiàng)具體任務(wù);需要用某種記法形式描述(計(jì)算機(jī)程序需要用某種精確定義的形式描述);是在一些基本動(dòng)作的基礎(chǔ)上描述的;不同的描述粒度(細(xì)節(jié)程度);…

…把程序(program)和編寫(xiě)程序(programming)作為關(guān)注的對(duì)象進(jìn)行系統(tǒng)研究,主要是在現(xiàn)代計(jì)算機(jī)領(lǐng)域里。8計(jì)算機(jī)基本原理現(xiàn)在的“通用電子數(shù)字計(jì)算機(jī)”(General-PurposeElectronicDigitalComputer)是用超大規(guī)模集成電路和其他元器件構(gòu)造起來(lái)的一種復(fù)雜電子設(shè)備。一個(gè)完整的計(jì)算機(jī)系統(tǒng)包括硬件系統(tǒng)(Hardware)和軟件系統(tǒng)(Software)兩大部分,依靠硬件和軟件的協(xié)同工作來(lái)完成各種計(jì)算任務(wù)。計(jì)算機(jī)系統(tǒng)中看得見(jiàn)的各種物理上的部件依賴于計(jì)算機(jī)硬件的程序及其相關(guān)數(shù)據(jù)9運(yùn)算器控制器存儲(chǔ)器輸出設(shè)備輸入設(shè)備計(jì)算機(jī)硬件系統(tǒng)采用馮·諾依曼體系結(jié)構(gòu),由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備五個(gè)基本部分組成。它們通過(guò)總線連接。邏輯結(jié)構(gòu):分析輸入的指令,統(tǒng)一控制計(jì)算機(jī)的各個(gè)部件以完成規(guī)定的任務(wù)。執(zhí)行各種算術(shù)運(yùn)算和邏輯運(yùn)算計(jì)算機(jī)的記憶裝置,分為內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器10中央處理單元(CPU)運(yùn)算器控制器存儲(chǔ)器輸出設(shè)備輸入設(shè)備輸入設(shè)備鍵盤(pán)、鼠標(biāo)等、光電輸入內(nèi)部存儲(chǔ)器外部存儲(chǔ)器計(jì)算機(jī)物理結(jié)構(gòu):主板主機(jī)輸出設(shè)備(顯示器、打印機(jī))當(dāng)需要計(jì)算機(jī)解決某個(gè)問(wèn)題,就必須先把解決這個(gè)問(wèn)題的方法分解成一系列計(jì)算機(jī)所能完成的簡(jiǎn)單操作,并以指令(對(duì)計(jì)算機(jī)進(jìn)行程序控制的最小單位)的形式通知計(jì)算機(jī)。這些完成特定功能的指令序列,就稱為程序(program)。11一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令。計(jì)算機(jī)能夠自動(dòng)地完成各種數(shù)值運(yùn)算和復(fù)雜的信息處理過(guò)程的基礎(chǔ)是兩個(gè)原理:1、存儲(chǔ)程序(把編寫(xiě)好的程序存儲(chǔ)在計(jì)算機(jī)上)2、程序控制(用程序來(lái)控制計(jì)算機(jī)的運(yùn)行)因此,程序是人與計(jì)算機(jī)交流信息的最基本方式。人通過(guò)程序指揮計(jì)算機(jī)的活動(dòng)。12計(jì)算機(jī)的基本工作原理簡(jiǎn)要描述為:程序和被處理的數(shù)據(jù)由輸入設(shè)備或外存裝入內(nèi)存;CPU在控制器控制下從內(nèi)存中取出程序的指令,根據(jù)需要到指定地址取出所需數(shù)據(jù),運(yùn)算器執(zhí)行指令要求的操作;運(yùn)算結(jié)果存入內(nèi)存,根據(jù)需要而通過(guò)輸出設(shè)備輸出。整個(gè)過(guò)程都在控制器的控制下進(jìn)行。運(yùn)算器控制器存儲(chǔ)器輸出設(shè)備輸入設(shè)備13系統(tǒng)軟件:計(jì)算機(jī)系統(tǒng)中供給用戶使用的操作系統(tǒng)環(huán)境和控制計(jì)算機(jī)系統(tǒng)按照操作系統(tǒng)要求運(yùn)行的軟件。操作系統(tǒng)(Windows,Linux,…)語(yǔ)言處理程序診斷程序數(shù)據(jù)庫(kù)系統(tǒng)網(wǎng)絡(luò)管理軟件應(yīng)用軟件:計(jì)算機(jī)系統(tǒng)支持下的所有面對(duì)實(shí)際問(wèn)題和具體用戶群的應(yīng)用程序。數(shù)據(jù)處理軟件(如Matlab)文字處理軟件(WPS、WORD)表格處理軟件(如EXCEL)計(jì)算機(jī)輔助工程應(yīng)用實(shí)時(shí)處理軟件行業(yè)軟件軟件:依賴于計(jì)算機(jī)硬件的程序及其相關(guān)數(shù)據(jù)。14

計(jì)算機(jī)系統(tǒng)組成圖示

cpu存儲(chǔ)器輸入輸出

接口及設(shè)備裸機(jī)操作系統(tǒng)程序設(shè)計(jì)語(yǔ)言語(yǔ)言處理程序支持軟件應(yīng)用軟件軟件系統(tǒng)15編制計(jì)算機(jī)程序的工作稱為程序設(shè)計(jì)或編程(Programming),其產(chǎn)品就是程序(Program)。由于計(jì)算機(jī)的本質(zhì)特征,從它誕生之初就有了程序設(shè)計(jì)工作。要用計(jì)算機(jī)處理問(wèn)題,寫(xiě)程序時(shí)就必須精確描述所需的全部細(xì)節(jié),不能有一點(diǎn)含糊之處。編寫(xiě)程序需要使用程序設(shè)計(jì)語(yǔ)言或編程語(yǔ)言(ProgrammingLanguage)。這種語(yǔ)言的特點(diǎn)是計(jì)算機(jī)可以處理,可以按它的指揮完成工作。程序設(shè)計(jì)語(yǔ)言是人與計(jì)算機(jī)交流的最基本最重要的媒介。16硬件層面上的程序是機(jī)器指令的序列。程序執(zhí)行:將程序存入內(nèi)存,通知CPU第一條指令的地址。命令它“開(kāi)始”!一般情況下,CPU執(zhí)行完一條指令后,自動(dòng)取出下一條指令,并如此繼續(xù)下去。轉(zhuǎn)跳指令明確指定下一條指令的位置,人可以基于轉(zhuǎn)跳指令描述復(fù)雜的執(zhí)行流程。人命令計(jì)算機(jī)去執(zhí)行一個(gè)程序,計(jì)算機(jī)就會(huì)一絲不茍地按這個(gè)程序的內(nèi)容,一條一條指令執(zhí)行,直至程序結(jié)束(指令執(zhí)行到了最后,或者遇到明確的停止指令)。17機(jī)器語(yǔ)言是機(jī)器指令形成的語(yǔ)言,形式為二進(jìn)制編碼,機(jī)器可直接執(zhí)行。示例:程序設(shè)計(jì)語(yǔ)言的發(fā)展分為三個(gè)階段:機(jī)器語(yǔ)言

匯編語(yǔ)言

高級(jí)語(yǔ)言難寫(xiě)難讀,人使用不便,程序開(kāi)發(fā)效率極低。00000001000000001000 數(shù)據(jù)裝入寄存器000000001000100001010 數(shù)據(jù)裝入寄存器100000101000000000001 寄存器0與1的數(shù)據(jù)相乘00000001000100001100 數(shù)據(jù)裝入寄存器100000100000000000001 寄存器0與1的數(shù)據(jù)相加00000010000000001110 保存寄存器0里的數(shù)據(jù)18匯編語(yǔ)言:采用助記的符號(hào)形式(匯編指令與機(jī)器指令一一對(duì)應(yīng)),有利于人的閱讀和使用。示例:機(jī)器語(yǔ)言

匯編語(yǔ)言

高級(jí)語(yǔ)言計(jì)算機(jī)無(wú)法直接執(zhí)行匯編語(yǔ)言程序,執(zhí)行前需要把匯編語(yǔ)言程序翻譯為機(jī)器指令程序。匯編語(yǔ)言的特點(diǎn):·每條指令的意義容易理解·程序粒度太小,細(xì)節(jié)太多·程序無(wú)結(jié)構(gòu),缺乏組織手段·寫(xiě)大程序仍然很困難load

0a

將單元a的數(shù)據(jù)裝入寄存器0load1b 將單元b的數(shù)據(jù)裝入寄存器1mult01 寄存器0與1的數(shù)據(jù)相乘load1c

將單元c的數(shù)據(jù)裝入寄存器1add

01

寄存器0與1的數(shù)據(jù)相加save0d 將寄存器0里的數(shù)據(jù)存入單元d19高級(jí)語(yǔ)言的特點(diǎn):具有類似文字的表現(xiàn)形式用類似數(shù)學(xué)的表達(dá)式形式描述基本計(jì)算用變量等概念取代低級(jí)的存儲(chǔ)概念,使人擺脫各種繁瑣低級(jí)的工作,例如存儲(chǔ)的安排提供高級(jí)操作流程控制手段和程序組織手段用C語(yǔ)言里寫(xiě)前面同樣的程序片段:

d=a*b+c;機(jī)器語(yǔ)言

匯編語(yǔ)言

高級(jí)語(yǔ)言20計(jì)算機(jī)無(wú)法直接執(zhí)行高級(jí)語(yǔ)言寫(xiě)出的程序。編譯型語(yǔ)言:做一個(gè)編譯系統(tǒng),完成高級(jí)語(yǔ)言程序到機(jī)器語(yǔ)言可執(zhí)行程序的翻譯加工:編程->編譯加工->執(zhí)行解釋型語(yǔ)言:做一個(gè)解釋器,對(duì)程序邊解釋邊執(zhí)行編程

解釋并執(zhí)行使用高級(jí)語(yǔ)言編程:編程工作的效率大大提高人更容易思考和把握復(fù)雜程序的意義更多人愿意投身于這種工作,使編程發(fā)展成為一種職業(yè)和謀生方式機(jī)器語(yǔ)言

匯編語(yǔ)言

高級(jí)語(yǔ)言21高級(jí)語(yǔ)言發(fā)展簡(jiǎn)史1954年到1957年:高級(jí)語(yǔ)言FORTRAN誕生至1960年代中,開(kāi)發(fā)了Algol60,COBOL,BASIC等。還有函數(shù)式語(yǔ)言LISP等1970年代開(kāi)始:Pascal和C語(yǔ)言逐漸分別為教學(xué)科研和軟件開(kāi)發(fā)用的主要語(yǔ)言1980年代:邏輯程序語(yǔ)言Prolog,面向?qū)ο笳Z(yǔ)言Smalltalk和后來(lái)的

C++。1995年左右的Java還有很多腳本語(yǔ)言,如

Perl、Python、Ruby?!案呒?jí)語(yǔ)言程序設(shè)計(jì)”的含義:使用“高級(jí)語(yǔ)言”在計(jì)算機(jī)上進(jìn)行程序設(shè)計(jì)工作。2223起床刷牙洗臉吃飯?jiān)缱粤?xí)拿飯碗去食堂排隊(duì)買(mǎi)飯吃飯洗碗離開(kāi)食堂排隊(duì)選飯選菜付款“程序”分解實(shí)例(早起活動(dòng)):程序設(shè)計(jì)過(guò)程編寫(xiě)程序不應(yīng)該從第一個(gè)細(xì)節(jié)開(kāi)始逐步分解,直至分解到程序語(yǔ)言提供的功能。24編程的工作方式:從問(wèn)題出發(fā),從高層開(kāi)始設(shè)計(jì)程序;逐步分解程序功能,直至可以用程序語(yǔ)言實(shí)現(xiàn)。在本課程中需要學(xué)習(xí)和理解:程序語(yǔ)言所提供的基本功能;各種語(yǔ)言功能的形式和意義;所用編程工具(C/C++編程環(huán)境)和使用技術(shù);程序設(shè)計(jì)的典型技術(shù)。25寫(xiě)好程序需要:(1)模仿好的范例,(2)實(shí)踐。注意學(xué)習(xí)前人的經(jīng)驗(yàn),包括程序書(shū)寫(xiě)形式和許多具體寫(xiě)法等注意養(yǎng)成寫(xiě)程序的良好習(xí)慣。書(shū)中許多地方提出了相應(yīng)的建議寫(xiě)出程序和寫(xiě)好程序之間有很大距離只有寫(xiě)好小程序,才能寫(xiě)出大些的程序261.2C/C++語(yǔ)言的發(fā)展簡(jiǎn)史和特點(diǎn)1.C語(yǔ)言的誕生與發(fā)展(1)在C語(yǔ)言誕生以前,系統(tǒng)軟件主要是用匯編語(yǔ)言編寫(xiě)的。其可讀性和可移植性都很差;但一般的高級(jí)語(yǔ)言又難以實(shí)現(xiàn)對(duì)計(jì)算機(jī)硬件的直接操作。(2)C語(yǔ)言:Bell實(shí)驗(yàn)室的D.M.Ritchie

于1972年為了編寫(xiě)UNIX設(shè)計(jì)的。后來(lái)又被多次改進(jìn),并出現(xiàn)了多種版本。幾個(gè)重要的標(biāo)準(zhǔn):K&R標(biāo)準(zhǔn):1978年,B.W.Kernighan和D.M.

Ritchie合著出版了《TheCProgrammingLanguage》 1989年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)制定了ANSIC標(biāo)準(zhǔn)1999年再次做了修訂,稱為C99

。27在C的基礎(chǔ)上,1983年貝爾實(shí)驗(yàn)室推出了

C++。C++包含了整個(gè)ANSIC。進(jìn)一步擴(kuò)充和完善了C語(yǔ)言;添加了對(duì)面向?qū)ο缶幊痰耐耆С帧T诋?dāng)代,C++與C仍然高度兼容。因此人們常常把C和C++的并集稱為

C/C++

。28C/C++語(yǔ)言的優(yōu)點(diǎn)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活,程序書(shū)寫(xiě)形式自由;把程序中需要的許多功能放在程序庫(kù)(標(biāo)準(zhǔn)函數(shù)庫(kù));結(jié)構(gòu)化的體系結(jié)構(gòu)。層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù);非常強(qiáng)的處理能力,運(yùn)算符豐富,代碼效率高;……C/C++語(yǔ)言的缺點(diǎn)太靈活,不易掌握,容易出錯(cuò);運(yùn)算符優(yōu)先級(jí)太多;類型轉(zhuǎn)換限制少,檢驗(yàn)較弱,不夠安全;29C++ANSIC為了方便教學(xué),本課程使用的教學(xué)語(yǔ)言是以ANSIC為主,加上

C99和C++中的一些增強(qiáng)的語(yǔ)言特性。C99ANSIC、C99和C++的關(guān)系大致如下圖所示:30小結(jié):編程語(yǔ)言發(fā)展歷史:機(jī)器語(yǔ)言

匯編語(yǔ)言

高級(jí)語(yǔ)言C語(yǔ)言的三個(gè)重要標(biāo)準(zhǔn):K&R,ANSIC,C99C++高度兼容C通常把C語(yǔ)言和C++語(yǔ)言的并集稱為C/C++本課程使用的教學(xué)語(yǔ)言是以ANSIC為主,加上

C99和C++中的一些增強(qiáng)的語(yǔ)言特性。31C和C++是編譯型的高級(jí)程序設(shè)計(jì)語(yǔ)言,其開(kāi)發(fā)過(guò)程要經(jīng)過(guò)四個(gè)步驟:1、編輯(Edit):編程人員把按照C和C++語(yǔ)言語(yǔ)法規(guī)則編寫(xiě)的程序代碼輸入計(jì)算機(jī)并保存為“源程序”。2、編譯(compile):將編輯好的C/C++源程序通過(guò)編譯器轉(zhuǎn)換為目標(biāo)文件,即生成該源文件的目標(biāo)代碼。3、連接(link):將用戶程序生成的目標(biāo)代碼文件和系統(tǒng)提供的庫(kù)文件中連接在一起,生成可執(zhí)行文件;編譯和連接合稱為構(gòu)建(build),也簡(jiǎn)稱為編譯。4、運(yùn)行(run):運(yùn)行生成的可執(zhí)行文件,在屏幕上顯示運(yùn)行結(jié)果。用戶根據(jù)運(yùn)行結(jié)果來(lái)判斷程序是否工作正常。1.3C++程序快速入門(mén)32預(yù)處理連接源程序

(*.c,*.cpp)目標(biāo)模塊(*.obj)可執(zhí)行程序(*.exe)編譯編輯執(zhí)行分析思考編程人員可執(zhí)行程序是所有軟件的核心。它們?cè)谶\(yùn)行時(shí)能忠實(shí)地按照編程人員的設(shè)計(jì),執(zhí)行預(yù)定的功能。語(yǔ)言函數(shù)庫(kù)小知識(shí):文件名通常由文件主名和擴(kuò)展名構(gòu)成。兩者之間用

.

分隔。相同的擴(kuò)展名表示同一類型的文件。33集成開(kāi)發(fā)環(huán)境編程時(shí)需要對(duì)程序進(jìn)行編輯、編譯、連接、執(zhí)行、調(diào)試等各項(xiàng)操作。這些操作可以使用多個(gè)獨(dú)立的軟件進(jìn)行,但更常見(jiàn)的是使用集成開(kāi)發(fā)環(huán)境(IDE

:IntegratedDevelopmentEnviroment)——集成了文本編輯、程序編譯鏈接(構(gòu)建)、程序執(zhí)行、程序調(diào)試的軟件。目前常用的IDE有:Microsoft公司出品的VisualStudio(多種版本)包含免費(fèi)編譯器GCC

Code::Blocks、Dev-C++和

小熊貓C++34VisualStudio

是微軟公司推出的一個(gè)基于Windows操作系統(tǒng)的功能強(qiáng)大的可視化軟件集成開(kāi)發(fā)環(huán)境。包含編輯器、多種語(yǔ)言的編譯器以及其它開(kāi)發(fā)工具。1999年發(fā)行的6.0版本(VisualC++6.0)比較簡(jiǎn)單,可供初學(xué)者使用。但是在當(dāng)代的Windows7/8/10上運(yùn)行有兼容性問(wèn)題。不推薦使用。當(dāng)代的

VisualStudio功能非常強(qiáng)大而非常復(fù)雜,給學(xué)生免費(fèi)使用的VisualStudioCommunity也是如此。初學(xué)者難以駕馭。不推薦使用。VisualStudio有一個(gè)免費(fèi)的副產(chǎn)品:VisualStudioCode。它是一個(gè)獨(dú)立的源代碼編輯器。可以通過(guò)安裝配置各種編程語(yǔ)言的編譯器或解釋器而作為相應(yīng)的集成開(kāi)發(fā)環(huán)境。

安裝和配置有點(diǎn)復(fù)雜,不推薦初學(xué)者使用。3536Code::Blocks

是一款開(kāi)源的跨平臺(tái)集成開(kāi)發(fā)環(huán)境。通過(guò)配置不同的編譯器,可以支持包括C/C++在內(nèi)的各種編程語(yǔ)言。它提供了許多工程模板并支持各種插件。官方網(wǎng)站:/全中文漢化-優(yōu)化版:/anbang24/37Dev-C++

(Dev-Cpp)是一個(gè)Windows環(huán)境下的輕量級(jí)

免費(fèi)C/C++集成開(kāi)發(fā)環(huán)境。它集成了編輯器、源代碼格式化工具AStyle、編譯器GCC、調(diào)試器GDB等多種工具,適合于小型C/C++程序開(kāi)發(fā)。原版Dev-C++已停止開(kāi)發(fā)。本書(shū)作者改進(jìn)開(kāi)發(fā)并發(fā)布了“小龍Dev-C++”。特性:(1)保存源代碼文件時(shí)自動(dòng)整理排版縮進(jìn)格式;(2)編譯出錯(cuò)信息自動(dòng)翻譯為中文。本課程推薦使用“小龍Dev-C++”。38主頁(yè):https://devcpp.gitee.io小熊貓C++”也是一個(gè)Windows環(huán)境下的輕量級(jí)

免費(fèi)C/C++集成開(kāi)發(fā)環(huán)境。主要優(yōu)點(diǎn)是:(1)編輯時(shí)的代碼自動(dòng)補(bǔ)全功能較強(qiáng);(2)針對(duì)

C/C++教學(xué)和競(jìng)賽需求,集成了網(wǎng)絡(luò)在線試題試題集和在線判題功能。39主頁(yè):https://royqh1979.gitee.io/redpandacpp/40小結(jié)C/C++程序開(kāi)發(fā)經(jīng)過(guò)四個(gè)步驟:

編輯源程序

編譯生成目標(biāo)代碼

連接生成可執(zhí)行文件

運(yùn)行可執(zhí)行文件。集成了以上功能的開(kāi)發(fā)軟件稱為集成開(kāi)發(fā)環(huán)境(IDE),包含了編輯器、編譯器和調(diào)試器。411.3C++程序快速入門(mén)【例1-1】編寫(xiě)程序,在屏幕上顯示"hello,world!"/*我的第一個(gè)程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出

return0;}編輯如上文件。請(qǐng)注意:C/C++是大小寫(xiě)敏感的語(yǔ)言(要區(qū)分英文大小寫(xiě)字母),編輯時(shí)還需注意中英文字符保存文件,擴(kuò)展名為“.cpp”。42(1)注釋以/*

開(kāi)始、以*/

結(jié)束的塊式注釋。以//

開(kāi)始的單行注釋注釋只是給人看的,對(duì)編譯和運(yùn)行不起作用。所以可以用漢字或英文字符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單獨(dú)成為一行。/*我的第一個(gè)程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出

return0;}43(2)#include<iostream>告知編譯器把名為iostream的系統(tǒng)文件包含進(jìn)來(lái),這樣就可以調(diào)用cout<<

向屏幕輸出信息。(3)usingnamespacestd;使用名字空間std。(初學(xué)者暫且把它理解為必須要寫(xiě)的文字)/*我的第一個(gè)程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出

return0;}44(4)main():主函數(shù),是程序的基本部分;每一個(gè)C/C++程序必須有、且只能有一個(gè)main函數(shù);無(wú)論main函數(shù)放在文件中什么位置(開(kāi)頭、中間或最后),程序總是從main()函數(shù)開(kāi)始運(yùn)行。/*我的第一個(gè)程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出

return0;}45main()函數(shù)的主體是用一對(duì)花括號(hào)包起來(lái)的兩條語(yǔ)句。第一條語(yǔ)句的功能是:調(diào)用cout<<

進(jìn)行輸出。程序運(yùn)行時(shí)將在輸出窗口按原樣顯示一對(duì)英文雙引號(hào)中的字符序列:Hello,world!

,然后輸出一個(gè)endl。endl

是C++系統(tǒng)內(nèi)部定義好的符號(hào)常量“換行符”。效果是使屏幕上的光標(biāo)移動(dòng)到下一行(以供后續(xù)輸出)。/*我的第一個(gè)程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){

cout<<"Hello,world!"<<endl;//屏幕輸出

return0;}46(5)return0;程序運(yùn)行完畢時(shí),通常要返回給系統(tǒng)一個(gè)值,把自己的運(yùn)行情況告訴系統(tǒng)。通常以0表示工作正常。/*我的第一個(gè)程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出

return0;}47準(zhǔn)備性的代碼行int

main(){//函數(shù)體開(kāi)始函數(shù)體}//函數(shù)體結(jié)束由上例可知,C/C++程序的一般結(jié)構(gòu)如下:函數(shù)頭函數(shù)體/*我的第一個(gè)程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出

return0;}48語(yǔ)句與復(fù)合語(yǔ)句:C/C++程序中對(duì)計(jì)算機(jī)的操作是由函數(shù)中的語(yǔ)句完成的。語(yǔ)句是程序的基本單位,每條語(yǔ)句以分號(hào)為結(jié)束符,分號(hào)是語(yǔ)句的一部分。用一對(duì)花括號(hào)把0個(gè)或多個(gè)語(yǔ)句括起來(lái),就構(gòu)成了復(fù)合語(yǔ)句(復(fù)合結(jié)構(gòu))。main函數(shù)的主體就是一個(gè)復(fù)合語(yǔ)句。C/C++程序書(shū)寫(xiě)格式自由,一行內(nèi)可以寫(xiě)幾個(gè)語(yǔ)句,也可以把一個(gè)語(yǔ)句分開(kāi)寫(xiě)在多行上。例如下面都是合法的寫(xiě)法:49#include<iostream>usingnamespacestd;intmain(){cout<<"Hello,world!"<<endl;return0;}#include<iostream>usingnamespacestd;intmain(){cout<<"Hello,world!"<<endl;return0;}#include<iostream>usingnamespacestd;intmain(){cout<<"Hello,world!"<<endl;return0;}50但是在實(shí)踐中,程序可能包含很多語(yǔ)句,邏輯結(jié)構(gòu)可能很復(fù)雜,因此應(yīng)該采用良好的排版格式寫(xiě)出,所用格式應(yīng)很好體現(xiàn)程序的層次結(jié)構(gòu),反映程序中各個(gè)部分之間的關(guān)系。通常要求:(1)在程序里適當(dāng)?shù)丶尤胍恍┛招?,分隔程序中處于同一層次的不同部分;?)同層次的不同部分相互對(duì)齊排列,下一層的內(nèi)容適當(dāng)縮進(jìn)(在一行開(kāi)始增加制表符或空格)并相互對(duì)齊,使程序結(jié)構(gòu)更清晰;(3)程序中寫(xiě)一些注釋。初學(xué)者應(yīng)該遵循這些書(shū)寫(xiě)格式!/*我的第一個(gè)程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出

return0;}51注釋縮進(jìn)空行前面是一個(gè)簡(jiǎn)單的示例程序,目的是說(shuō)明C/C++程序中的基本結(jié)構(gòu)。面對(duì)實(shí)際問(wèn)題進(jìn)行程序設(shè)計(jì)以解答問(wèn)題時(shí),首先要分析問(wèn)題,設(shè)計(jì)解決辦法,然后再編寫(xiě)程序。源程序要保存為計(jì)算機(jī)上的文件以供后續(xù)處理。這稱為源程序文件(簡(jiǎn)稱為源文件)。C/C++源文件通常以“cpp”作為擴(kuò)展名。C源文件也可以用“c”作為擴(kuò)展名。5253程序從編輯到最終順利執(zhí)行,通常需要反復(fù)修改,排除其中存在的錯(cuò)誤,這個(gè)過(guò)程稱為程序調(diào)試。分析問(wèn)題,

設(shè)計(jì)解決辦法編寫(xiě)程序編譯連接調(diào)試運(yùn)行發(fā)現(xiàn)錯(cuò)誤發(fā)現(xiàn)錯(cuò)誤發(fā)現(xiàn)錯(cuò)誤程序開(kāi)發(fā)過(guò)程*.c或*.cpp*.obj*.exe程序開(kāi)發(fā)和調(diào)試的另一個(gè)流程圖:5455初學(xué)者有一種常見(jiàn)的誤解,以為程序設(shè)計(jì)就是“寫(xiě)程序、編譯、運(yùn)行、完事”。這種理解是錯(cuò)誤的。應(yīng)該強(qiáng)調(diào):(1)程序開(kāi)發(fā)工作的第一步是分析問(wèn)題并設(shè)計(jì)解決方案,這是一項(xiàng)重要的腦力勞動(dòng)。只有經(jīng)過(guò)充分思考并設(shè)想出了合理的解決辦法,才能動(dòng)手開(kāi)始編寫(xiě)程序。(2)程序常??赡芎幸恍┟黠@的或隱藏的錯(cuò)誤,因此需要進(jìn)行程序除錯(cuò)(debug)和調(diào)試(test)。此外,完成了的程序,也常常需要進(jìn)一步完善或修改擴(kuò)充。這些也是重要的編程工作。56五、程序除錯(cuò)程序中的錯(cuò)誤,其實(shí)都是編程者自己犯的錯(cuò)誤,并沒(méi)有其它客觀原因。程序除錯(cuò)就是找到并清除自己開(kāi)發(fā)程序的過(guò)程中所犯的錯(cuò)誤。程序中的錯(cuò)誤可以大致分為兩類:語(yǔ)法錯(cuò)誤(入門(mén)時(shí)常見(jiàn))邏輯錯(cuò)誤(進(jìn)階學(xué)習(xí)時(shí)常見(jiàn))需要熟練掌握程序開(kāi)發(fā)系統(tǒng)的使用方法,更需要積極開(kāi)動(dòng)腦筋,認(rèn)真觀察、分析和思考。571.4集成開(kāi)發(fā)環(huán)境Dev-C++使用簡(jiǎn)介老師演示第一次上機(jī)操作的過(guò)程。打開(kāi)“小龍Dev-C++”主頁(yè)

https://devcpp.gitee.io下載安裝文件,并在本機(jī)上安裝小龍Dev-C++編輯源程序,保存源程序文件編譯源程序,排除可能的錯(cuò)誤運(yùn)行程序,查看運(yùn)行結(jié)果58菜單欄工具欄管理器面板源文件編輯區(qū)信息面板(折疊狀態(tài),可以展開(kāi))狀態(tài)欄小龍Dev-C++的工作界面:59打開(kāi)

關(guān)閉

撤消

重做

剪切

復(fù)制

粘貼

查找

主頁(yè)

新建源文件

保存

全部保存

插入代碼塊

行注釋

編譯

運(yùn)行

編譯運(yùn)行

調(diào)試

停止

下一行

單步進(jìn)入

跳出函數(shù)熟記工具欄上的各個(gè)按鈕的功能:編寫(xiě)程序:基本編輯操作:根據(jù)當(dāng)前選定的輸入法輸入英文或中文;按回車鍵(Enter)換行;用光標(biāo)鍵在文字中移動(dòng)光標(biāo);退格鍵(Backspace)刪除光標(biāo)左邊的字符,刪除鍵(Delete)刪除光標(biāo)右邊的字符;插入鍵(Insert)鍵切換文字的插入和覆蓋方式60功能鍵區(qū)狀態(tài)指示燈編輯鍵區(qū)副鍵盤(pán)主鍵盤(pán)區(qū)(字母、數(shù)字、符號(hào)鍵)用于組合快捷鍵退格鍵大小寫(xiě)制表鍵回車Shift:臨時(shí)切換字母大小寫(xiě),數(shù)字符號(hào)鍵上方的符號(hào)快捷菜單鍵空格數(shù)字

鎖定鍵向左刪除向右刪除Hello,|world!標(biāo)準(zhǔn)鍵盤(pán)布局和功能說(shuō)明61切換插入和覆蓋模式覆蓋模式:光標(biāo)為小方塊,鍵入的字符覆蓋右邊字符插入模式:光標(biāo)為小豎線,插入字符,右邊字符向右移動(dòng)小知識(shí):出現(xiàn)覆蓋模式時(shí),再按一次

Insert

即可切換到插入模式!62筆記本電腦的鍵盤(pán)Fn鍵觸控板電源指示燈指紋識(shí)別無(wú)線網(wǎng)卡開(kāi)關(guān)63初學(xué)者在編輯源程序時(shí)需要注意的事項(xiàng):在源程序中添加一些空行有利于查看;在源程序中應(yīng)該嚴(yán)格地使用縮進(jìn):鍵入制表符(Tab)或使用退格鍵(BackSpace)。用鼠標(biāo)切換中/英文輸入法,或者用快捷鍵

Ctrl+Shift(按住Ctrl鍵不放,再按其它鍵)注意中英文字符的區(qū)別:英文分號(hào)

;

英文引號(hào)

″″中文分號(hào);中文引號(hào)

“”

(非法中文字符顯示為粗體紅色帶下劃線)641、點(diǎn)擊保存按鈕2、設(shè)定保存位置

(桌面或其它文件夾);3、輸入文件名;4、文件名出現(xiàn)在窗口標(biāo)題欄和標(biāo)簽頁(yè)保存源代碼文件:65完成編輯,點(diǎn)擊“編譯”按鈕就可以進(jìn)行編譯。編譯時(shí),如果源程序含有錯(cuò)誤,則會(huì)顯示錯(cuò)誤信息。用戶需要分析錯(cuò)誤信息,并修改源程序。66初學(xué)者容易編譯出錯(cuò)的例子(1):錯(cuò)誤原因:缺失英文分號(hào)解決辦法:補(bǔ)充鍵入該字符67初學(xué)者容易編譯出錯(cuò)的例子(2):錯(cuò)誤原因:缺失英文雙引號(hào)解決辦法:補(bǔ)充鍵入該字符68初學(xué)者容易編譯出錯(cuò)的例子(3):錯(cuò)誤原因:非法的中文雙引號(hào)解決辦法:把中文雙引號(hào)改為英文雙引號(hào)經(jīng)驗(yàn)技巧:出現(xiàn)大量錯(cuò)誤時(shí),首先注意排除第一個(gè)錯(cuò)誤,然后重新編譯,可能會(huì)消除很多錯(cuò)誤,或產(chǎn)生新的錯(cuò)誤。69初學(xué)者容易編譯出錯(cuò)的例子(4):錯(cuò)誤原因:main寫(xiě)成了mian解決辦法:改正為main70經(jīng)過(guò)反復(fù)修改,消除源代碼中的編輯錯(cuò)誤,最終編譯連接成功,生成可執(zhí)行文件。編輯器下方顯示編譯日志。71點(diǎn)擊“運(yùn)行”按鈕,運(yùn)行編譯連接所生成的可執(zhí)行文件。也可點(diǎn)擊“編譯運(yùn)行”按鈕72文字界面程序運(yùn)行時(shí)會(huì)出現(xiàn)控制臺(tái)窗口:2、程序正常結(jié)束時(shí),應(yīng)該正常關(guān)閉該窗口。(如果未正常關(guān)閉,以后可能出現(xiàn)奇怪的問(wèn)題。)1、應(yīng)該認(rèn)真閱讀窗口中所顯示的信息,是否為用戶預(yù)想的結(jié)果?73源程序文件可執(zhí)行程序文件鼠標(biāo)雙擊可執(zhí)行程序,就可運(yùn)行它。(如果出錯(cuò),需要設(shè)置編譯器為靜態(tài)鏈接)在文件管理器中可以看到這些文件:74預(yù)處理連接源程序

(*.c,*.cpp)目標(biāo)模塊(*.obj)可執(zhí)行程序(*.exe)編譯用鍵盤(pán)和鼠標(biāo)操作,利用菜單和工具欄,編輯源程序,并保存源程序文件到本機(jī)。執(zhí)行分析思考編程人員語(yǔ)言函數(shù)庫(kù)點(diǎn)擊編譯和運(yùn)行按鈕程序開(kāi)發(fā)的實(shí)際操作75練習(xí)題計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言可以分為

機(jī)器語(yǔ)言、匯編語(yǔ)言

高級(jí)語(yǔ)言。C語(yǔ)言有兩個(gè)主要的技術(shù)標(biāo)準(zhǔn):ANSIC

C99。用戶編寫(xiě)的程序源代碼文件稱為源程序文件(源文件)。C語(yǔ)言源文件的擴(kuò)展名是c

,也可以按照C++語(yǔ)言的規(guī)則寫(xiě)為cpp

。C/C++源程序需要經(jīng)過(guò)編譯和連接才能生成可執(zhí)行文件,擴(kuò)展名為exe。一個(gè)C/C++語(yǔ)言程序必須包含一個(gè)名為main的函數(shù),也稱為主函數(shù)。C/C++語(yǔ)言程序總是從main函數(shù)開(kāi)始執(zhí)行的。開(kāi)發(fā)程序時(shí)常常使用一個(gè)集成了文本編輯、程序編譯鏈接、程序執(zhí)行、程序調(diào)試的軟件。這種軟件被稱為

集成開(kāi)發(fā)環(huán)境(IDE

)。在編輯源程序文件時(shí),常用按鍵的功能是:制表鍵(Tab):鍵入一個(gè)制表符換檔鍵(shift):輸入字符鍵上方字符或更換大小寫(xiě)退格鍵(Backspace):刪除光標(biāo)左邊字符或所選字符刪除鍵(Delete):刪除光標(biāo)右邊字符或所選字符插入鍵(Insert):切換插入模式和改寫(xiě)模式編譯程序時(shí)如果出現(xiàn)“非法字符‘\241’在程序中”的錯(cuò)誤信息,原因是

程序中有非法的中文字符。76教學(xué)安排課后作業(yè):ptop-課后作業(yè)-1.docx網(wǎng)址:/devcpp/ptop/從“課后作業(yè)”文件夾中下載。該文件中以隱藏文字的形式包含了答案。點(diǎn)擊WPS或Word中的“顯示/隱藏段落標(biāo)記”可以顯示或隱藏。打印時(shí)點(diǎn)擊“打印...”按鈕,在彈出的“打印”對(duì)話框中點(diǎn)擊左下方的“選項(xiàng)”,在彈出的對(duì)話框中選擇是否打印隱藏文字。77本頁(yè)隱藏,不播放《高級(jí)語(yǔ)言程序設(shè)計(jì)》

首次上機(jī)編程實(shí)驗(yàn)78首次上機(jī)時(shí)的基本要求:聽(tīng)從老師指導(dǎo),嚴(yán)格按照老師的要求進(jìn)行操作。這些操作在將來(lái)要重復(fù)用到,這一次就要學(xué)會(huì)。跟隨老師說(shuō)明的進(jìn)度進(jìn)行操作。提前完成操作時(shí)請(qǐng)耐心地稍作等待;操作滯后時(shí)請(qǐng)盡快舉手呼喚老師前來(lái)指導(dǎo),或向旁邊同學(xué)請(qǐng)教。不要跳過(guò)老師要求的某些操作。老師在這次上機(jī)時(shí)管得比較嚴(yán)格。在以后的上機(jī)練習(xí)中,老師會(huì)給同學(xué)們很大的自由。791、在機(jī)房里打開(kāi)一臺(tái)計(jì)算機(jī)(如果無(wú)法啟動(dòng)就馬上換一臺(tái)),檢查本機(jī)是否能正常上網(wǎng):屏幕右下角的托盤(pán)處是否顯示有網(wǎng)絡(luò)連接圖標(biāo)?如果網(wǎng)絡(luò)不正常(圖標(biāo)為),則檢查主機(jī)箱背后的網(wǎng)線連接,插好網(wǎng)線。如果仍然網(wǎng)絡(luò)不正常,就馬上換一臺(tái)計(jì)算機(jī)。總之,應(yīng)該盡快選用一臺(tái)能正常工作的計(jì)算機(jī)。

(不要期望老師當(dāng)場(chǎng)修理計(jì)算機(jī)給你用?。┱?qǐng)把出錯(cuò)的計(jì)算機(jī)告訴上課老師,以便機(jī)房管理老師將來(lái)進(jìn)行維修。802、連接FTP服務(wù)器機(jī)房里有一臺(tái)計(jì)算機(jī)提供了

FTP(文件傳輸)服務(wù),上機(jī)時(shí)需要從它下載文件,或上傳文件到它。雙擊打開(kāi)“此電腦”或資源管理器,在地址欄鍵入FTP服務(wù)器的網(wǎng)址并按回車鍵:0這樣就會(huì)連接到FTP服務(wù)器。如果未連接,有可能是服務(wù)器未打開(kāi)(請(qǐng)呼叫老師),也可能是本機(jī)網(wǎng)絡(luò)有問(wèn)題。調(diào)整這個(gè)FTP窗口的大小,并拖動(dòng)它到桌面靠右的位置,使自己仍然看到本機(jī)桌面。81教師事先準(zhǔn)備好FTP服務(wù)器,并放置一些示例文件以供練習(xí)。記在書(shū)上或筆記本上!下載文件:鼠標(biāo)單擊選中FTP服務(wù)器上的文件,然后拖動(dòng)到本機(jī)的桌面上。然后在本機(jī)用鼠標(biāo)雙擊打開(kāi)已下載到的文件。你的計(jì)算機(jī)上是否已經(jīng)安裝了

小龍Dev-C++?如果尚未安裝,請(qǐng)?jiān)贔TP服務(wù)器中找到它的安裝文件,下載到本機(jī),然后進(jìn)行安裝。雙擊桌面上的“Dev-C++”圖標(biāo),啟動(dòng)該軟件。823、認(rèn)識(shí)Dev-C++的工作界面83菜單欄工具欄管理器面板源文件編輯區(qū)信息面板(折疊狀態(tài),可以展開(kāi))狀態(tài)欄4、了解軟件的菜單和工具欄(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論