版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1第1章
程序設(shè)計和C/C++語言高級語言程序設(shè)計關(guān)于教學(xué)安排的說明《從問題到程序——C/C++程序設(shè)計基礎(chǔ)》一書充分考慮了作為高校教材的教學(xué)安排:課堂教學(xué)與上機編程練習(xí)的時間大約為2:1,而且從第一章開始,每一部分的內(nèi)容都安排了合理的上機編程練習(xí)。這與傳統(tǒng)的“先講理論知識,兩周之后才開始上機練習(xí)”并不相同。本書第一章的課堂教學(xué)時間大約為3課時。比較合適的情況是在4課時的課堂教學(xué)之后進行配套的上機練習(xí)。如果實際教學(xué)安排出現(xiàn)
2
課時的課堂教學(xué)之后就是上機練習(xí)時間。那么可以先快速地瀏覽1-1和1-2節(jié),然后就講解1-3和1-4,
再讓學(xué)生進行上機練習(xí)。以后再花時間講解1-1和1-2。2本頁隱藏,不播放。僅供備課時查看3高級語言程序設(shè)計一、課程性質(zhì)、目的與任務(wù)
本課程是作為程序設(shè)計第一言語為非計算機專業(yè)開設(shè)的計算機基礎(chǔ)課程。通過該課程的學(xué)習(xí)使學(xué)生具備扎實的面向過程的程序設(shè)計的能力,為在以后的學(xué)習(xí)或工作中,能夠使用一種高級語言編寫程序,解決各自專業(yè)領(lǐng)域的計算機應(yīng)用問題打下一個良好的基礎(chǔ)。二、教學(xué)目標程序設(shè)計的基本概念與基本方法編程解題的思路與典型方法數(shù)學(xué)模型簡介算法及算法步驟程序結(jié)構(gòu)與相應(yīng)語句編碼與上機調(diào)試4三、教學(xué)重點在C/C++語言的環(huán)境下,學(xué)會如何針對問題進行分析,得出數(shù)學(xué)模型,理出算法并編程實現(xiàn)。強化實踐:程序設(shè)計是高強度的腦力勞動,不是聽會的、也不是看會的,而是練會的。這可能是與以往的教學(xué)安排最大的不同之處。重點放在思路、算法、編程構(gòu)思和程序?qū)崿F(xiàn)上。語句只是表達工具,要求堂上積極思考,盡量當堂學(xué)懂,重在訓(xùn)練分析問題和解決問題的能力。5第1章1.1程序和程序語言1.2C語言和C++語言簡介1.3C++程序快速入門1.4集成開發(fā)環(huán)境Dev-C++使用簡介6例1:一個學(xué)生的日常行為:起床→刷牙洗臉→吃早餐→上課→吃午餐→午休→上課→吃晚餐→晚自習(xí)→洗漱→上床睡覺。(順序執(zhí)行)例2:操作也可能是在多種情況中的選擇:早餐選擇哪種食品,晚自習(xí)是到教室還是到圖書館。例3:操作還可能在某個更大的上下文中的不斷重復(fù):從整個學(xué)期的角度來看,學(xué)生就是一天一天地重復(fù)每天的日常行為。1.1程序和程序語言對“程序”的直觀理解:“程序(program)”一詞來自生活,通常指完成某些事務(wù)的一種既定方式和過程。按順序?qū)嵤┻@些步驟,即完成了該項事務(wù)。7“程序”的一些直觀特征:按部就班地進行;有開始,有結(jié)束;完成某項具體任務(wù);需要用某種記法形式描述(計算機程序需要用某種精確定義的形式描述);是在一些基本動作的基礎(chǔ)上描述的;不同的描述粒度(細節(jié)程度);…
…把程序(program)和編寫程序(programming)作為關(guān)注的對象進行系統(tǒng)研究,主要是在現(xiàn)代計算機領(lǐng)域里。8計算機基本原理現(xiàn)在的“通用電子數(shù)字計算機”(General-PurposeElectronicDigitalComputer)是用超大規(guī)模集成電路和其他元器件構(gòu)造起來的一種復(fù)雜電子設(shè)備。一個完整的計算機系統(tǒng)包括硬件系統(tǒng)(Hardware)和軟件系統(tǒng)(Software)兩大部分,依靠硬件和軟件的協(xié)同工作來完成各種計算任務(wù)。計算機系統(tǒng)中看得見的各種物理上的部件依賴于計算機硬件的程序及其相關(guān)數(shù)據(jù)9運算器控制器存儲器輸出設(shè)備輸入設(shè)備計算機硬件系統(tǒng)采用馮·諾依曼體系結(jié)構(gòu),由運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備五個基本部分組成。它們通過總線連接。邏輯結(jié)構(gòu):分析輸入的指令,統(tǒng)一控制計算機的各個部件以完成規(guī)定的任務(wù)。執(zhí)行各種算術(shù)運算和邏輯運算計算機的記憶裝置,分為內(nèi)部存儲器和外部存儲器10中央處理單元(CPU)運算器控制器存儲器輸出設(shè)備輸入設(shè)備輸入設(shè)備鍵盤、鼠標等、光電輸入內(nèi)部存儲器外部存儲器計算機物理結(jié)構(gòu):主板主機輸出設(shè)備(顯示器、打印機)當需要計算機解決某個問題,就必須先把解決這個問題的方法分解成一系列計算機所能完成的簡單操作,并以指令(對計算機進行程序控制的最小單位)的形式通知計算機。這些完成特定功能的指令序列,就稱為程序(program)。11一組計算機能識別和執(zhí)行的指令。計算機能夠自動地完成各種數(shù)值運算和復(fù)雜的信息處理過程的基礎(chǔ)是兩個原理:1、存儲程序(把編寫好的程序存儲在計算機上)2、程序控制(用程序來控制計算機的運行)因此,程序是人與計算機交流信息的最基本方式。人通過程序指揮計算機的活動。12計算機的基本工作原理簡要描述為:程序和被處理的數(shù)據(jù)由輸入設(shè)備或外存裝入內(nèi)存;CPU在控制器控制下從內(nèi)存中取出程序的指令,根據(jù)需要到指定地址取出所需數(shù)據(jù),運算器執(zhí)行指令要求的操作;運算結(jié)果存入內(nèi)存,根據(jù)需要而通過輸出設(shè)備輸出。整個過程都在控制器的控制下進行。運算器控制器存儲器輸出設(shè)備輸入設(shè)備13系統(tǒng)軟件:計算機系統(tǒng)中供給用戶使用的操作系統(tǒng)環(huán)境和控制計算機系統(tǒng)按照操作系統(tǒng)要求運行的軟件。操作系統(tǒng)(Windows,Linux,…)語言處理程序診斷程序數(shù)據(jù)庫系統(tǒng)網(wǎng)絡(luò)管理軟件應(yīng)用軟件:計算機系統(tǒng)支持下的所有面對實際問題和具體用戶群的應(yīng)用程序。數(shù)據(jù)處理軟件(如Matlab)文字處理軟件(WPS、WORD)表格處理軟件(如EXCEL)計算機輔助工程應(yīng)用實時處理軟件行業(yè)軟件軟件:依賴于計算機硬件的程序及其相關(guān)數(shù)據(jù)。14
計算機系統(tǒng)組成圖示
cpu存儲器輸入輸出
接口及設(shè)備裸機操作系統(tǒng)程序設(shè)計語言語言處理程序支持軟件應(yīng)用軟件軟件系統(tǒng)15編制計算機程序的工作稱為程序設(shè)計或編程(Programming),其產(chǎn)品就是程序(Program)。由于計算機的本質(zhì)特征,從它誕生之初就有了程序設(shè)計工作。要用計算機處理問題,寫程序時就必須精確描述所需的全部細節(jié),不能有一點含糊之處。編寫程序需要使用程序設(shè)計語言或編程語言(ProgrammingLanguage)。這種語言的特點是計算機可以處理,可以按它的指揮完成工作。程序設(shè)計語言是人與計算機交流的最基本最重要的媒介。16硬件層面上的程序是機器指令的序列。程序執(zhí)行:將程序存入內(nèi)存,通知CPU第一條指令的地址。命令它“開始”!一般情況下,CPU執(zhí)行完一條指令后,自動取出下一條指令,并如此繼續(xù)下去。轉(zhuǎn)跳指令明確指定下一條指令的位置,人可以基于轉(zhuǎn)跳指令描述復(fù)雜的執(zhí)行流程。人命令計算機去執(zhí)行一個程序,計算機就會一絲不茍地按這個程序的內(nèi)容,一條一條指令執(zhí)行,直至程序結(jié)束(指令執(zhí)行到了最后,或者遇到明確的停止指令)。17機器語言是機器指令形成的語言,形式為二進制編碼,機器可直接執(zhí)行。示例:程序設(shè)計語言的發(fā)展分為三個階段:機器語言
匯編語言
高級語言難寫難讀,人使用不便,程序開發(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īng)),有利于人的閱讀和使用。示例:機器語言
匯編語言
高級語言計算機無法直接執(zhí)行匯編語言程序,執(zhí)行前需要把匯編語言程序翻譯為機器指令程序。匯編語言的特點:·每條指令的意義容易理解·程序粒度太小,細節(jié)太多·程序無結(jié)構(gòu),缺乏組織手段·寫大程序仍然很困難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高級語言的特點:具有類似文字的表現(xiàn)形式用類似數(shù)學(xué)的表達式形式描述基本計算用變量等概念取代低級的存儲概念,使人擺脫各種繁瑣低級的工作,例如存儲的安排提供高級操作流程控制手段和程序組織手段用C語言里寫前面同樣的程序片段:
d=a*b+c;機器語言
匯編語言
高級語言20計算機無法直接執(zhí)行高級語言寫出的程序。編譯型語言:做一個編譯系統(tǒng),完成高級語言程序到機器語言可執(zhí)行程序的翻譯加工:編程->編譯加工->執(zhí)行解釋型語言:做一個解釋器,對程序邊解釋邊執(zhí)行編程
解釋并執(zhí)行使用高級語言編程:編程工作的效率大大提高人更容易思考和把握復(fù)雜程序的意義更多人愿意投身于這種工作,使編程發(fā)展成為一種職業(yè)和謀生方式機器語言
匯編語言
高級語言21高級語言發(fā)展簡史1954年到1957年:高級語言FORTRAN誕生至1960年代中,開發(fā)了Algol60,COBOL,BASIC等。還有函數(shù)式語言LISP等1970年代開始:Pascal和C語言逐漸分別為教學(xué)科研和軟件開發(fā)用的主要語言1980年代:邏輯程序語言Prolog,面向?qū)ο笳Z言Smalltalk和后來的
C++。1995年左右的Java還有很多腳本語言,如
Perl、Python、Ruby?!案呒壵Z言程序設(shè)計”的含義:使用“高級語言”在計算機上進行程序設(shè)計工作。2223起床刷牙洗臉吃飯早自習(xí)拿飯碗去食堂排隊買飯吃飯洗碗離開食堂排隊選飯選菜付款“程序”分解實例(早起活動):程序設(shè)計過程編寫程序不應(yīng)該從第一個細節(jié)開始逐步分解,直至分解到程序語言提供的功能。24編程的工作方式:從問題出發(fā),從高層開始設(shè)計程序;逐步分解程序功能,直至可以用程序語言實現(xiàn)。在本課程中需要學(xué)習(xí)和理解:程序語言所提供的基本功能;各種語言功能的形式和意義;所用編程工具(C/C++編程環(huán)境)和使用技術(shù);程序設(shè)計的典型技術(shù)。25寫好程序需要:(1)模仿好的范例,(2)實踐。注意學(xué)習(xí)前人的經(jīng)驗,包括程序書寫形式和許多具體寫法等注意養(yǎng)成寫程序的良好習(xí)慣。書中許多地方提出了相應(yīng)的建議寫出程序和寫好程序之間有很大距離只有寫好小程序,才能寫出大些的程序261.2C/C++語言的發(fā)展簡史和特點1.C語言的誕生與發(fā)展(1)在C語言誕生以前,系統(tǒng)軟件主要是用匯編語言編寫的。其可讀性和可移植性都很差;但一般的高級語言又難以實現(xiàn)對計算機硬件的直接操作。(2)C語言:Bell實驗室的D.M.Ritchie
于1972年為了編寫UNIX設(shè)計的。后來又被多次改進,并出現(xiàn)了多種版本。幾個重要的標準:K&R標準:1978年,B.W.Kernighan和D.M.
Ritchie合著出版了《TheCProgrammingLanguage》 1989年,美國國家標準化協(xié)會制定了ANSIC標準1999年再次做了修訂,稱為C99
。27在C的基礎(chǔ)上,1983年貝爾實驗室推出了
C++。C++包含了整個ANSIC。進一步擴充和完善了C語言;添加了對面向?qū)ο缶幊痰耐耆С帧T诋敶?,C++與C仍然高度兼容。因此人們常常把C和C++的并集稱為
C/C++
。28C/C++語言的優(yōu)點語言簡潔、緊湊,使用方便、靈活,程序書寫形式自由;把程序中需要的許多功能放在程序庫(標準函數(shù)庫);結(jié)構(gòu)化的體系結(jié)構(gòu)。層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護;非常強的處理能力,運算符豐富,代碼效率高;……C/C++語言的缺點太靈活,不易掌握,容易出錯;運算符優(yōu)先級太多;類型轉(zhuǎn)換限制少,檢驗較弱,不夠安全;29C++ANSIC為了方便教學(xué),本課程使用的教學(xué)語言是以ANSIC為主,加上
C99和C++中的一些增強的語言特性。C99ANSIC、C99和C++的關(guān)系大致如下圖所示:30小結(jié):編程語言發(fā)展歷史:機器語言
匯編語言
高級語言C語言的三個重要標準:K&R,ANSIC,C99C++高度兼容C通常把C語言和C++語言的并集稱為C/C++本課程使用的教學(xué)語言是以ANSIC為主,加上
C99和C++中的一些增強的語言特性。31C和C++是編譯型的高級程序設(shè)計語言,其開發(fā)過程要經(jīng)過四個步驟:1、編輯(Edit):編程人員把按照C和C++語言語法規(guī)則編寫的程序代碼輸入計算機并保存為“源程序”。2、編譯(compile):將編輯好的C/C++源程序通過編譯器轉(zhuǎn)換為目標文件,即生成該源文件的目標代碼。3、連接(link):將用戶程序生成的目標代碼文件和系統(tǒng)提供的庫文件中連接在一起,生成可執(zhí)行文件;編譯和連接合稱為構(gòu)建(build),也簡稱為編譯。4、運行(run):運行生成的可執(zhí)行文件,在屏幕上顯示運行結(jié)果。用戶根據(jù)運行結(jié)果來判斷程序是否工作正常。1.3C++程序快速入門32預(yù)處理連接源程序
(*.c,*.cpp)目標模塊(*.obj)可執(zhí)行程序(*.exe)編譯編輯執(zhí)行分析思考編程人員可執(zhí)行程序是所有軟件的核心。它們在運行時能忠實地按照編程人員的設(shè)計,執(zhí)行預(yù)定的功能。語言函數(shù)庫小知識:文件名通常由文件主名和擴展名構(gòu)成。兩者之間用
.
分隔。相同的擴展名表示同一類型的文件。33集成開發(fā)環(huán)境編程時需要對程序進行編輯、編譯、連接、執(zhí)行、調(diào)試等各項操作。這些操作可以使用多個獨立的軟件進行,但更常見的是使用集成開發(fā)環(huán)境(IDE
:IntegratedDevelopmentEnviroment)——集成了文本編輯、程序編譯鏈接(構(gòu)建)、程序執(zhí)行、程序調(diào)試的軟件。目前常用的IDE有:Microsoft公司出品的VisualStudio(多種版本)包含免費編譯器GCC
的
Code::Blocks、Dev-C++和
小熊貓C++34VisualStudio
是微軟公司推出的一個基于Windows操作系統(tǒng)的功能強大的可視化軟件集成開發(fā)環(huán)境。包含編輯器、多種語言的編譯器以及其它開發(fā)工具。1999年發(fā)行的6.0版本(VisualC++6.0)比較簡單,可供初學(xué)者使用。但是在當代的Windows7/8/10上運行有兼容性問題。不推薦使用。當代的
VisualStudio功能非常強大而非常復(fù)雜,給學(xué)生免費使用的VisualStudioCommunity也是如此。初學(xué)者難以駕馭。不推薦使用。VisualStudio有一個免費的副產(chǎn)品:VisualStudioCode。它是一個獨立的源代碼編輯器??梢酝ㄟ^安裝配置各種編程語言的編譯器或解釋器而作為相應(yīng)的集成開發(fā)環(huán)境。
安裝和配置有點復(fù)雜,不推薦初學(xué)者使用。3536Code::Blocks
是一款開源的跨平臺集成開發(fā)環(huán)境。通過配置不同的編譯器,可以支持包括C/C++在內(nèi)的各種編程語言。它提供了許多工程模板并支持各種插件。官方網(wǎng)站:/全中文漢化-優(yōu)化版:/anbang24/37Dev-C++
(Dev-Cpp)是一個Windows環(huán)境下的輕量級
免費C/C++集成開發(fā)環(huán)境。它集成了編輯器、源代碼格式化工具AStyle、編譯器GCC、調(diào)試器GDB等多種工具,適合于小型C/C++程序開發(fā)。原版Dev-C++已停止開發(fā)。本書作者改進開發(fā)并發(fā)布了“小龍Dev-C++”。特性:(1)保存源代碼文件時自動整理排版縮進格式;(2)編譯出錯信息自動翻譯為中文。本課程推薦使用“小龍Dev-C++”。38主頁:https://devcpp.gitee.io小熊貓C++”也是一個Windows環(huán)境下的輕量級
免費C/C++集成開發(fā)環(huán)境。主要優(yōu)點是:(1)編輯時的代碼自動補全功能較強;(2)針對
C/C++教學(xué)和競賽需求,集成了網(wǎng)絡(luò)在線試題試題集和在線判題功能。39主頁:https://royqh1979.gitee.io/redpandacpp/40小結(jié)C/C++程序開發(fā)經(jīng)過四個步驟:
編輯源程序
編譯生成目標代碼
連接生成可執(zhí)行文件
運行可執(zhí)行文件。集成了以上功能的開發(fā)軟件稱為集成開發(fā)環(huán)境(IDE),包含了編輯器、編譯器和調(diào)試器。411.3C++程序快速入門【例1-1】編寫程序,在屏幕上顯示"hello,world!"/*我的第一個程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出
return0;}編輯如上文件。請注意:C/C++是大小寫敏感的語言(要區(qū)分英文大小寫字母),編輯時還需注意中英文字符保存文件,擴展名為“.cpp”。42(1)注釋以/*
開始、以*/
結(jié)束的塊式注釋。以//
開始的單行注釋注釋只是給人看的,對編譯和運行不起作用。所以可以用漢字或英文字符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單獨成為一行。/*我的第一個程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出
return0;}43(2)#include<iostream>告知編譯器把名為iostream的系統(tǒng)文件包含進來,這樣就可以調(diào)用cout<<
向屏幕輸出信息。(3)usingnamespacestd;使用名字空間std。(初學(xué)者暫且把它理解為必須要寫的文字)/*我的第一個程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出
return0;}44(4)main():主函數(shù),是程序的基本部分;每一個C/C++程序必須有、且只能有一個main函數(shù);無論main函數(shù)放在文件中什么位置(開頭、中間或最后),程序總是從main()函數(shù)開始運行。/*我的第一個程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出
return0;}45main()函數(shù)的主體是用一對花括號包起來的兩條語句。第一條語句的功能是:調(diào)用cout<<
進行輸出。程序運行時將在輸出窗口按原樣顯示一對英文雙引號中的字符序列:Hello,world!
,然后輸出一個endl。endl
是C++系統(tǒng)內(nèi)部定義好的符號常量“換行符”。效果是使屏幕上的光標移動到下一行(以供后續(xù)輸出)。/*我的第一個程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){
cout<<"Hello,world!"<<endl;//屏幕輸出
return0;}46(5)return0;程序運行完畢時,通常要返回給系統(tǒng)一個值,把自己的運行情況告訴系統(tǒng)。通常以0表示工作正常。/*我的第一個程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出
return0;}47準備性的代碼行int
main(){//函數(shù)體開始函數(shù)體}//函數(shù)體結(jié)束由上例可知,C/C++程序的一般結(jié)構(gòu)如下:函數(shù)頭函數(shù)體/*我的第一個程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出
return0;}48語句與復(fù)合語句:C/C++程序中對計算機的操作是由函數(shù)中的語句完成的。語句是程序的基本單位,每條語句以分號為結(jié)束符,分號是語句的一部分。用一對花括號把0個或多個語句括起來,就構(gòu)成了復(fù)合語句(復(fù)合結(jié)構(gòu))。main函數(shù)的主體就是一個復(fù)合語句。C/C++程序書寫格式自由,一行內(nèi)可以寫幾個語句,也可以把一個語句分開寫在多行上。例如下面都是合法的寫法: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但是在實踐中,程序可能包含很多語句,邏輯結(jié)構(gòu)可能很復(fù)雜,因此應(yīng)該采用良好的排版格式寫出,所用格式應(yīng)很好體現(xiàn)程序的層次結(jié)構(gòu),反映程序中各個部分之間的關(guān)系。通常要求:(1)在程序里適當?shù)丶尤胍恍┛招?,分隔程序中處于同一層次的不同部分;?)同層次的不同部分相互對齊排列,下一層的內(nèi)容適當縮進(在一行開始增加制表符或空格)并相互對齊,使程序結(jié)構(gòu)更清晰;(3)程序中寫一些注釋。初學(xué)者應(yīng)該遵循這些書寫格式!/*我的第一個程序:在屏幕上輸出字符串*/#include<iostream>usingnamespacestd;intmain(){ cout<<"Hello,world!"<<endl;//屏幕輸出
return0;}51注釋縮進空行前面是一個簡單的示例程序,目的是說明C/C++程序中的基本結(jié)構(gòu)。面對實際問題進行程序設(shè)計以解答問題時,首先要分析問題,設(shè)計解決辦法,然后再編寫程序。源程序要保存為計算機上的文件以供后續(xù)處理。這稱為源程序文件(簡稱為源文件)。C/C++源文件通常以“cpp”作為擴展名。C源文件也可以用“c”作為擴展名。5253程序從編輯到最終順利執(zhí)行,通常需要反復(fù)修改,排除其中存在的錯誤,這個過程稱為程序調(diào)試。分析問題,
設(shè)計解決辦法編寫程序編譯連接調(diào)試運行發(fā)現(xiàn)錯誤發(fā)現(xiàn)錯誤發(fā)現(xiàn)錯誤程序開發(fā)過程*.c或*.cpp*.obj*.exe程序開發(fā)和調(diào)試的另一個流程圖:5455初學(xué)者有一種常見的誤解,以為程序設(shè)計就是“寫程序、編譯、運行、完事”。這種理解是錯誤的。應(yīng)該強調(diào):(1)程序開發(fā)工作的第一步是分析問題并設(shè)計解決方案,這是一項重要的腦力勞動。只有經(jīng)過充分思考并設(shè)想出了合理的解決辦法,才能動手開始編寫程序。(2)程序常常可能含有一些明顯的或隱藏的錯誤,因此需要進行程序除錯(debug)和調(diào)試(test)。此外,完成了的程序,也常常需要進一步完善或修改擴充。這些也是重要的編程工作。56五、程序除錯程序中的錯誤,其實都是編程者自己犯的錯誤,并沒有其它客觀原因。程序除錯就是找到并清除自己開發(fā)程序的過程中所犯的錯誤。程序中的錯誤可以大致分為兩類:語法錯誤(入門時常見)邏輯錯誤(進階學(xué)習(xí)時常見)需要熟練掌握程序開發(fā)系統(tǒng)的使用方法,更需要積極開動腦筋,認真觀察、分析和思考。571.4集成開發(fā)環(huán)境Dev-C++使用簡介老師演示第一次上機操作的過程。打開“小龍Dev-C++”主頁
https://devcpp.gitee.io下載安裝文件,并在本機上安裝小龍Dev-C++編輯源程序,保存源程序文件編譯源程序,排除可能的錯誤運行程序,查看運行結(jié)果58菜單欄工具欄管理器面板源文件編輯區(qū)信息面板(折疊狀態(tài),可以展開)狀態(tài)欄小龍Dev-C++的工作界面:59打開
關(guān)閉
撤消
重做
剪切
復(fù)制
粘貼
查找
主頁
新建源文件
保存
全部保存
插入代碼塊
行注釋
編譯
運行
編譯運行
調(diào)試
停止
下一行
單步進入
跳出函數(shù)熟記工具欄上的各個按鈕的功能:編寫程序:基本編輯操作:根據(jù)當前選定的輸入法輸入英文或中文;按回車鍵(Enter)換行;用光標鍵在文字中移動光標;退格鍵(Backspace)刪除光標左邊的字符,刪除鍵(Delete)刪除光標右邊的字符;插入鍵(Insert)鍵切換文字的插入和覆蓋方式60功能鍵區(qū)狀態(tài)指示燈編輯鍵區(qū)副鍵盤主鍵盤區(qū)(字母、數(shù)字、符號鍵)用于組合快捷鍵退格鍵大小寫制表鍵回車Shift:臨時切換字母大小寫,數(shù)字符號鍵上方的符號快捷菜單鍵空格數(shù)字
鎖定鍵向左刪除向右刪除Hello,|world!標準鍵盤布局和功能說明61切換插入和覆蓋模式覆蓋模式:光標為小方塊,鍵入的字符覆蓋右邊字符插入模式:光標為小豎線,插入字符,右邊字符向右移動小知識:出現(xiàn)覆蓋模式時,再按一次
Insert
即可切換到插入模式!62筆記本電腦的鍵盤Fn鍵觸控板電源指示燈指紋識別無線網(wǎng)卡開關(guān)63初學(xué)者在編輯源程序時需要注意的事項:在源程序中添加一些空行有利于查看;在源程序中應(yīng)該嚴格地使用縮進:鍵入制表符(Tab)或使用退格鍵(BackSpace)。用鼠標切換中/英文輸入法,或者用快捷鍵
Ctrl+Shift(按住Ctrl鍵不放,再按其它鍵)注意中英文字符的區(qū)別:英文分號
;
英文引號
″″中文分號;中文引號
“”
(非法中文字符顯示為粗體紅色帶下劃線)641、點擊保存按鈕2、設(shè)定保存位置
(桌面或其它文件夾);3、輸入文件名;4、文件名出現(xiàn)在窗口標題欄和標簽頁保存源代碼文件:65完成編輯,點擊“編譯”按鈕就可以進行編譯。編譯時,如果源程序含有錯誤,則會顯示錯誤信息。用戶需要分析錯誤信息,并修改源程序。66初學(xué)者容易編譯出錯的例子(1):錯誤原因:缺失英文分號解決辦法:補充鍵入該字符67初學(xué)者容易編譯出錯的例子(2):錯誤原因:缺失英文雙引號解決辦法:補充鍵入該字符68初學(xué)者容易編譯出錯的例子(3):錯誤原因:非法的中文雙引號解決辦法:把中文雙引號改為英文雙引號經(jīng)驗技巧:出現(xiàn)大量錯誤時,首先注意排除第一個錯誤,然后重新編譯,可能會消除很多錯誤,或產(chǎn)生新的錯誤。69初學(xué)者容易編譯出錯的例子(4):錯誤原因:main寫成了mian解決辦法:改正為main70經(jīng)過反復(fù)修改,消除源代碼中的編輯錯誤,最終編譯連接成功,生成可執(zhí)行文件。編輯器下方顯示編譯日志。71點擊“運行”按鈕,運行編譯連接所生成的可執(zhí)行文件。也可點擊“編譯運行”按鈕72文字界面程序運行時會出現(xiàn)控制臺窗口:2、程序正常結(jié)束時,應(yīng)該正常關(guān)閉該窗口。(如果未正常關(guān)閉,以后可能出現(xiàn)奇怪的問題。)1、應(yīng)該認真閱讀窗口中所顯示的信息,是否為用戶預(yù)想的結(jié)果?73源程序文件可執(zhí)行程序文件鼠標雙擊可執(zhí)行程序,就可運行它。(如果出錯,需要設(shè)置編譯器為靜態(tài)鏈接)在文件管理器中可以看到這些文件:74預(yù)處理連接源程序
(*.c,*.cpp)目標模塊(*.obj)可執(zhí)行程序(*.exe)編譯用鍵盤和鼠標操作,利用菜單和工具欄,編輯源程序,并保存源程序文件到本機。執(zhí)行分析思考編程人員語言函數(shù)庫點擊編譯和運行按鈕程序開發(fā)的實際操作75練習(xí)題計算機程序設(shè)計語言可以分為
機器語言、匯編語言
和
高級語言。C語言有兩個主要的技術(shù)標準:ANSIC
和
C99。用戶編寫的程序源代碼文件稱為源程序文件(源文件)。C語言源文件的擴展名是c
,也可以按照C++語言的規(guī)則寫為cpp
。C/C++源程序需要經(jīng)過編譯和連接才能生成可執(zhí)行文件,擴展名為exe。一個C/C++語言程序必須包含一個名為main的函數(shù),也稱為主函數(shù)。C/C++語言程序總是從main函數(shù)開始執(zhí)行的。開發(fā)程序時常常使用一個集成了文本編輯、程序編譯鏈接、程序執(zhí)行、程序調(diào)試的軟件。這種軟件被稱為
集成開發(fā)環(huán)境(IDE
)。在編輯源程序文件時,常用按鍵的功能是:制表鍵(Tab):鍵入一個制表符換檔鍵(shift):輸入字符鍵上方字符或更換大小寫退格鍵(Backspace):刪除光標左邊字符或所選字符刪除鍵(Delete):刪除光標右邊字符或所選字符插入鍵(Insert):切換插入模式和改寫模式編譯程序時如果出現(xiàn)“非法字符‘\241’在程序中”的錯誤信息,原因是
程序中有非法的中文字符。76教學(xué)安排課后作業(yè):ptop-課后作業(yè)-1.docx網(wǎng)址:/devcpp/ptop/從“課后作業(yè)”文件夾中下載。該文件中以隱藏文字的形式包含了答案。點擊WPS或Word中的“顯示/隱藏段落標記”可以顯示或隱藏。打印時點擊“打印...”按鈕,在彈出的“打印”對話框中點擊左下方的“選項”,在彈出的對話框中選擇是否打印隱藏文字。77本頁隱藏,不播放《高級語言程序設(shè)計》
首次上機編程實驗78首次上機時的基本要求:聽從老師指導(dǎo),嚴格按照老師的要求進行操作。這些操作在將來要重復(fù)用到,這一次就要學(xué)會。跟隨老師說明的進度進行操作。提前完成操作時請耐心地稍作等待;操作滯后時請盡快舉手呼喚老師前來指導(dǎo),或向旁邊同學(xué)請教。不要跳過老師要求的某些操作。老師在這次上機時管得比較嚴格。在以后的上機練習(xí)中,老師會給同學(xué)們很大的自由。791、在機房里打開一臺計算機(如果無法啟動就馬上換一臺),檢查本機是否能正常上網(wǎng):屏幕右下角的托盤處是否顯示有網(wǎng)絡(luò)連接圖標?如果網(wǎng)絡(luò)不正常(圖標為),則檢查主機箱背后的網(wǎng)線連接,插好網(wǎng)線。如果仍然網(wǎng)絡(luò)不正常,就馬上換一臺計算機??傊?,應(yīng)該盡快選用一臺能正常工作的計算機。
(不要期望老師當場修理計算機給你用!)請把出錯的計算機告訴上課老師,以便機房管理老師將來進行維修。802、連接FTP服務(wù)器機房里有一臺計算機提供了
FTP(文件傳輸)服務(wù),上機時需要從它下載文件,或上傳文件到它。雙擊打開“此電腦”或資源管理器,在地址欄鍵入FTP服務(wù)器的網(wǎng)址并按回車鍵:0這樣就會連接到FTP服務(wù)器。如果未連接,有可能是服務(wù)器未打開(請呼叫老師),也可能是本機網(wǎng)絡(luò)有問題。調(diào)整這個FTP窗口的大小,并拖動它到桌面靠右的位置,使自己仍然看到本機桌面。81教師事先準備好FTP服務(wù)器,并放置一些示例文件以供練習(xí)。記在書上或筆記本上!下載文件:鼠標單擊選中FTP服務(wù)器上的文件,然后拖動到本機的桌面上。然后在本機用鼠標雙擊打開已下載到的文件。你的計算機上是否已經(jīng)安裝了
小龍Dev-C++?如果尚未安裝,請在FTP服務(wù)器中找到它的安裝文件,下載到本機,然后進行安裝。雙擊桌面上的“Dev-C++”圖標,啟動該軟件。823、認識Dev-C++的工作界面83菜單欄工具欄管理器面板源文件編輯區(qū)信息面板(折疊狀態(tài),可以展開)狀態(tài)欄4、了解軟件的菜單和工具欄(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校心理健康節(jié)活動方案策劃全解析
- 小學(xué)數(shù)學(xué)作業(yè)設(shè)計策略與技巧
- 德育教育在醫(yī)療領(lǐng)域的應(yīng)用與展望
- 小學(xué)數(shù)學(xué)教育在國際競爭中的角色
- 小學(xué)生語文閱讀能力培養(yǎng)的實踐研究
- 家庭教育中的運動技能培養(yǎng)與健康習(xí)慣養(yǎng)成
- 教育與科技融合下的醫(yī)學(xué)影像技術(shù)-以實時超聲科為例
- 家居裝飾品牌形象的塑造與傳播
- 二零二五年度童裝品牌代理銷售合同2篇
- 提升語文學(xué)習(xí)模板
- 十二歲生日慶典組委會事項
- 危重癥護理組組長競聘
- 航空工程材料(第3版)課件 6有色金屬
- 20S121生活熱水加熱機組(熱水機組選用與安裝)
- 印刷廠廠長年終小結(jié)
- 酒泉市嘉瑞礦業(yè)有限公司甘肅省玉門市榆樹溝山地區(qū)金礦礦產(chǎn)資源開發(fā)與恢復(fù)治理方案
- 2024年宜春職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- MOOC 工程圖學(xué)-天津大學(xué) 中國大學(xué)慕課答案
- 口腔正畸健康知識講座
- 凍榴蓮行業(yè)分析
- 2022年高考英語真題分類匯編-七選五(真題+答案解析)
評論
0/150
提交評論