第二章簡單程序相關(guān)設(shè)計(jì)_第1頁
第二章簡單程序相關(guān)設(shè)計(jì)_第2頁
第二章簡單程序相關(guān)設(shè)計(jì)_第3頁
第二章簡單程序相關(guān)設(shè)計(jì)_第4頁
第二章簡單程序相關(guān)設(shè)計(jì)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二章簡單程序相關(guān)設(shè)計(jì)了解C程序的基本格式,變量的定義和賦值學(xué)習(xí)目標(biāo)變量與數(shù)據(jù)類型,C程序的基本結(jié)構(gòu)內(nèi)容要點(diǎn)2

上一章的內(nèi)容僅僅是把計(jì)算機(jī)當(dāng)作計(jì)算器來用,盡管這已經(jīng)比一般計(jì)算器的功能強(qiáng)大多了,但是,從水平上看象是小學(xué)生干的事,是算術(shù)而不是代數(shù),因?yàn)闆]有使用變量。要編程序首先遇到的是掌握變量的概念和對(duì)變量進(jìn)行操作。

程序是描述和實(shí)現(xiàn)算法的,算法中會(huì)遇到大量的各種各樣的變量,變量的數(shù)據(jù)類型由編程者依算法的要求來選擇。3

王小二同學(xué)是一個(gè)聰明的孩子,他到超市去買東西看到電子計(jì)價(jià)算賬很方便快捷,他就想編程模擬操作一下。下面是他編的程序。先請(qǐng)你看,然后我們?cè)俳忉?。【?.1】

4//************************************************//*程序名:電子計(jì)價(jià)器*//*作者:王小二*//*編制時(shí)間:2002年7月7日*//*主要功能:計(jì)算應(yīng)付款*//************************************************#include<iostream.h> //預(yù)編譯命令voidmain() //主函數(shù){ //主函數(shù)開始 floatApplePrice=3.5f;//對(duì)象1(蘋果單價(jià),3.5元/公斤) floatBananaPrice=4.2f;//對(duì)象2(香蕉單價(jià),4.2元/公斤) floatAppleWeight=0.0f;//對(duì)象3(蘋果重量,初始化為0) floatBananaWeight=0.0f;//對(duì)象4(香蕉重量,初始化為0) floatTotal=0.0; //對(duì)象5(總錢數(shù),初始化為0) cout<<"請(qǐng)輸入蘋果重量\t"<<endl;//提示信息 cin>>AppleWeight; //輸入蘋果重量 cout<<"請(qǐng)輸入香蕉重量\t"<<endl; //提示信息 cin>>BananaWeight; //輸入香蕉重量 Total=ApplePrice*AppleWeight+BananaPrice*BananaWeight; //計(jì)算應(yīng)付款 cout<<"應(yīng)付款"<<Total<<endl;//輸出應(yīng)付款} //主函數(shù)結(jié)束123456789101152.1C/C++程序的基本結(jié)構(gòu)//程序說明#預(yù)編譯命令main()//主函數(shù){//函數(shù)體開始

聲明部分

執(zhí)行部分}//函數(shù)體結(jié)束圖2.1簡單C程序的基本結(jié)構(gòu)6 在讀程序時(shí),首先要看程序說明,因此,這件事十分重要,我們要求學(xué)生在編程序時(shí)要寫出如下說明:程序名稱作者名稱編制時(shí)間,修改時(shí)間程序的主要功能我們強(qiáng)調(diào),沒有說明的程序是不合格的程序7 接下來是以“#”開頭的預(yù)編譯命令。在這個(gè)例子中是將庫中的輸入輸出流文件加至程序中。

其后是以main()為標(biāo)識(shí)的主函數(shù),這是每一個(gè)程序都必須有的標(biāo)識(shí)。本例中main()前的void是說明主函數(shù)的數(shù)據(jù)類型的。這里void表示空類型,即main()沒有函數(shù)值。main()所起的作用僅只是執(zhí)行一些操作步驟。8 主函數(shù)main()的函數(shù)體由一對(duì)大括號(hào){}括起,函數(shù)體包含兩部分:前面是聲明部分,后面是執(zhí)行部分。規(guī)定聲明在前,執(zhí)行在后。不聲明者,不得執(zhí)行。

在例2.1中聲明了五個(gè)要操作的對(duì)象,每個(gè)對(duì)象都有一個(gè)變量名與之對(duì)應(yīng)。每個(gè)變量的取值都是單精度實(shí)數(shù)(后面詳細(xì)解釋)。9//************************************************//*程序名:電子計(jì)價(jià)器*//*作者:王小二*//*編制時(shí)間:2002年7月7日*//*主要功能:計(jì)算應(yīng)付款*//************************************************#include<iostream.h> //預(yù)編譯命令voidmain() //主函數(shù){ //主函數(shù)開始 floatApplePrice=3.5f;//對(duì)象1(蘋果單價(jià),3.5元/公斤) floatBananaPrice=4.2f;//對(duì)象2(香蕉單價(jià),4.2元/公斤) floatAppleWeight=0.0f;//對(duì)象3(蘋果重量,初始化為0) floatBananaWeight=0.0f;//對(duì)象4(香蕉重量,初始化為0) floatTotal=0.0; //對(duì)象5(總錢數(shù),初始化為0) cout<<"請(qǐng)輸入蘋果重量\t"<<endl;//提示信息 cin>>AppleWeight; //輸入蘋果重量 cout<<"請(qǐng)輸入香蕉重量\t"<<endl; //提示信息 cin>>BananaWeight; //輸入香蕉重量 Total=ApplePrice*AppleWeight+BananaPrice*BananaWeight; //計(jì)算應(yīng)付款 cout<<"應(yīng)付款"<<Total<<endl;//輸出應(yīng)付款} //主函數(shù)結(jié)束123456789101110對(duì)象1是蘋果單價(jià),變量名為ApplePrice;對(duì)象2是香蕉單價(jià),變量名為BananaPrice;對(duì)象4是蘋果重量,變量名為AppleWeight;對(duì)象4是香蕉重量,變量名為BananaWeight;對(duì)象5是總錢數(shù),變量名為Total;(1)-(5)是五項(xiàng)聲明,具體為:聲明部分之后是對(duì)五個(gè)對(duì)象的操作,

即執(zhí)行部分。11 (6)和(8)為顯示至屏幕上的提示信息。告訴程序的使用者下面準(zhǔn)備用鍵盤輸入蘋果的重量、香蕉的重量。這兩語句用cout輸出流。 (7)和(9)是用cin輸入流將鍵盤敲入的實(shí)數(shù)分別放至AppleWeight(蘋果重量)和BananaWeight(香蕉重量)這兩個(gè)變量中。12 (10)計(jì)算應(yīng)付款,這是一條賦值語句,計(jì)算購買AppleWeight公斤香蕉應(yīng)付的錢數(shù),并把算出的數(shù)值賦給Total變量。 (11)顯示出應(yīng)付款Total的值

例2.1是一個(gè)完整的例子,在講過這個(gè)例子之后我們要講有關(guān)變量的幾個(gè)重要的概念和特點(diǎn)。132.2變量和變量名變量是相對(duì)常量而言的,在程序中經(jīng)過操作其值允許改變和可以改變的量稱之為變量。變量在使用前必須加以定義(在聲明中定義)。每一個(gè)變量要有一個(gè)與其它變量不相同的合法的名字。這個(gè)名字的第一個(gè)字符必須是字母或下劃線,其后的字符只能是字母、數(shù)字和下劃線,且所用的名字不得與C/C++語言系統(tǒng)所保留的關(guān)鍵字相同(見附錄)。建議:你在給變量命名時(shí)考慮實(shí)際含義,以便提高程序的易讀性。比如上例中的蘋果單價(jià)用ApplePrice。142.3變量的數(shù)據(jù)類型依數(shù)據(jù)類型變量可分為兩大類。第一類是基本數(shù)據(jù)類型,包括整型、浮點(diǎn)型和字符型;第二類是構(gòu)造數(shù)據(jù)類型,包括數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉等。所謂構(gòu)造數(shù)據(jù)類型,是指這種類型的數(shù)據(jù),是由若干個(gè)基本數(shù)據(jù)類型的變量按特定的規(guī)律組合構(gòu)造而成的。計(jì)算機(jī)中的各種數(shù)據(jù)是存儲(chǔ)在內(nèi)存空間中的。不同類型的數(shù)據(jù)占用大小不同的內(nèi)存空間。15整型。即整數(shù)類型,它又可分為4種:int整型,占用2字節(jié),數(shù)的表示范圍是

-32768~32767unsignedint無符號(hào)整型,占用2字節(jié),數(shù)的表示范圍:0~65535longint長整型,占用4字節(jié),數(shù)的表示范圍:

-2147483648~2147483647unsignedlongint無符號(hào)長整型,占用4字節(jié),數(shù)的表示范圍:0~42949672952.3.1基本數(shù)據(jù)類型有:16符號(hào)位00正0110負(fù)11-2-101……占用2字節(jié),數(shù)的表示范圍是

-32768~3276717整型。即整數(shù)類型,它又可分為4種:int整型,占用2字節(jié),數(shù)的表示范圍是

-32768~32767unsignedint無符號(hào)整型,占用2字節(jié),數(shù)的表示范圍:0~65535longint長整型,占用4字節(jié),數(shù)的表示范圍:

-2147483648~2147483647unsignedlongint無符號(hào)長整型,占用4字節(jié),數(shù)的表示范圍:0~42949672952.3.1基本數(shù)據(jù)類型有:18……19整型。即整數(shù)類型,它又可分為4種:int整型,占用2字節(jié),數(shù)的表示范圍是

-32768~32767unsignedint無符號(hào)整型,占用2字節(jié),數(shù)的表示范圍:0~65535longint長整型,占用4字節(jié),數(shù)的表示范圍:

-2147483648~2147483647unsignedlongint無符號(hào)長整型,占用4字節(jié),數(shù)的表示范圍:0~42949672952.3.1基本數(shù)據(jù)類型有:20實(shí)型。即實(shí)數(shù)類型,它又可分為3種:float浮點(diǎn)型,占用4字節(jié),數(shù)的表示范圍:

,有效位為7位double雙精度型,占用8字節(jié),數(shù)的表示范圍:

,有效位為15位longdouble長雙精度型,占用10字節(jié),數(shù)的表示范圍:

有效位為19位21bool邏輯型,占用1字節(jié)char字符型,占用1字節(jié)22void空類型type[]數(shù)組type*指針struct結(jié)構(gòu)2.3.2非基本數(shù)據(jù)類型指的是由用戶自己定義的數(shù)據(jù)類型,有以下七種union聯(lián)合enum枚舉class類23 在主函數(shù)main()中的聲明部分要對(duì)一些變量進(jìn)行定義,提出合適的精度要求,指出這些變量是什么數(shù)據(jù)類型的,目的是為變量分配內(nèi)存單元。比如定義變量名為a的整型變量,

inta=30;

系統(tǒng)會(huì)根據(jù)這個(gè)精度的要求,安排2個(gè)字節(jié)的內(nèi)存單元存放a變量的整數(shù)值。變量名a是這個(gè)內(nèi)存單元的符號(hào)地址。圖2.1表示變量定義與內(nèi)存地址的關(guān)系。2.4聲明(定義)變量的作用24變量a————變量值內(nèi)存單元地址XXXX30圖2.1變量的定義和內(nèi)存地址的關(guān)系25在C/C++中賦值符號(hào)為“=”賦值表達(dá)式的一般格式為

<變量>=<表達(dá)式>舉例

PI=3.14159; //讀作將表達(dá)式的值

//3.14159賦給變量PI C=sin(PI/4); //讀作將表達(dá)式π/4的

//正弦函數(shù)值賦給變量C2.5賦值符號(hào)與變量賦值的特點(diǎn)26變量必須先定義再使用(思考為什么?)在變量定義時(shí)就要賦初值,這叫變量的初始化。對(duì)變量的賦值過程是“覆蓋”過程,所謂“覆蓋”是在變量地址單元中用新值去替換舊值。讀出變量的值,該變量保持不變,相當(dāng)于拷貝一份出來。參與表達(dá)式運(yùn)算的所有變量都保持原來的值不變。變量賦值的特點(diǎn)27inta=0,b=0,c=0; //聲明a,b,c為整型變量

//均初始化為0a=7; //a賦值為7,覆蓋了原來的0b=a; //b賦值為a,a中的值覆蓋了b中的值

//但a中的值不變c=a+b; //將a+b的值賦給c,a+b的值為14

//去覆蓋c中的0,a與b保持7不變a=a+1; //將a+1的值賦給a,a+1的值為8

//覆蓋了原來的7舉例說明上述特點(diǎn)說明:a=a+1;可簡化寫作a++;下面來說明這五條語句的執(zhí)行過程。28定義并初始化000變量賦值過程執(zhí)行b=a0執(zhí)行c=a+b770執(zhí)行a=7執(zhí)行a=a+1714817000707147

a的地址單元

b的地址單元

c的地址單元

29【練習(xí)】 新年就要到了,假定你是一個(gè)班里的干部,要負(fù)責(zé)籌備一個(gè)晚會(huì),當(dāng)然少不了要采購一些瓜果花生之類?,F(xiàn)在請(qǐng)你設(shè)計(jì)一個(gè)采購程序,買什么由你定,但不得突破總錢數(shù)的限額100元。 編得好的程序?qū)駜?yōu)放到要出版的講義中30第三章

邏輯思維與計(jì)算機(jī)解題31將實(shí)際問題抽象為邏輯關(guān)系枚舉法解題思路關(guān)系與關(guān)系表達(dá)式程序的循環(huán)結(jié)構(gòu)與分支結(jié)構(gòu)學(xué)習(xí)目標(biāo)32關(guān)系運(yùn)算符與關(guān)系表達(dá)式人的思維到用計(jì)算機(jī)語言的表示枚舉的概念與思路循環(huán)結(jié)構(gòu)分支結(jié)構(gòu)內(nèi)容要點(diǎn)33 計(jì)算機(jī)強(qiáng)大的邏輯分析功能是由人通過程序賦給它的。一些邏輯問題必須轉(zhuǎn)換成計(jì)算機(jī)能夠看得懂的數(shù)學(xué)表達(dá)式和一定的程序指令。這一章我們通過例子來介紹如何將人對(duì)問題的思考轉(zhuǎn)換為讓計(jì)算機(jī)能解的數(shù)學(xué)表達(dá)式,同時(shí)給出一些通常要用到的程序結(jié)構(gòu)和C/C++語句。34 清華附中有四位同學(xué)中的一位做了好事,不留名,表揚(yáng)信來了之后,校長問這四位是誰做的好事。A說:不是我。B說:是C。C說:是D。D說:他胡說。 已知三個(gè)人說的是真話,一個(gè)人說的是假話?,F(xiàn)在要根據(jù)這些信息,找出做了好事的人。【任務(wù)3.1】“誰做的好事”35 為了解這道題,我們需要學(xué)習(xí)如何通過邏輯思維與判斷解這類問題的思路。36 關(guān)系運(yùn)算符有如下6個(gè)>= 大于等于> 大于== 等于<= 小于等于< 小于!= 不等于3.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式 為了講解關(guān)系運(yùn)算符和關(guān)系表達(dá)式,先請(qǐng)你在機(jī)器上建立和運(yùn)行下列程序。37//*****************************//*程序:3_0.cpp*//*功能:為講解關(guān)系運(yùn)算而編*//*編制人:wuwh*//*時(shí)間:2001年6月27日*//*****************************38#include<iostream.h>voidmain(){ cout<<“3>2的邏輯值是“<<(3>2)<<“,1為真“<<endl; cout<<“3>=2的邏輯值是“<<(3>=2)<<“,1為真“<<endl; cout<<“3==2的邏輯值是“<<(3==2)<<“,0為假“<<endl; cout<<“3<2的邏輯值是“<<(3<2)<<“,0為假“<<endl; cout<<“3<=2的邏輯值是“<<(3<=2)<<“,0為假“<<endl; cout<<“3!=2的邏輯值是“<<(3!=2)<<“,1為真“<<endl;}393

>

2

的邏輯值是

1,

1為真3

>=

2

的邏輯值是

1,

1為真3

==

2

的邏輯值是

0,

0為假3

<

2

的邏輯值是

0,

0為假3

<=

2

的邏輯值是

0,

0為假3

!=

2

的邏輯值是

1,

1為真程序運(yùn)行結(jié)果是:40關(guān)系表達(dá)式的一般格式 <變量1>關(guān)系運(yùn)算符<變量2>例如:變量1為b,變量2為c,關(guān)系運(yùn)算符為>。關(guān)系表達(dá)式為

b>c 在程序中系統(tǒng)要測(cè)試由關(guān)系表達(dá)式所表示的關(guān)系是否成立,成立為真,不成立為假。 關(guān)系表達(dá)式是有值的,這個(gè)值非0即1,是布爾值。關(guān)系表達(dá)式成立,其值為1。關(guān)系表達(dá)式不成立,其值為0。上述性質(zhì)在編寫程序時(shí)用到,因此很重要。41

結(jié)合任務(wù)3.1,可以將四個(gè)人說的四句話寫成關(guān)系表達(dá)式。

在聲明變量時(shí),我們讓thisman表示要尋找的做了好事的人,定義它是字符變量。charthisman=‘’;//定義字符變量并將其初始化為空 接著讓“==”的含義為“是”,讓“!=”的含義為“不是”。3.2使用關(guān)系表達(dá)式解決一些問題42利用關(guān)系表達(dá)式將四個(gè)人所說的話表示成說話人說的話寫成關(guān)系表達(dá)式A“不是我”thisman!=‘A’B“是C”thisman==‘C’C“是D”thisman==‘D’D“他胡說”thisman!=‘D’43 在C/C++中字符在存儲(chǔ)單元中是以ASCII碼的形式存放的。因此,用賦值語句thisman=‘A’; 與thisman=65; 兩者是等效的,在以thisman為標(biāo)識(shí)的存儲(chǔ)單元中存的是數(shù)字65。建議你用如下實(shí)驗(yàn)加以驗(yàn)證。thisman65地址xxxx44//******************************//*程序:3_1.cpp*//*功能:驗(yàn)證’A’和65是否相等*//*編制人:wuwh*//*時(shí)間:2001年6月27日*//******************************#include<iostream.h> //預(yù)編譯命令voidmain() //主函數(shù){ //主函數(shù)開始 charthisman; //聲明字符變量thisman,

thisman='A'; //thisman賦值為'A' //輸出關(guān)系表達(dá)式“65=='A'”的值

cout<<"65=='A'——關(guān)系表達(dá)式的值為" <<(65=='A')<<",1為真。"<<endl;} //主函數(shù)結(jié)束45

結(jié)合任務(wù)3.1分析,A、B、C、D四個(gè)人,只有一位是做好事者。令做好事者為1,未做好事者為0,可以有如下4中狀態(tài)(情況)3.3枚舉法的思路狀態(tài)ABCD1100020100300104000146這四種狀態(tài)可簡化寫成狀態(tài)賦值表達(dá)式1thisman=‘A’2thisman=‘B’3thisman=‘C’4thisman=‘D’

顯然第一種狀態(tài)是假定A是做好事者,第二種狀態(tài)是假定B是做好事者,…。所謂枚舉是按照者四種假定逐一地去測(cè)試四個(gè)人的話有幾句是真話,如果不滿足三句為真,就否定掉這一假定,換下一個(gè)狀態(tài)再試。 具體做法如下:47(1)假定讓thisman=‘A’代入四句話中狀態(tài)說的話關(guān)系表達(dá)式CAthisman!=‘A’;‘A’!=‘A’0Bthisman==‘C’;‘A’==‘C’0Cthisman==‘D’;‘A’==‘D’0Dthisman!=‘D’;‘A’!=‘D’1四個(gè)關(guān)系表達(dá)式的值的和為1,顯然不是‘A’做的好事48(2)假定讓thisman=‘B’代入四句話中狀態(tài)說的話關(guān)系表達(dá)式CAthisman!=‘A’;‘B’!=‘A’1Bthisman==‘C’;‘B’==‘C’0Cthisman==‘D’;‘B’==‘D’0Dthisman!=‘D’;‘B’!=‘D’1四個(gè)關(guān)系表達(dá)式的值的和為2,顯然不是‘B’做的好事49(3)假定讓thisman=‘C’代入四句話中狀態(tài)說的話關(guān)系表達(dá)式CAthisman!=‘A’;‘C’!=‘A’1Bthisman==‘C’;‘C’==‘C’1Cthisman==‘D’;‘C’==‘D’0Dthisman!=‘D’;‘C’!=‘D’1四個(gè)關(guān)系表達(dá)式的值的和為3,就是‘C’做的好事50 綜上所述一個(gè)人一個(gè)人去試,就是枚舉。從編寫程序看,實(shí)現(xiàn)枚舉最好用循環(huán)結(jié)構(gòu)。 這部分的程序?qū)懗鋈缦拢篺or(k=1;k<=4;k=k+1)//計(jì)數(shù)型循環(huán),循環(huán)的控制變量為k{ //循環(huán)體開始

thisman=64+k; //產(chǎn)生被試者,依次為’A’,’B’,’C’,’D’

//賦值給thisman sum=(thisman!=’A’) //測(cè)試’A’的話是否為真 +(thisman==’C’) //測(cè)試’B’的話是否為真 +(thisman==’D’) //測(cè)試’C’的話是否為真 +(thisman!=‘D’); //測(cè)試’D’的話是否為真 …} //循環(huán)體結(jié)束51 for是計(jì)數(shù)型循

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論