




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、6/9/202211主講主講 中南大學(xué)軟件學(xué)院中南大學(xué)軟件學(xué)院 譚長(zhǎng)庚譚長(zhǎng)庚2015.92015.96/9/20222Chapter 1 6/9/20223 Some Questions1用過(guò)計(jì)算機(jī)?用過(guò)計(jì)算機(jī)?2都用過(guò)什么軟件(程序)?都用過(guò)什么軟件(程序)?3了解計(jì)算機(jī)信息的表示(補(bǔ)碼)了解計(jì)算機(jī)信息的表示(補(bǔ)碼),數(shù)制?數(shù)制?4程序是?學(xué)過(guò)編程?程序設(shè)計(jì)有多難?程序是?學(xué)過(guò)編程?程序設(shè)計(jì)有多難?6/9/20224第一個(gè)程序:第一個(gè)程序:Hello C+#include ”stdafx.h”#include int main() std:coutHello C+; system( paus
2、e ); return 0;如何學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言如何學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言1.1.模仿模仿2.2.多讀、寫(xiě)多讀、寫(xiě)3.3.提高自主學(xué)習(xí)的能力提高自主學(xué)習(xí)的能力 * * 主動(dòng)性主動(dòng)性 * * 發(fā)現(xiàn)問(wèn)題發(fā)現(xiàn)問(wèn)題 * * 解決問(wèn)題:解決問(wèn)題: * * 方法方法: :網(wǎng)、討論、試網(wǎng)、討論、試 * * 表達(dá)(程序表達(dá)(程序, ,算法描述)算法描述)模仿輸出模仿輸出“Welcome to CSU”輸出結(jié)果:輸出結(jié)果:Hello C+6/9/20225擴(kuò)展程序:求圓的面積擴(kuò)展程序:求圓的面積,會(huì)求嗎?會(huì)求嗎?#include using namespace std;int main() double radius
3、; double area; /Step 1: Read in radius-輸入輸入 cinradius; /Step 2:Compute area-處理處理 area = radius*radius*3.14; /Step 3:Display the area-輸出輸出 cout The area is ; cout area endl;輸入輸入處理處理輸出結(jié)果輸出結(jié)果6/9/20226求長(zhǎng)方形的面積:輸入兩條邊到求長(zhǎng)方形的面積:輸入兩條邊到a,b,面積送,面積送s#include using namespace std;int main() double a,b; double ; ci
4、na; /Step 1: Read in a ; / : Read in b ; /Step 2:Compute area cout x-y=-00000011X-Y=-3求補(bǔ)運(yùn)算 :將一個(gè)補(bǔ)碼連同符號(hào)位一起,按位求反、末位加一將一個(gè)補(bǔ)碼連同符號(hào)位一起,按位求反、末位加一求真值:求真值: 一個(gè)負(fù)數(shù)的補(bǔ)碼再求補(bǔ)一個(gè)負(fù)數(shù)的補(bǔ)碼再求補(bǔ)= =該數(shù)正數(shù)的原碼(該數(shù)正數(shù)的原碼(補(bǔ)上負(fù)號(hào)就得負(fù)數(shù)的真值補(bǔ)上負(fù)號(hào)就得負(fù)數(shù)的真值)結(jié)果為補(bǔ)碼結(jié)果為補(bǔ)碼6/9/2022411.3.6 非數(shù)值信息的表示非數(shù)值信息的表示n西文字符:西文字符:nASCII碼:用7位二進(jìn)制數(shù)表示一個(gè)字符,最多可以表示27=128個(gè)字符nEB
5、CDIC碼:用8位二進(jìn)制數(shù)表示一個(gè)字符,最多可以表示28=256個(gè)字符n漢字:應(yīng)用較為廣泛的是國(guó)家標(biāo)準(zhǔn)信息交換用漢字編碼(GB2312-80標(biāo)準(zhǔn)),簡(jiǎn)稱(chēng)國(guó)標(biāo)碼。是二字節(jié)碼,用二個(gè)七位二進(jìn)制數(shù)編碼表示一個(gè)漢字。nUnicode:2字節(jié)字符編碼,它為每種語(yǔ)言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿(mǎn)足跨語(yǔ)言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。1990年開(kāi)始研發(fā),1994年正式公布。6/9/2022421.3.7 十進(jìn)制數(shù)的十進(jìn)制數(shù)的BCD碼表示碼表示nBCD(Binary Coded Decimal)碼是十進(jìn)制數(shù)的另)碼是十進(jìn)制數(shù)的另一種二進(jìn)制編碼形式。它有利于用二進(jìn)制來(lái)精確表示一種二進(jìn)制編碼
6、形式。它有利于用二進(jìn)制來(lái)精確表示十進(jìn)制數(shù)。十進(jìn)制數(shù)。nBCD碼有多種形式,常用的是碼有多種形式,常用的是8421碼,每一位十進(jìn)碼,每一位十進(jìn)數(shù)碼用四位二進(jìn)數(shù)碼表示,不允許出現(xiàn)數(shù)碼用四位二進(jìn)數(shù)碼表示,不允許出現(xiàn)10101111四種組合。四種組合。0 000050101100001 00001 000160110 110001 00012 001070111120001 00103 001181000 1230001 0010 00114 01009100112340001 0010 0011 0100nBCD碼常采用壓縮形式存貯:一個(gè)字節(jié)存放二位碼常采用壓縮形式存貯:一個(gè)字節(jié)存放二位BCD碼。碼
7、。6/9/2022431.4 程序設(shè)計(jì)語(yǔ)言 n程序設(shè)計(jì)的結(jié)果必然要用一種能被計(jì)算機(jī)程序設(shè)計(jì)的結(jié)果必然要用一種能被計(jì)算機(jī)接受的語(yǔ)言表示出來(lái),即編程實(shí)現(xiàn)接受的語(yǔ)言表示出來(lái),即編程實(shí)現(xiàn)(Coding)。)。n根據(jù)計(jì)算機(jī)指令系統(tǒng)和人們解決問(wèn)題所采根據(jù)計(jì)算機(jī)指令系統(tǒng)和人們解決問(wèn)題所采用的描述語(yǔ)言(如:數(shù)學(xué)語(yǔ)言)的接近程用的描述語(yǔ)言(如:數(shù)學(xué)語(yǔ)言)的接近程度,常常把程序語(yǔ)言分為:度,常常把程序語(yǔ)言分為:n 低級(jí)語(yǔ)言n 高級(jí)語(yǔ)言 n通常所講的通常所講的程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言往往指的是高級(jí)往往指的是高級(jí)語(yǔ)言。語(yǔ)言。6/9/2022441.低級(jí)語(yǔ)言和高級(jí)語(yǔ)言n低級(jí)語(yǔ)言低級(jí)語(yǔ)言:是指特定計(jì)算機(jī)能夠直接理解的語(yǔ)言
8、:是指特定計(jì)算機(jī)能夠直接理解的語(yǔ)言(或與之直接對(duì)應(yīng)的語(yǔ)言):(或與之直接對(duì)應(yīng)的語(yǔ)言):n機(jī)器語(yǔ)言:采用指令編碼和數(shù)據(jù)的存儲(chǔ)位置來(lái)表示操作以及操作數(shù); n匯編語(yǔ)言:是用符號(hào)名來(lái)表示操作和操作數(shù)位置,以增加程序的易讀性。需要翻譯(匯編)成機(jī)器語(yǔ)言才能執(zhí)行。 n高級(jí)語(yǔ)言高級(jí)語(yǔ)言:是指人容易理解和有利于人對(duì)解題過(guò):是指人容易理解和有利于人對(duì)解題過(guò)程進(jìn)行描述的程序語(yǔ)言。典型的高級(jí)語(yǔ)言有:程進(jìn)行描述的程序語(yǔ)言。典型的高級(jí)語(yǔ)言有:nFORTRAN、COBOL、Basic、Pascal、C、Ada、Modula-2、Lisp、Prolog、Simula、Smalltalk、C+、Java等 6/9/20224
9、5 2.低級(jí)語(yǔ)言與高級(jí)語(yǔ)言程序的比較低級(jí)語(yǔ)言與高級(jí)語(yǔ)言程序的比較n計(jì)算計(jì)算a+b*c-d的值,的值,n用匯編語(yǔ)言可寫(xiě)成:mov ax,bmul ax,cadd ax,asub ax,dmov r,axn用高級(jí)語(yǔ)言可寫(xiě)成:r = a+b*c-d 6/9/202246n低級(jí)語(yǔ)言低級(jí)語(yǔ)言n優(yōu)點(diǎn):寫(xiě)出的程序效率比較高,包括執(zhí)行速度快和占用空間少。n缺點(diǎn):程序難以設(shè)計(jì)、理解與維護(hù),難以保證程序的正確性。另外,可移植性差。n高級(jí)語(yǔ)言高級(jí)語(yǔ)言n優(yōu)點(diǎn):程序容易設(shè)計(jì)、理解與維護(hù),容易保證程序正確性??梢浦残院胣缺點(diǎn):用其編寫(xiě)的程序相對(duì)于用低級(jí)語(yǔ)言編寫(xiě)的程序效率要低,翻譯成的目標(biāo)代碼量較大 。6/9/202247
10、3.高級(jí)語(yǔ)言的翻譯n用高級(jí)語(yǔ)言書(shū)寫(xiě)的程序須翻譯成機(jī)器語(yǔ)言程序用高級(jí)語(yǔ)言書(shū)寫(xiě)的程序須翻譯成機(jī)器語(yǔ)言程序才能在計(jì)算機(jī)上運(yùn)行。翻譯方式有兩種:才能在計(jì)算機(jī)上運(yùn)行。翻譯方式有兩種:n編譯n把高級(jí)語(yǔ)言程序(稱(chēng)為源程序)首先翻譯成功能上等價(jià)的機(jī)器語(yǔ)言程序(稱(chēng)為目標(biāo)代碼程序)或匯編語(yǔ)言程序(再通過(guò)匯編程序把它翻譯成目標(biāo)代碼程序),然后執(zhí)行目標(biāo)代碼程序。n在目標(biāo)代碼程序的執(zhí)行中不再需要源程序。n解釋n對(duì)源程序中的語(yǔ)句進(jìn)行逐條翻譯并執(zhí)行,翻譯完了程序也就執(zhí)行完了。n這種翻譯方式不產(chǎn)生目標(biāo)程序,程序的每次執(zhí)行都需要源程序。 6/9/202248n把高級(jí)語(yǔ)言程序翻譯成機(jī)器語(yǔ)言程序的工把高級(jí)語(yǔ)言程序翻譯成機(jī)器語(yǔ)言程序
11、的工作一般由程序來(lái)實(shí)現(xiàn),根據(jù)翻譯方式可把作一般由程序來(lái)實(shí)現(xiàn),根據(jù)翻譯方式可把翻譯程序分為:翻譯程序分為:n編譯程序編譯程序n解釋程序解釋程序 n一般來(lái)說(shuō),一般來(lái)說(shuō),n編譯執(zhí)行比解釋執(zhí)行效率高n解釋執(zhí)行容易實(shí)現(xiàn)平臺(tái)無(wú)關(guān)6/9/2022491.5 C+語(yǔ)言的產(chǎn)生nC+是貝爾實(shí)驗(yàn)室的是貝爾實(shí)驗(yàn)室的Bjarne Stroustrup 為支持為支持面向?qū)ο竺嫦驅(qū)ο蟪绦蛟O(shè)計(jì)而設(shè)計(jì)的一種程序設(shè)計(jì)而設(shè)計(jì)的一種 系統(tǒng)程序語(yǔ)言系統(tǒng)程序語(yǔ)言/wiki/Bjarne_Stroustrupn從從C語(yǔ)言發(fā)展演變而來(lái)的,首先是一個(gè)更好的語(yǔ)言發(fā)展演變而來(lái)的,首先是一個(gè)更好的Cn引入
12、了類(lèi)的機(jī)制,最初的引入了類(lèi)的機(jī)制,最初的C+被稱(chēng)為被稱(chēng)為“帶類(lèi)的帶類(lèi)的C”n1983年正式取名為年正式取名為C+n從從1989年開(kāi)始年開(kāi)始C+語(yǔ)言的標(biāo)準(zhǔn)化工作語(yǔ)言的標(biāo)準(zhǔn)化工作n于于1994年制定了年制定了ANSI C+標(biāo)準(zhǔn)草案標(biāo)準(zhǔn)草案n于于1998年年11月被國(guó)際標(biāo)準(zhǔn)化組織(月被國(guó)際標(biāo)準(zhǔn)化組織(ISO)批準(zhǔn))批準(zhǔn)為國(guó)際標(biāo)準(zhǔn),成為目前的為國(guó)際標(biāo)準(zhǔn),成為目前的C+6/9/2022501.6 C+程序的組成n邏輯上邏輯上,一個(gè),一個(gè)C+程序程序n由一些函數(shù)(子程序)、類(lèi)、全局變量/對(duì)象的定義構(gòu)成,其中必須有且僅有一個(gè)名字為main的函數(shù)。n函數(shù)由函數(shù)名、參數(shù)和返回類(lèi)型、局部變量/對(duì)象的定義以及語(yǔ)句序
13、列構(gòu)成;n類(lèi)由數(shù)據(jù)成員和成員函數(shù)構(gòu)成。n變量或?qū)ο蟮亩x可以出現(xiàn)在函數(shù)的外部和內(nèi)部,而語(yǔ)句只能出現(xiàn)在函數(shù)內(nèi)部。nC+程序從函數(shù)main開(kāi)始執(zhí)行。6/9/202251 /This is a simple C+ program#include /對(duì)對(duì)C+標(biāo)準(zhǔn)庫(kù)中的程序?qū)嶓w進(jìn)行聲明標(biāo)準(zhǔn)庫(kù)中的程序?qū)嶓w進(jìn)行聲明using namespace std; /指定使用標(biāo)準(zhǔn)庫(kù)的名空間指定使用標(biāo)準(zhǔn)庫(kù)的名空間 main() /主函數(shù)主函數(shù) double x,y,z; /定義局部變量定義局部變量x、y和和zcout x y; /從鍵盤(pán)輸入數(shù)據(jù)給變量從鍵盤(pán)輸入數(shù)據(jù)給變量x和和yz=x+y; /將將x+y送
14、送zcoutx+y=zendl; /輸出結(jié)果輸出結(jié)果z system( pause );return 0; /程序結(jié)束。程序結(jié)束。 上述程序的運(yùn)行結(jié)果為:上述程序的運(yùn)行結(jié)果為:Enter two numbers: 7.2 9.3 7.2 + 9.3 = 16.56/9/202252n物理上物理上,一個(gè),一個(gè)C+程序程序n可以放在一個(gè)或多個(gè)源文件(模塊)中n每個(gè)源文件包含一些函數(shù)、類(lèi)和外部變量/對(duì)象的定義,其中有且僅有一個(gè)文件中包含一個(gè)函數(shù)main。(一個(gè)工程中只能有一個(gè)main函數(shù))n每個(gè)源文件可以分別編譯。 6/9/2022531.C+的字符集的字符集n構(gòu)成語(yǔ)言的構(gòu)成語(yǔ)言的基本符號(hào)基本符號(hào)稱(chēng)
15、為語(yǔ)言的稱(chēng)為語(yǔ)言的字符集。nC+的字符集由下列符號(hào)構(gòu)成:的字符集由下列符號(hào)構(gòu)成:n大小寫(xiě)英文字母:az, AZn數(shù)字:09n特殊字符:! # % & * _ - + = / | . , : ; ? “ ( ) 空格空格 橫向制表橫向制表 縱向制表縱向制表 換頁(yè)換頁(yè) 換行換行 6/9/2022542.標(biāo)識(shí)符(Identifier,ID )n標(biāo)識(shí)符由字母或下劃線(xiàn)開(kāi)始,由字母、數(shù)字、下劃線(xiàn)組成。 student、student_name、x_1、_name1合法合法 8bc、123不合法n標(biāo)識(shí)符通常用來(lái)給程序中的標(biāo)識(shí)符通常用來(lái)給程序中的實(shí)體實(shí)體命名,程序?qū)嶓w命名,程序?qū)嶓w包括:包括:常量常量
16、、變量變量、函數(shù)函數(shù)、對(duì)象對(duì)象、類(lèi)型類(lèi)型(包括(包括類(lèi)類(lèi))、)、標(biāo)號(hào)標(biāo)號(hào)等。等。n其有效長(zhǎng)度為131個(gè)字符,長(zhǎng)度超過(guò)31個(gè)字符者只識(shí)別前31個(gè)字符,VC+標(biāo)識(shí)符長(zhǎng)度為1247個(gè)字符。6/9/202255n在使用標(biāo)識(shí)符時(shí)應(yīng)注意以下幾點(diǎn):在使用標(biāo)識(shí)符時(shí)應(yīng)注意以下幾點(diǎn):n大小寫(xiě)字母有區(qū)別,如:abc、Abc與ABC不同。n關(guān)鍵詞不能作為用戶(hù)自定義的標(biāo)識(shí)符,它們有特殊的作用。n具體編譯程序可能會(huì)限制標(biāo)識(shí)符的長(zhǎng)度。n以?xún)蓚€(gè)下劃線(xiàn)開(kāi)頭或以一個(gè)下劃線(xiàn)后跟一個(gè)大寫(xiě)字母開(kāi)頭的標(biāo)識(shí)符往往在C+語(yǔ)言?xún)?nèi)部實(shí)現(xiàn)中用到,程序中不要用這些標(biāo)識(shí)符作為程序的全局標(biāo)識(shí)符。n對(duì)不同種類(lèi)的程序?qū)嶓w最好采用不同風(fēng)格的標(biāo)識(shí)符,以提高程序
17、的易讀性。例如:PI(常量)、StudentType(類(lèi)型)、student(變量、對(duì)象或函數(shù)等) 6/9/202256例例: 判斷下面哪些是合法的標(biāo)識(shí)符:判斷下面哪些是合法的標(biāo)識(shí)符: MyFileSalary 94amountvoid94SalarySalary94$amountf3.5Num_of_Student6/9/202257n關(guān)鍵字是指語(yǔ)言預(yù)定義的標(biāo)識(shí)符,它們有固是指語(yǔ)言預(yù)定義的標(biāo)識(shí)符,它們有固定的作用和含義,在程序中不能用作其它目定的作用和含義,在程序中不能用作其它目的。的。 例如:例如:if、for、switch等等n關(guān)鍵字全部由關(guān)鍵字全部由小寫(xiě)字母小寫(xiě)字母組成。標(biāo)準(zhǔn)組成。標(biāo)準(zhǔn)
18、C+(ISO14882)定義了)定義了74個(gè)關(guān)鍵字,具體的個(gè)關(guān)鍵字,具體的C+編譯器會(huì)做一些增刪。常用關(guān)鍵字參見(jiàn)編譯器會(huì)做一些增刪。常用關(guān)鍵字參見(jiàn)教材的表教材的表1-13.關(guān)鍵字(keyword)6/9/202258數(shù)據(jù)類(lèi)型說(shuō)數(shù)據(jù)類(lèi)型說(shuō)明符與修飾明符與修飾符符bool char wchar_t class const double enum float int long short signed struct union unsigned void volatile存儲(chǔ)類(lèi)型說(shuō)存儲(chǔ)類(lèi)型說(shuō)明符明符auto extern inline register static訪問(wèn)說(shuō)明符訪問(wèn)說(shuō)明符friend
19、private protected public其它說(shuō)明符其它說(shuō)明符asm explicit namespace operator template this typedef typename using virtual 語(yǔ)句與標(biāo)號(hào)語(yǔ)句與標(biāo)號(hào)break case catch continue default do else for goto if return switch throw try while 運(yùn)算符及邏運(yùn)算符及邏輯值輯值delete false new sizeof true表表1-1 C+-1 C+常用關(guān)鍵字及分類(lèi)常用關(guān)鍵字及分類(lèi) ok6/9/202259n字面常量 用于表示在
20、程序中直接書(shū)寫(xiě)的常量,又稱(chēng)用于表示在程序中直接書(shū)寫(xiě)的常量,又稱(chēng)直接量(literal)。如:)。如:128、3.14、A、“abcd”等等 。n操作符 用于描述運(yùn)算。如:用于描述運(yùn)算。如:+,-,*,/, =, ,=,=,|,&等。等。n標(biāo)點(diǎn)符號(hào) 起到某些語(yǔ)法、語(yǔ)義上的作用。如:逗號(hào)、起到某些語(yǔ)法、語(yǔ)義上的作用。如:逗號(hào)、分號(hào)、冒號(hào)、括號(hào)等。分號(hào)、冒號(hào)、括號(hào)等。n空白符:空格符、制表符、回車(chē)符、注釋符空格符、制表符、回車(chē)符、注釋符 4.其它成分6/9/202260n注釋 是為了方便對(duì)程序的理解而加在程序是為了方便對(duì)程序的理解而加在程序中的說(shuō)明性文字信息。注釋分為:中的說(shuō)明性文字信息。注
21、釋分為:n單行注釋?zhuān)簭姆?hào)/開(kāi)始到本行結(jié)束。n多行注釋?zhuān)阂苑?hào)/*開(kāi)始到符號(hào)*/結(jié)束。n續(xù)行符n一個(gè)單詞如果在一行中寫(xiě)不下(如一個(gè)很長(zhǎng)的一個(gè)單詞如果在一行中寫(xiě)不下(如一個(gè)很長(zhǎng)的字符串),則可以把它分幾行來(lái)寫(xiě),這時(shí),需字符串),則可以把它分幾行來(lái)寫(xiě),這時(shí),需要在每一行(最后一行除外)的后面加上一個(gè)要在每一行(最后一行除外)的后面加上一個(gè)續(xù)行符續(xù)行符。n續(xù)行符由一個(gè)反斜杠(續(xù)行符由一個(gè)反斜杠()后面緊跟一個(gè)換行符)后面緊跟一個(gè)換行符構(gòu)成。構(gòu)成。6/9/2022615.基本術(shù)語(yǔ)基本術(shù)語(yǔ)n源程序:源程序:n用源語(yǔ)言寫(xiě)的,有待翻譯的程序,如example.cppn目標(biāo)程序:目標(biāo)程序:n也稱(chēng)為結(jié)果程序,是
22、源程序通過(guò)翻譯程序加工以后所生成的程序。如example.objn翻譯程序:翻譯程序:n是指一個(gè)把源程序翻譯成等價(jià)的目標(biāo)程序的程序。6/9/202262n匯編程序:匯編程序:其任務(wù)是把用匯編語(yǔ)言寫(xiě)成的源程序,翻譯成機(jī)器語(yǔ)言形式的目標(biāo)程序。n編譯程序:編譯程序:若源程序是用高級(jí)程序設(shè)計(jì)語(yǔ)言所寫(xiě),經(jīng)翻譯程序加工生成目標(biāo)程序,那么,該翻譯程序就稱(chēng)為編譯程序。6/9/202263n解釋程序:解釋程序:這也是一種翻譯程序,同樣是將高級(jí)語(yǔ)言源程序翻譯成機(jī)器指令。它與編譯程序不同點(diǎn)就在于:它是邊翻譯邊執(zhí)行的,即輸入一句、翻譯一句、 執(zhí)行一句,直至將整個(gè)源程序翻譯并執(zhí)行完畢。6/9/2022641.7 程序設(shè)
23、計(jì)(Programming)n要使得計(jì)算機(jī)能完成各種任務(wù),就必須為它編寫(xiě)要使得計(jì)算機(jī)能完成各種任務(wù),就必須為它編寫(xiě)相應(yīng)的程序。相應(yīng)的程序。 n簡(jiǎn)單地說(shuō),程序設(shè)計(jì)就是為計(jì)算機(jī)編制程序的過(guò)簡(jiǎn)單地說(shuō),程序設(shè)計(jì)就是為計(jì)算機(jī)編制程序的過(guò)程,它涉及:程,它涉及:n程序設(shè)計(jì)方法n程序設(shè)計(jì)步驟 n程序設(shè)計(jì)語(yǔ)言等n程序設(shè)計(jì)本質(zhì)上可歸結(jié)為:程序設(shè)計(jì)本質(zhì)上可歸結(jié)為:n數(shù)據(jù)描述n數(shù)據(jù)操作(加工)描述n過(guò)程式(面向功能)、對(duì)象式(面向數(shù)據(jù))、函數(shù)過(guò)程式(面向功能)、對(duì)象式(面向數(shù)據(jù))、函數(shù)式等式等6/9/2022651.過(guò)程式程序設(shè)計(jì)n一種以一種以功能功能為中心、基于為中心、基于功能分解功能分解的程序設(shè)計(jì)范型。的程序設(shè)
24、計(jì)范型。n一個(gè)過(guò)程式程序由一些一個(gè)過(guò)程式程序由一些子程序子程序構(gòu)成,每個(gè)子程序?qū)?gòu)成,每個(gè)子程序?qū)?yīng)一個(gè)子功能。子程序描述了一系列的操作,它實(shí)應(yīng)一個(gè)子功能。子程序描述了一系列的操作,它實(shí)現(xiàn)了現(xiàn)了功能抽象功能抽象。n過(guò)程式程序的執(zhí)行過(guò)程體現(xiàn)為一系列的子程序調(diào)用。過(guò)程式程序的執(zhí)行過(guò)程體現(xiàn)為一系列的子程序調(diào)用。數(shù)據(jù)處于附屬地位,它獨(dú)立于子程序,在子程序調(diào)數(shù)據(jù)處于附屬地位,它獨(dú)立于子程序,在子程序調(diào)用時(shí)通過(guò)參數(shù)或全局變量傳給子程序使用。用時(shí)通過(guò)參數(shù)或全局變量傳給子程序使用。n下面的公式描述了過(guò)程式程序設(shè)計(jì)的本質(zhì):下面的公式描述了過(guò)程式程序設(shè)計(jì)的本質(zhì):程序程序 = 算法算法 + 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)6/9/
25、2022662.程序設(shè)計(jì)過(guò)程n明確問(wèn)題明確問(wèn)題 n搞清楚要解決的問(wèn)題并給出問(wèn)題的明確定義,搞清楚要解決的問(wèn)題并給出問(wèn)題的明確定義,即:做什么?即:做什么?n系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì) n給出問(wèn)題的解決方案,即:如何做?主要包括:給出問(wèn)題的解決方案,即:如何做?主要包括:n數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)n算法的設(shè)計(jì)算法的設(shè)計(jì) n如何組織上述兩者,屬于不同的程序設(shè)計(jì)范型。如何組織上述兩者,屬于不同的程序設(shè)計(jì)范型。6/9/202267n編程編程n選擇用某種語(yǔ)言進(jìn)行編程。n良好的程序設(shè)計(jì)風(fēng)格可以通過(guò)學(xué)習(xí)和訓(xùn)練來(lái)獲得。 n測(cè)試與調(diào)試測(cè)試與調(diào)試 n程序?qū)懞弥?,其中可能含有錯(cuò)誤。程序的邏輯錯(cuò)誤和運(yùn)行異常錯(cuò)誤一般可以通
26、過(guò)測(cè)試(test)來(lái)發(fā)現(xiàn)。n發(fā)現(xiàn)錯(cuò)誤給錯(cuò)誤定位的過(guò)程稱(chēng)為調(diào)試(debug)。 n運(yùn)行維護(hù)運(yùn)行維護(hù) n所有的測(cè)試手段只能發(fā)現(xiàn)程序中的錯(cuò)誤,而不能證明程序沒(méi)有錯(cuò)誤。n在使用中發(fā)現(xiàn)錯(cuò)誤并改錯(cuò)稱(chēng)為維護(hù)。程序設(shè)計(jì)步驟(續(xù))6/9/2022683.C+程序的編輯、編譯、調(diào)試與運(yùn)行步驟程序的編輯、編譯、調(diào)試與運(yùn)行步驟 n編輯編輯 n利用某個(gè)編輯程序(如:利用某個(gè)編輯程序(如:Windows平臺(tái)上的寫(xiě)字板、記平臺(tái)上的寫(xiě)字板、記事本、事本、Word等)把等)把C+源程序輸入到計(jì)算機(jī)中,并作源程序輸入到計(jì)算機(jī)中,并作為文本文件(稱(chēng)為為文本文件(稱(chēng)為源文件源文件)保存到外存(如硬盤(pán)等)中。)保存到外存(如硬盤(pán)等)中
27、。nC+源文件的文件名通常為:源文件的文件名通常為:*.cpp。n編譯編譯 n利用某個(gè)利用某個(gè)C+編譯程序?qū)Ρ4嬖谕獯嬷械木幾g程序?qū)Ρ4嬖谕獯嬷械腃+源程序進(jìn)源程序進(jìn)行編譯,編譯結(jié)果作為目標(biāo)文件保存到外存。行編譯,編譯結(jié)果作為目標(biāo)文件保存到外存。n目標(biāo)文件的文件名通常為:目標(biāo)文件的文件名通常為:*.obj。n編譯預(yù)處理程序:執(zhí)行編譯預(yù)處理命令。編譯預(yù)處理程序:執(zhí)行編譯預(yù)處理命令。 6/9/202269n鏈接鏈接n通過(guò)一個(gè)鏈接程序把所有目標(biāo)文件以及程序中用到通過(guò)一個(gè)鏈接程序把所有目標(biāo)文件以及程序中用到的一些系統(tǒng)功能所在的目標(biāo)文件(通常稱(chēng)為庫(kù)文件)的一些系統(tǒng)功能所在的目標(biāo)文件(通常稱(chēng)為庫(kù)文件)連接
28、起來(lái),作為一個(gè)可執(zhí)行文件保存到外存。連接起來(lái),作為一個(gè)可執(zhí)行文件保存到外存。n可執(zhí)行文件的文件名通常為:可執(zhí)行文件的文件名通常為:*.exe。 n運(yùn)行運(yùn)行n通過(guò)操作系統(tǒng)提供的應(yīng)用程序運(yùn)行機(jī)制,把某個(gè)可通過(guò)操作系統(tǒng)提供的應(yīng)用程序運(yùn)行機(jī)制,把某個(gè)可執(zhí)行文件裝入內(nèi)存,運(yùn)行其中的可執(zhí)行程序。執(zhí)行文件裝入內(nèi)存,運(yùn)行其中的可執(zhí)行程序。n在上述的編譯、鏈接和運(yùn)行過(guò)程中都有可能發(fā)在上述的編譯、鏈接和運(yùn)行過(guò)程中都有可能發(fā)現(xiàn)程序有錯(cuò)?,F(xiàn)程序有錯(cuò)。 整個(gè)過(guò)程可能會(huì)重復(fù)多次,直到整個(gè)過(guò)程可能會(huì)重復(fù)多次,直到程序得出正確的運(yùn)行結(jié)果。程序得出正確的運(yùn)行結(jié)果。 編輯編輯(.cpp)編譯編譯(.obj)鏈鏈接接(.exe)運(yùn)
29、行運(yùn)行輸出結(jié)果輸出結(jié)果6/9/202270Creating, Compiling, and Running Programs Source Code Create/Modify Source Code Compiler Executable Code Run Executable Code e.g., Welcome Result If compilation errors If runtime errors or incorrect result #include int main() / Display Welcome to C+ to the console std:cout Welco
30、me to C+! std:endl; return 0; Saved on the disk stored on the disk Source code (developed by the programmer) Machine Code program Linker stored on the disk An object file (e.g., Welcome.obj) is created. An executable file (e.g., Welcome.exe) is created. 6/9/2022714.C+集成開(kāi)發(fā)環(huán)境 n出現(xiàn)了很多出現(xiàn)了很多C+集成程序開(kāi)發(fā)環(huán)境,如:集
31、成程序開(kāi)發(fā)環(huán)境,如:nVisual C+nTurbo C+nC+ BuildernDev C+,等n在這些集成環(huán)境中,往往使用一條命令在這些集成環(huán)境中,往往使用一條命令(菜單項(xiàng))就能完成所有的步驟,并且,(菜單項(xiàng))就能完成所有的步驟,并且,一些開(kāi)發(fā)環(huán)境還提供了可視化的程序設(shè)計(jì)一些開(kāi)發(fā)環(huán)境還提供了可視化的程序設(shè)計(jì)支持和功能強(qiáng)大的程序動(dòng)態(tài)調(diào)試等工具。支持和功能強(qiáng)大的程序動(dòng)態(tài)調(diào)試等工具。 n(Visual C+ 6.0演示)演示)6/9/202272在VC環(huán)境下的編程步驟nstep 1 啟動(dòng)啟動(dòng)VC6.0nstep2 建立項(xiàng)目文件建立項(xiàng)目文件 3.選選控控制制 臺(tái)臺(tái)應(yīng)應(yīng)用用4.輸輸入入項(xiàng)項(xiàng)目目名名稱(chēng)
32、稱(chēng)6/9/202273nstep3 編輯源程序編輯源程序n點(diǎn)文件菜單的新建新建,選定源文件類(lèi)型選定源文件類(lèi)型,輸入文件名,點(diǎn)輸入文件名,點(diǎn)確定確定2.輸輸入入源源文文件件名名1.選選c+源源文文件件3.在此輸入程序語(yǔ)句在此輸入程序語(yǔ)句6/9/202274nstep4 點(diǎn)點(diǎn)文件文件菜單的菜單的存盤(pán)存盤(pán)(另存為另存為可以修改路徑與文件名)可以修改路徑與文件名)nstep5 編譯源程序編譯源程序nstep6 組建組建nstep7 運(yùn)行運(yùn)行1.點(diǎn)組建菜單點(diǎn)組建菜單或或點(diǎn)工具欄快捷圖標(biāo)點(diǎn)工具欄快捷圖標(biāo)2.觀察下面的信息提示,觀察下面的信息提示,0 errors,成功,成功6/9/202275常見(jiàn)的語(yǔ)法錯(cuò)
33、誤n缺少語(yǔ)句結(jié)束符缺少語(yǔ)句結(jié)束符“;”nC+語(yǔ)句以;結(jié)尾,在缺;號(hào)的語(yǔ)句后補(bǔ)上。n語(yǔ)句中出現(xiàn)有語(yǔ)句中出現(xiàn)有未知字符未知字符。nC2018是未知字符錯(cuò)誤編號(hào)。0 xa3、0 xbb是使用了全角分號(hào)(中文);改為英文的即可。6/9/202276常見(jiàn)的語(yǔ)法錯(cuò)誤n未定義的標(biāo)識(shí)符未定義的標(biāo)識(shí)符nC+標(biāo)識(shí)符要先定義后使用,變量c沒(méi)有定義,因之前有分號(hào)。該錯(cuò)有時(shí)是拼寫(xiě)錯(cuò)誤導(dǎo)致n一個(gè)項(xiàng)目中出現(xiàn)有多個(gè)一個(gè)項(xiàng)目中出現(xiàn)有多個(gè)main函數(shù)。函數(shù)。n一個(gè)項(xiàng)目只能有一個(gè)main函數(shù)n當(dāng)要編一個(gè)新的程序時(shí)必須新建一個(gè)項(xiàng)目6/9/202277Trace a Program Execution#include using na
34、mespace std;int main() double radius; double area; / Step 1: Read in radius radius = 20; / Step 2: Compute area area = radius * radius * 3.14; / Step 3: Display the area cout The area is ; cout area endl;no valueradiusallocate memory for radius6/9/202278Trace a Program Executionno valueradiusmemory#include using namespace std;int main() double radius; double area; / Step 1: Read in radius radius = 20; / Step 2: Compute area area = radius * radius * 3.14; / Step
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 停車(chē)場(chǎng)智能收費(fèi)系統(tǒng)招標(biāo)
- 客戶(hù)需求調(diào)查表-個(gè)性化需求分析
- 統(tǒng)編三年級(jí)下冊(cè)《趙州橋》公開(kāi)課課件(有配套教案)
- 跨境電商 的物流
- 建筑施工現(xiàn)場(chǎng)安全監(jiān)督指南
- 外科總論練習(xí)卷附答案
- 高職護(hù)理婦產(chǎn)科復(fù)習(xí)試題
- 醫(yī)療機(jī)構(gòu)運(yùn)營(yíng)與管理作業(yè)指導(dǎo)書(shū)
- 辦公區(qū)裝修活動(dòng)策劃方案
- 關(guān)于新產(chǎn)品開(kāi)發(fā)策略的討論結(jié)果反饋
- GB/T 5778-1986膨脹合金氣密性試驗(yàn)方法
- GB/T 5455-2014紡織品燃燒性能垂直方向損毀長(zhǎng)度、陰燃和續(xù)燃時(shí)間的測(cè)定
- GB/T 5117-2012非合金鋼及細(xì)晶粒鋼焊條
- GB/T 3782-2006乙炔炭黑
- 大國(guó)醫(yī)魂:800年滋陰派與600年大德昌課件
- 真核生物的轉(zhuǎn)錄
- 《電商企業(yè)財(cái)務(wù)風(fēng)險(xiǎn)管理-以蘇寧易購(gòu)為例開(kāi)題報(bào)告》
- 公司組織架構(gòu)圖(可編輯模版)
- 中小學(xué)綜合實(shí)踐活動(dòng)課程指導(dǎo)綱要
- 清淤工程施工記錄表
- 黃河上游歷史大洪水市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論