版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實訓(xùn)項目簡介第5章計算機(jī)程序設(shè)計基礎(chǔ)第5章計算機(jī)程序設(shè)計基礎(chǔ)5.1算法5.2程序設(shè)計概述5.3程序設(shè)計基礎(chǔ)5.4程序設(shè)計方法5.5編譯原理第5章計算機(jī)程序設(shè)計基礎(chǔ)重點:算法的概念,算法的表示;程序的概念;程序設(shè)計語言的分類;C/C++程序設(shè)計基礎(chǔ)。難點:C/C++程序設(shè)計基礎(chǔ);編譯過程。5.1算法5.1.1什么是算法5.1.2簡單的算法舉例5.1.3算法的特性5.1.4怎樣表示一個算法5.1.5算法的評價標(biāo)準(zhǔn)5.1.1什么是算法做個游戲
一個農(nóng)夫帶著一條狼、一只山羊和一籃蔬菜過河,但只有一條小船,并且每次只能讓農(nóng)夫帶一樣?xùn)|西過河。農(nóng)夫在場的情況下一切相安無事,一旦農(nóng)夫不在,狼會吃羊,羊會吃蔬菜。問聰明的農(nóng)夫如何解決過河問題。5.1.1什么是算法5.1.1什么是算法5.1.1什么是算法?5.1.1什么是算法解決方案方案1:先帶羊過去,空船回,再帶菜過去,帶羊回,然后帶狼過去,空船回,最后帶羊過去。方案2:先帶羊過去,空船回,再帶狼過去,帶羊回,然后帶菜過去,空船回,最后帶羊過去。
解決問題的關(guān)鍵是先帶羊,且第二次回來時也要帶羊回來。5.1.1什么是算法把大象放進(jìn)冰箱里需要幾步?2000春晚小品《鐘點工》
1、把冰箱門打開2、把大象裝進(jìn)去3、把冰箱門關(guān)上又如家中燒開水的過程分幾步?5.1.1什么是算法廣義地說,為解決一個問題而采取的方法和步驟,就稱為“算法”。例如:從家到學(xué)校,煎雞蛋等。注意:對同一個問題,可以有不同的解題方法和步驟。為了有效地進(jìn)行解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量(算法分析),選擇合適的算法。5.1.1什么是算法計算機(jī)算法:一個能夠被計算機(jī)處理的,有限長的操作序列。計算機(jī)算法可分為兩大類別:數(shù)值運算算法數(shù)值運算的目的是求數(shù)值解。非數(shù)值運算算法非數(shù)值運算包括的面十分廣泛,最常見的是用于事務(wù)管理領(lǐng)域。算法是程序的靈魂,解決“做什么”和“怎么做”的問題。5.1.2簡單的算法舉例例1求1×2×3×4×5可以用最原始的方法進(jìn)行:步驟1:先求1*2,得到結(jié)果2。步驟2:將步驟1得到的乘積2再乘以3,得到結(jié)果6。步驟3:將6再乘以4,得24。步驟4:將24再乘以5,得120。這就是最后的結(jié)果。例1求1×2×3×4×5×…×1000太繁瑣5.1.2簡單的算法舉例改進(jìn)的算法:設(shè)變量p為被乘數(shù)變量i為乘數(shù)用循環(huán)算法求結(jié)果5.1.2簡單的算法舉例S1:使p=1,或?qū)懗?pS2:使i=2,或?qū)懗?iS3:使p與i相乘,乘積仍放在變量p中,可表示為:p*ipS4:使i的值加1,即i+1iS5:如果i不大于5,返回重新執(zhí)行S3;否則,算法結(jié)束最后得到p的值就是
5!的值若是1000,求什么?5.1.2簡單的算法舉例S1:使p=1,或?qū)懗?pS2:使i=2,或?qū)懗?iS3:使p與i相乘,乘積仍放在變量p中,可表示為:p*ipS4:使i的值加1,即i+1iS5:如果i不大于5,返回重新執(zhí)行S3;否則,算法結(jié)束最后得到p的值就是
5!的值若求1×3×5×7×9×11332211所求相當(dāng)于i≦115.1.2簡單的算法舉例例2有50個學(xué)生,要求將成績在80分以上的學(xué)生的學(xué)號和成績輸出。用ni代表第i個學(xué)生學(xué)號,gi表示第i個學(xué)生成績S1:1iS2:如果gi≥80,
則輸出ni和gi,否則不輸出S3:i+1iS4:如果i≤50,返回到步驟S2,繼續(xù)執(zhí)行,否則,算法結(jié)束5.1.2簡單的算法舉例例3判定2000—2500年中的每一年是否閏年,并將結(jié)果輸出。閏年的條件:
(1)能被4整除,但不能被100整除的年份都是閏年,如2008、2012、2048年
(2)能被400整除的年份是閏年,如2000年不符合這兩個條件的年份不是閏年例如2009、2100年5.1.2簡單的算法舉例設(shè)year為被檢測的年份。算法表示如下:S1:2000yearS2:若year不能被4整除,則輸出year的值和“不是閏年”。然后轉(zhuǎn)到S6S3:若year能被4整除,不能被100整除,則輸出year的值和“是閏年”。然后轉(zhuǎn)到S6S4:若year能被400整除,則輸出year的值和“是閏年”,然后轉(zhuǎn)到S6S5:其他情況輸出year的值和“不是閏年”S6:year+1yearS7:當(dāng)year≤2500時,轉(zhuǎn)S2,否則停止year不能被4整除非閏年year被4整除,但不能被100整除閏年year被100整除,又能被400整除閏年其他非閏年逐漸縮小判斷的范圍5.1.2簡單的算法舉例5.1.3算法的特性一個有效算法應(yīng)該具有以下特點:(1)
有窮性。一個算法應(yīng)包含有限的操作步驟,而不能是無限的。(2)
確定性。算法中的每一個步驟都應(yīng)當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的、模棱兩可的。(3)
有零個或多個輸入。所謂輸入是指在執(zhí)行算法時需要從外界取得必要的信息。(4)
有一個或多個輸出。算法的目的是為了求解,“解”就是輸出。沒有輸出的算法是沒有意義的。(5)
有效性。算法中的每一個步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。5.1.3算法的特性對于算法使用者來說:可以使用別人已設(shè)計好的現(xiàn)成算法和程序;只需根據(jù)已知算法的要求給予必要的輸入,就能得到輸出的結(jié)果;對使用者來說算法就像一個黑盒子。對于算法設(shè)計者來說:必須知道算法的細(xì)節(jié)。輸入3個數(shù)黑箱子3個數(shù)中最大數(shù)求3個數(shù)的最大數(shù)5.1.4怎樣表示一個算法1、用自然語言表示算法2、用流程圖表示算法3、用N-S流程圖表示算法4、用偽代碼表示算法5、用計算機(jī)語言表示算法5.1.2節(jié)介紹的算法是用自然語言表示的。用自然語言表示通俗易懂,但文字冗長,容易出現(xiàn)歧義性。用自然語言描述包含分支和循環(huán)的算法,不很方便。除了很簡單的問題外,一般不用自然語言。1、用自然語言表示算法2、用流程圖表示算法流程圖表示法:使用圖形符號描述解決問題的邏輯步驟,并顯示各步驟之間的相互關(guān)系。它使用圖的形式掩蓋了處理步驟的所有細(xì)節(jié),只顯示從開始到結(jié)束的整個流程。用圖形表示算法,直觀形象,易于理解起止框輸入輸出框處理框判斷框流程線連接點注釋框x≧0Y……N……一個入口兩個出口2、用流程圖表示算法起止框輸入輸出框處理框判斷框流程線連接點注釋框③①②①③②③位置不夠防止交叉2、用流程圖表示算法例1將求1×2×3×4×5的
算法用流程圖表示。如果需要將最后結(jié)果輸出:1ti>5開始2it*iti+1i結(jié)束NY例1將求1×2×3×4×5的
算法用流程圖表示。如果需要將最后結(jié)果輸出:1t輸出ti>5開始2it*iti+1i結(jié)束NY2、用流程圖表示算法2、用流程圖表示算法
例2有50個學(xué)生,要求將成績在80分以上的學(xué)生的學(xué)號和成績輸出。將此問題的算法用流程圖表示。1ii>50開始i+1i結(jié)束NY輸入ni、gi1i開始gi≧80輸出ni、gii+1ii>50NYYN如果包括輸入數(shù)據(jù)部分①1ii>50開始i+1i結(jié)束NY輸入ni、gi1igi≧80輸出ni、gii+1ii>50NYYN如果包括輸入數(shù)據(jù)部分①①2、用流程圖表示算法例3判定2000—2500年中的每一年是否閏年,將結(jié)果輸出。將此問題的算法用流程圖表示。NYN開始2000yearyear不能被4整除year是閏年year不能被100整除year+1yearyear>2500結(jié)束Yyear不能被400整除year不是閏年year是閏年year不是閏年YNYN3、用N-S流程圖表示算法流程圖用流程線指出各框的執(zhí)行順序,對流程線的使用沒有嚴(yán)格限制。使用者可以毫不受限制地使流程隨意地轉(zhuǎn)來轉(zhuǎn)去,使人難以理解算法的邏輯。歸納起來,算法的處理邏輯可以通過三種基本結(jié)構(gòu)來表示。順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)N-S流程圖就是基于這三種基本結(jié)構(gòu)的算法表示方法。3、用N-S流程圖表示算法(1)順序結(jié)構(gòu)AB3、用N-S流程圖表示算法(2)選擇結(jié)構(gòu)ABYpNAYpN3、用N-S流程圖表示算法(3)循環(huán)結(jié)構(gòu)①當(dāng)型循環(huán)結(jié)構(gòu)whileAYp1NYx<5N0x輸出x的值x+1x輸出0,1,2,3,43、用N-S流程圖表示算法(3)循環(huán)結(jié)構(gòu)②直到型循環(huán)結(jié)構(gòu)untilAYp2NYx≧5N0x輸出x的值x+1x輸出1,2,3,4,53、用N-S流程圖表示算法以上三種基本結(jié)構(gòu),有以下共同特點:(1)只有一個入口(2)只有一個出口一個判斷框有兩個出口一個選擇結(jié)構(gòu)只有一個出口(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到。也就是說,對每一個框來說,都應(yīng)當(dāng)有一條從入口到出口的路徑通過它(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”3、用N-S流程圖表示算法N-S流程圖也稱盒圖。N-S流程圖用以下的流程圖符號:ABABYNpA當(dāng)p1成立A直到p2成立順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)(當(dāng)型)循環(huán)結(jié)構(gòu)(直到型)3、用N-S流程圖表示算法例1將求5!的算法用N-S圖表示。直到i>51t輸出t2it*iti+1i3、用N-S流程圖表示算法
例2
將50名學(xué)生中成績高于80分者的學(xué)號和成績輸出。將此算法用N-S圖表示。直到i>501i1ii+1i輸入ni、gii+1i直到i>50gi≧80否是輸出ni,gi例3將判定閏年的算法用N-S圖表示。直到y(tǒng)ear>25002000yearyear+1year否是year%4為0否是輸出year非閏年year%100不為0year%400為0是否輸出year非閏年輸出year閏年輸出year閏年4、用偽代碼表示算法偽代碼是用介于自然語言和計算機(jī)語言之間的文字和符號來描述算法。用偽代碼寫算法并無固定的、嚴(yán)格的語法規(guī)則,可以用英文,也可以中英文混用。4、用偽代碼表示算法例
求5!。begin(算法開始)1
t2iwhilei≤5{t*iti+1i}printtend(算法結(jié)束)5、用計算機(jī)語言表示算法要完成一項工作,包括設(shè)計算法和實現(xiàn)算法兩個部分。設(shè)計算法的目的是為了實現(xiàn)算法。不僅要考慮如何設(shè)計一個算法,也要考慮如何實現(xiàn)一個算法。5.1.5算法的評價標(biāo)準(zhǔn)可以從以下幾個方面對算法進(jìn)行評價:(1)算法的正確性:指算法能正確地完成所要解決的問題。就目前的研究來看,要想通過理論方式證明一個算法的正確性是非常復(fù)雜和困難的,一般采用測試的方法,基于算法編寫程序,然后對程序進(jìn)行測試。針對所要解決的問題,選定一些有代表性的輸入數(shù)據(jù),經(jīng)程序執(zhí)行后,查看輸出結(jié)果是否和預(yù)期結(jié)果一致,如果不一致,則說明程序中存在錯誤,應(yīng)予以查找并改正。經(jīng)過一定范圍的測試和程序改正,不再發(fā)現(xiàn)新的錯誤,程序可以交付使用,在使用過程中仍有可能發(fā)現(xiàn)錯誤,再繼續(xù)改正,這時的改正稱為程序維護(hù)。5.1.5算法的評價標(biāo)準(zhǔn)(2)算法的時間復(fù)雜度:指依據(jù)算法編寫出程序后在計算機(jī)上運行時所耗費的時間度量。算法的時間復(fù)雜度T(n)實際上表示:當(dāng)問題規(guī)模n充分大時,該程序運行時間的一個數(shù)量級,用O表示。比較兩個算法的時間復(fù)雜度時,不是比較兩個算法對應(yīng)程序的具體執(zhí)行時間,這涉及編程語言、編程水平和計算機(jī)速度等多種因素,而是比較兩個算法相對于問題規(guī)模n所耗費時間的數(shù)量級。
eg:O(1),O(n),O(n2)5.1.5算法的評價標(biāo)準(zhǔn)(3)算法的空間復(fù)雜度:依據(jù)算法編寫出程序后在計算機(jī)上運行時所需內(nèi)存空間大小的度量,也是和問題規(guī)模n有關(guān)的度量。(4)算法的可理解性:算法是為了人們的閱讀與交流,可理解性好的算法有利于人們的正確理解,有利于程序員據(jù)此編寫出正確的程序。5.2程序設(shè)計概述5.2.1程序的概念5.2.2程序設(shè)計語言5.2.3程序設(shè)計的任務(wù)5.2.1程序的概念程序:指為讓計算機(jī)完成特定的任務(wù)而設(shè)計的指令序列或語句序列。程序是程序設(shè)計人員用某種計算機(jī)語言編寫的、計算機(jī)能夠理解并執(zhí)行的命令集合,能夠在目標(biāo)計算機(jī)執(zhí)行。程序是算法在計算機(jī)中的實現(xiàn)。程序設(shè)計是溝通算法與計算機(jī)的橋梁。使用計算機(jī)解決問題時先設(shè)計算法,再使用程序設(shè)計語言將算法描述為程序,最后由計算機(jī)執(zhí)行程序。5.2.2程序設(shè)計語言程序設(shè)計語言(programminglanguage):是人類與計算機(jī)交流的工具。
是告訴計算機(jī)完成某項工作的語言,是一種讓人與計算機(jī)之間進(jìn)行交流,讓計算機(jī)理解人的意圖并按照人的意圖完成工作的符號系統(tǒng)。程序設(shè)計語言分類按程序設(shè)計語言的發(fā)展階段可分為:1、機(jī)器語言2、匯編語言3、高級語言1、機(jī)器語言由計算機(jī)硬件系統(tǒng)可以識別的二進(jìn)制指令組成的語言稱為機(jī)器語言。機(jī)器語言的特點:由二進(jìn)制編碼指令構(gòu)成的語言。是一種依附于機(jī)器硬件的語言。機(jī)器語言程序可以直接執(zhí)行。機(jī)器語言指令的組成:操作碼+操作數(shù)
操作碼——用于說明指令的功能;操作數(shù)——用于說明參與操作的數(shù)據(jù)或數(shù)據(jù)所在單元的地址。操作碼和操作數(shù)都是以二進(jìn)制的形式表示。1、機(jī)器語言【例1】機(jī)器語言程序示例。程序功能:把兩個內(nèi)存單元中的數(shù)相加,并將結(jié)果存入另外一個單元。0001
010101101100
//把地址為01101100的內(nèi)存單元中的數(shù)裝入
0101號寄存器0001
0110
01101101
//把地址為01101101的內(nèi)存單元中的數(shù)裝入
0110號寄存器0101
000001010110
//把0101和0110寄存器中的數(shù)相加,結(jié)果存入
0000號寄存器0011000001101110
//把0000號寄存器中的數(shù)存入地址為01101110的內(nèi)存單元中1、機(jī)器語言機(jī)器語言的優(yōu)缺點缺點:指令難以準(zhǔn)確記憶;程序容易寫錯;程序難以理解和修改。優(yōu)點:可直接執(zhí)行,運行效率高2、匯編語言用一些簡潔的英文字母符號串(助記符)來替代一個特定指令的二進(jìn)制串,這種助記符語言稱為匯編語言。匯編語言的特點:由助記符指令構(gòu)成的語言。也是一種依附于機(jī)器硬件的語言。匯編語言源程序需要翻譯后才能執(zhí)行。—匯編程序匯編語言指令的組成:助記符:表示指令的操作碼。(如MOV表示數(shù)據(jù)傳送操作,ADD表示加法操作等。)存儲單元/寄存器:表示操作數(shù)。2、匯編語言【例2】匯編語言程序示例。程序功能:把兩個內(nèi)存單元中的數(shù)據(jù)相加,并將結(jié)果存入另外一個單元。MOVR5,X
//把內(nèi)存單元X中的數(shù)裝入R5寄存器ADDR5,Y
//把R5中的數(shù)與Y單元中的數(shù)相加,結(jié)果存入R5MOVZ,R5
//把R5中的數(shù)存入Z單元中匯編語言的優(yōu)缺點優(yōu)點:指令容易記憶,程序容易編寫和理解;——相對機(jī)器語言缺點:助記符比較難以記憶,需要編程人員對計算機(jī)的硬件結(jié)構(gòu)有比較深入的了解。抽象層次很低,仍然是低級語言。3、高級語言高級語言的特點
由自然語言和數(shù)學(xué)公式表示的語言。是一種獨立于機(jī)器硬件的語言。高級語言程序需要編譯后才能執(zhí)行。【例3】高級語言程序示例。程序功能:把兩個內(nèi)存單元中的數(shù)相加,并將結(jié)果存入另外一個單元。Z=X+Y
//把內(nèi)存單元X中的數(shù)與Y中的數(shù)相加,結(jié)果存入Z單元3、高級語言高級語言源程序需要先翻譯成等價的目標(biāo)程序,才能為計算機(jī)理解和執(zhí)行。翻譯程序的兩種模式:(高級語言的兩個執(zhí)行方式)編譯方式:先把高級語言的源程序翻譯成目標(biāo)程序,然后經(jīng)過連接裝配程序生成可執(zhí)行程序,最后運行可執(zhí)行程序。解釋方式:邊翻譯邊執(zhí)行,不需要翻譯成目標(biāo)程序。5.2.2程序設(shè)計語言三種語言的應(yīng)用比較:機(jī)器語言—目前一般不直接用來編寫程序。匯編語言—靠近機(jī)器,能夠充分利用計算機(jī)硬件的特性,編寫出的程序效率較高,用于對效率要求較高的規(guī)模不大的程序(如外設(shè)驅(qū)動程序、計算機(jī)控制程序等)。高級語言—用于編寫規(guī)模較大的程序。5.2.3程序設(shè)計的任務(wù)1.分析問題對于接手的任務(wù)要進(jìn)行認(rèn)真的分析研究所給定的條件分析最后應(yīng)達(dá)到的目標(biāo)找出解決問題的規(guī)律選擇解題的方法建立數(shù)學(xué)模型5.2.3程序設(shè)計的任務(wù)2.設(shè)計算法設(shè)計出解題的方法和具體步驟3.用計算機(jī)語言描述算法(即寫出源程序)4.對源程序進(jìn)行編輯、編譯和連接5.運行程序,分析結(jié)果結(jié)果錯了,程序肯定錯結(jié)果對了,程序未必對1、分析問題分析解決問題所需要的數(shù)據(jù)(條件)——輸入;此例中要求輸入圓半徑確定要計算機(jī)解決什么問題,即“做什么”——處理;此例中要求計算圓面積和周長明確最后得到的結(jié)果——輸出。此例中要求輸出圓面積和周長練習(xí):已知圓的半徑,求圓的面積和周長,并輸出結(jié)果。5.2.3程序設(shè)計的任務(wù)2、設(shè)計算法設(shè)計出解決某一問題的一組(有限個)求解步驟,即怎么做。本例用計算圓面積和周長公式即可得到結(jié)果注意:
為計算機(jī)設(shè)計算法就必須依據(jù)計算機(jī)的工作原理(馮?諾依曼型計算機(jī)),因為設(shè)計的算法和程序最終要讓計算機(jī)去執(zhí)行。有些問題的算法計算機(jī)與人工的方法是不同的,例如:記錄原始數(shù)據(jù)和中間結(jié)果,計算機(jī)要利用存儲器,而人工需要紙和筆。5.2.3程序設(shè)計的任務(wù)2、設(shè)計算法自然語言描述流程圖描述
先用鍵盤輸入圓的半徑,再利用公式計算出圓的面積和周長,最后輸出圓面積和周長。5.2.3程序設(shè)計的任務(wù)2、設(shè)計算法自然語言描述流程圖描述5.2.3程序設(shè)計的任務(wù)3、編寫程序#include<stdio.h>intmain(){floatr,length,area;printf("Entertheradius\n");scanf("%f",&r);length=2*3.14*r;area=3.14*r*r;printf("Radiusis%f\n",r);printf("Areais%f\n",area);printf("Lengthis%f\n",length);getchar();return0;}5.2.3程序設(shè)計的任務(wù)#include<iostream.h>intmain(){ doubler;
cout<<"Entertheradius\n";
cin>>r; doublelength=2*3.14*r; doublearea=3.14*r*r;
cout<<"園的周長是:"<<length<<endl <<"圓的面積是:"<<area<<endl;
return0;}5.3程序設(shè)計基礎(chǔ)5.3.1C++語言的基本要素5.3.2C++語言的數(shù)據(jù)類型5.3.3常量變量和對象5.3.4運算符和表達(dá)式5.3.5基本語句5.3.6三種基本程序結(jié)構(gòu)(以C++語言為例)5.3.1C++語言的基本要素自然語言的學(xué)習(xí)過程:(語法規(guī)則)單字->組詞->造句->句子構(gòu)成文章計算機(jī)語言的學(xué)習(xí)過程:(語法規(guī)則)合法字符->單詞(標(biāo)識符、常量、表達(dá)式等)->語句->程序5.3.1C++語言的基本要素1.字符集C++語言中最小的語法單位是字符,所有合法字符的集合稱為字符集。(1)英文字母(大小寫不同)(2)數(shù)字:0,1,2,…,9。(3)標(biāo)點符號:逗號(,)、分號(;)、單引號(’)、雙引號(”)、冒號(:)、空格()、左花括號({)、右花括號(})、回車(Enter)。5.3.1C++語言的基本要素1.字符集(4)單字符運算符號:左右圓括號()、左右方括號[]、加(+)、減(-)、乘(*)、除(/)、取余數(shù)(%)、小數(shù)點(.)、大于(>)、等于(=)、小于(<)、嘆號(!)、破折號(~)、和號(&)、尖號(^)、分割符(|)、問號(?)。(5)特殊用途的符號:井字號(#)、反斜線(\)、下劃線(_)。注意:以上字符均為英文字符。5.3.1C++語言的基本要素2.標(biāo)識符C++語言中各種對象的名字用標(biāo)識符表示。例如常量名、變量名、函數(shù)名、類名、對象名、文件名等。標(biāo)識符是由字母、數(shù)字和下劃線三種字符構(gòu)成的且第一個字符必須是字母或下劃線的字符序列。5.3.1C++語言的基本要素2.標(biāo)識符標(biāo)識符的分類(1)關(guān)鍵字(保留字):預(yù)先定義好的標(biāo)識符,具有特定的含義和用途,C++編譯器對其進(jìn)行特殊處理。注:每個關(guān)鍵字都有固定的含義,用戶不能改變關(guān)鍵字的用途。如何識別關(guān)鍵字?
使用VC++6.0的編輯環(huán)境時,缺省是藍(lán)色的字符即為關(guān)鍵字。5.3.1C++語言的基本要素(1)關(guān)鍵字(保留字):5.3.1C++語言的基本要素2.標(biāo)識符標(biāo)識符的分類(2)預(yù)定義標(biāo)識符::也具有特定含義,如庫函數(shù)名;但允許用戶將這類標(biāo)識符另作他用,改變其原有意義。(3)用戶標(biāo)識符:用戶根據(jù)自己需要定義的標(biāo)識符。注:不能與關(guān)鍵字同名,也盡量不要與預(yù)定義標(biāo)識符同名。5.3.1C++語言的基本要素2.標(biāo)識符用戶標(biāo)識符的命名規(guī)則:①由字母、數(shù)字和下劃線組成;②必須以字母或下劃線開頭;③對大小寫敏感;④不能與關(guān)鍵字同名。例如:intchar;//char是關(guān)鍵字,不能用做變量名char89_name;//變量名不能以數(shù)字開頭intis-loan;//中劃線不能出現(xiàn)在變量名中
//字符間的連接應(yīng)該采用下劃線5.3.1C++語言的基本要素一般的編程操作流程為:編輯(edit)編譯(compile)鏈接(link或make或build)調(diào)試運行(debug或run)該過程循環(huán)往復(fù),直至完成。編輯源程序(鍵入程序).cpp編譯程序.obj鏈接.exe調(diào)試運行編輯將源程序輸入到計算機(jī)中,生成后綴為.cpp的源程序文件。編譯將源程序轉(zhuǎn)換為后綴為.obj的目標(biāo)程序文件。鏈接將若干目標(biāo)文件與庫文件連在一起,生成一個后綴為.exe的可執(zhí)行文件。運行調(diào)試5.3.1C++語言的基本要素源程序用源語言寫的,有待翻譯的程序“.cpp”-cplusplusfile目標(biāo)程序也稱為“結(jié)果程序”,是源程序通過翻譯程序加工以后所生成的程序?!?obj”-objectfile目標(biāo)代碼為機(jī)器代碼(機(jī)器指令)可執(zhí)行文件可以直接執(zhí)行的機(jī)器語言文件“.exe”-executablefile5.3.1C++語言的基本要素5.3.1C++語言的基本要素C++集成開發(fā)環(huán)境:1.TurboC++2.
C++Builder3.
Dev-C++4.
VisualC++VisualC++6.0在項目文件管理、調(diào)試及操作的親和力等方面上都略勝一籌,故本書以其比較流行的漢化版本VisualC++6.05SP6中文企業(yè)版作為編程環(huán)境。5.3.1C++語言的基本要素使用VC++6.0創(chuàng)建C++程序的過程:1.創(chuàng)建工作文件夾2.啟動VisualC++6.0
3.添加C++程序
1)創(chuàng)建工程:新建->工程->win32consoleapplication->輸入工程名稱,指定工程存儲位置,確定->空的工程,確定。2)創(chuàng)建源文件新建->文件->c++源文件->輸入文件名,確定。4.編輯源程序(即輸入源程序)5.編譯、鏈接和運行5.3.1C++語言的基本要素方法建議:1)課前準(zhǔn)備、課后復(fù)習(xí)2)看懂課件上的內(nèi)容,不懂?提問、email、網(wǎng)上查找3)務(wù)必要自己動手編程、調(diào)試、運行4)從模仿、照抄開始,多練習(xí)5)上機(jī):課前準(zhǔn)備、不做其他無關(guān)事5.3.1C++語言的基本要素最簡單的C++語言程序舉例例:要求在屏幕上輸出以下一行信息。
Helloworld!#include<iostream.h>intmain(){
cout<<”Helloworld!\n”;return0;}函數(shù)的名字,表示主函數(shù)C++程序必須有一個
main函數(shù)5.3.1C++語言的基本要素#include<iostream.h>intmain(){
cout<<”Helloworld!\n”;return0;}
主函數(shù)類型5.3.1C++語言的基本要素#include<iostream.h>intmain(){
cout<<”Helloworld!\n”;return0;}
函數(shù)體5.3.1C++語言的基本要素#include<iostream.h>intmain(){
cout<<”Helloworld!\n”;return0;}
輸出流cout,
是標(biāo)準(zhǔn)輸出設(shè)備的名稱輸出語句5.3.1C++語言的基本要素插入運算符“<<”;
指示將后面的數(shù)據(jù)送到輸出設(shè)備上去;#include<iostream.h>intmain(){
cout<<”Helloworld!\n”;return0;}
換行符5.3.1C++語言的基本要素“…”:表示字符串常量,
原樣輸出。#include<iostream.h>intmain(){
cout<<”Helloworld!.\n”;return0;}
當(dāng)main函數(shù)執(zhí)行結(jié)束前將整數(shù)0作為函數(shù)值5.3.1C++語言的基本要素#include<iostream.h>intmain(){
cout<<”Helloworld!\n”;return0;}
表示語句結(jié)束預(yù)處理指令5.3.1C++語言的基本要素C++庫文件5.3.1C++語言的基本要素C++語言程序的結(jié)構(gòu)特點:1.一個程序由一個或多個源程序文件組成小程序往往只包括一個源程序文件一個源程序文件中可以包括四個部分:預(yù)處理指令全局聲明函數(shù)定義類定義#include<stdio.h>等在函數(shù)之外進(jìn)行的數(shù)據(jù)聲明每個函數(shù)用來實現(xiàn)一定的功能5.3.1C++語言的基本要素2.函數(shù)是C++程序的主要組成部分一個C程序是由一個或多個函數(shù)組成的必須包含一個main函數(shù)(只能有一個)程序總是從main開始執(zhí)行。3.一個函數(shù)定義包括兩個部分:函數(shù)首部(函數(shù)頭):intmain()函數(shù)體:函數(shù)首部下面的花括號內(nèi)的部分{}。intmain(){}C++程序源文件1源文件2源文件n全局聲明函數(shù)定義1編譯預(yù)處理函數(shù)首部函數(shù)體類定義...C++語言程序構(gòu)成5.3.1C++語言的基本要素5.3.1C++語言的基本要素#include<iostream.h>intmain(){
cout<<”Helloworld!\n”;return0;}
5.3.2C++語言的數(shù)據(jù)類型數(shù)據(jù)類型規(guī)定了該類型數(shù)據(jù)所占內(nèi)存空間的大小,及其所能夠進(jìn)行的操作。高級語言內(nèi)部通常提供一組基本數(shù)據(jù)類型,包括類型名,各種類型值的文字量寫法,并為每個類型提供一組可用操作。使用者不必了解每個類型值的具體表示形式,不必了解操作的實現(xiàn)方式,就可以通過類型名和相應(yīng)操作,使用各個基本類型。高級語言也允許程序員根據(jù)需要構(gòu)建數(shù)據(jù)類型,稱為構(gòu)造數(shù)據(jù)類型。5.3.2C++語言的數(shù)據(jù)類型5.3.2C++語言的數(shù)據(jù)類型1、整型int整型規(guī)定了整數(shù)的表示形式,整數(shù)的運算(操作),以及整數(shù)在計算機(jī)中的表示范圍。整型數(shù)的內(nèi)部表示:二進(jìn)制補(bǔ)碼整型數(shù)的表示范圍:取決于二進(jìn)制位數(shù)整型類型標(biāo)識符:int類型修飾符:long,short,signed,unsignedc++規(guī)定:
char<=shortint<=int<=longint5.3.2C++語言的數(shù)據(jù)類型1、整型int
在32位編譯器中:int(基本整型):占4個字節(jié)short(短型)2字節(jié)long(長型)4字節(jié)signed(有符號,缺省值)unsigned(無符號)注意:long,short,signed,unsigned修飾int時int可省略5.3.2C++語言的數(shù)據(jù)類型1、整型int
擴(kuò)充的整型類型如下:有符號基本整型
[signed]int;無符號基本整型
unsignedint;有符號短整型
[signed]short[int];無符號短整型
unsignedshort[int];有符號長整型
[signed]long[int];無符號長整型
unsignedlong[int]5.3.2C++語言的數(shù)據(jù)類型在32位編譯器中整型的表示范圍類型長度(位數(shù))前綴表示范圍short[int]16[signed]-32768~32767unsigned0~65535int32
[signed]-2147483648~2147483647unsigned0~4294967295long[int]32[signed]-2147483648~2147483647unsigned0~42949672955.3.2C++語言的數(shù)據(jù)類型2、實型實型又稱浮點型,是用來表示具有小數(shù)點的實數(shù)。數(shù)值以規(guī)范化的二進(jìn)制數(shù)指數(shù)形式存放。浮點型,用于表示實型的類型有float(單精度)、double(雙精度)和longdouble(長雙精度)。5.3.2C++語言的數(shù)據(jù)類型2、實型取值范圍類型長度(位數(shù))表示范圍有效位float32-3.4x1038~3.4x10387位double64-1.8x10308~1.8x1030815位longdouble80-1.2x104932~1.2x10493219位注:賦值范圍是參考的錢能的教材;5.3.2C++語言的數(shù)據(jù)類型3、布爾類型bool用于表示邏輯量的“真”和“假”,因此也稱為邏輯類型。0表示false,1表示true占1字節(jié)的存儲空間注意:任何數(shù)值都可自動轉(zhuǎn)換成bool值0可被轉(zhuǎn)換成false任何不等于0的數(shù)值都被轉(zhuǎn)換成true5.3.2C++語言的數(shù)據(jù)類型4、字符型char字符類型用于表示ASCII編碼字符。在32位系統(tǒng)中字符型數(shù)據(jù)占1字節(jié)。它有三種不同的類型:char1字節(jié)signedchar1字節(jié)unsignedchar1字節(jié)系統(tǒng)表示字符型數(shù)據(jù)時,不是將字符本身的形狀存入內(nèi)存,而是將字符的ASCII碼存入內(nèi)存。5.3.2C++語言的數(shù)據(jù)類型在32位編譯器中字符型的表示范圍類型長度(位數(shù))前綴表示范圍char8[signed]-128~1278unsigned0~2555.3.3常量變量和對象1、常量在程序的執(zhí)行過程中其值不能被改變的量。(1)整型常量:如1000,12345,0,-345(2)浮點型常量(實型常量):十進(jìn)制小數(shù)形式:如0.34-56.790.0指數(shù)形式:如12.34e3(代表12.34103)
(E或e前必須有數(shù)字,且指數(shù)必須是整數(shù))5.3.3常量變量和對象1、常量(3)字符常量普通字符常量:由單引號括起來的單個字符,
如‘A’,‘a(chǎn)’,‘x’,‘?’,‘$’,‘‘
。轉(zhuǎn)義字符:以轉(zhuǎn)義符“\”開頭的格式字符。使用轉(zhuǎn)義字符的目的是表示不可見的字符。經(jīng)常用的不可見字符用一個轉(zhuǎn)義符后跟一個專門的字符來表示;當(dāng)轉(zhuǎn)義字符引導(dǎo)符后接數(shù)字時,用來指定字符的ASCII碼值。默認(rèn)為八進(jìn)制,數(shù)字前加x/X為十六進(jìn)制。5.3.3常量變量和對象常見轉(zhuǎn)義字符 字符形式 功能
\‘ 單引號
\“ 雙引號
\? 問號
\\ 反斜杠字符“\” \a 響鈴
\b 退格
\n 換行
\t 水平制表符
\v 垂直制表符
\r 回車
\ooo o表示八進(jìn)制數(shù),與該八進(jìn)制對應(yīng)的字符
\xhh
h表示十六進(jìn)制數(shù),與該十六進(jìn)制對應(yīng)的字符5.3.3常量變量和對象1、常量(3)字符常量轉(zhuǎn)義字符:例如:’\101’,表示’A’;‘\x41’,表示’A’注意:0、‘0’和‘\0’的區(qū)別0表示整數(shù)‘0’表示數(shù)字0字符‘\0’表示ASCII碼值為0的字符,“空操作”1、常量(4)字符串常量由一對雙引號括起來的字符序列,
如”CHINA”,”a”,”123”。字符串常量中字符的個數(shù)稱為字符串長度。在C++中,存儲字符串常量時總是以‘\0’結(jié)束。"CHINA""a"'a'CHINA\0a
\0a注意:字符常量和字符串常量區(qū)別開來字符串長度和字符串所占內(nèi)存空間數(shù)的區(qū)別5.3.3常量變量和對象5.3.3常量變量和對象2、變量在程序運行過程中,其值可以被改變的量;用來存放初始值、中間結(jié)果或最終結(jié)果。變量的作用是存取程序中需要處理的數(shù)據(jù),對應(yīng)內(nèi)存中的一塊存儲區(qū)域,該區(qū)域的名稱即為變量名,該區(qū)域的內(nèi)容是變量的值。變量有3個基本要素合法的變量名變量的數(shù)據(jù)類型變量的數(shù)值
12a5.3.3常量變量和對象…………1243078124307912430801243081124308212430831243084124308512430861243087124308812430891243090內(nèi)存空間內(nèi)存地址存儲單元(1Byte)12變量a的地址變量a的數(shù)值例:inta=12;2、變量一般要先定義,再使用,變量定義的一般形式為:
數(shù)據(jù)類型名變量名;5.3.3常量變量和對象2、變量變量名是內(nèi)存空間的一個標(biāo)識,對變量名的操作也是對其內(nèi)存空間的操作。如:int
myAge,myWeight;
myAge=20;
myWeight=100;
myAge=myAge+1;5.3.3常量變量和對象2、變量變量模式:變量保存數(shù)據(jù)的方式,稱為“變量模式”。變量模式包括值模式和引用模式兩種。值模式指的是變量是保存值的容器,其中保存相應(yīng)的值。12x5.3.3常量變量和對象2、變量變量模式:引用模式則在變量里保存對一個數(shù)據(jù)對象的引用,數(shù)據(jù)對象里保存著數(shù)據(jù)值。12x5.3.3常量變量和對象3、對象對象的概念很廣泛,通常指在程序運行中存在的任何元素。例如:變量、有名的常量、代碼段、動態(tài)分配的內(nèi)存塊、程序中的文字量、字符串等等。在程序運行中,需要創(chuàng)建和使用的各種程序?qū)ο笥校海?)程序變量(2)程序常量(3)匿名數(shù)據(jù)對象
(4)動態(tài)分配的匿名數(shù)據(jù)對象
(5)計算中生成的臨時數(shù)據(jù)對象,如函數(shù)返回值、運算符的計算結(jié)果等
(6)其他對象,如程序的運行系統(tǒng)所需要的對象。5.3.3常量變量和對象例子:假設(shè)圓的半徑r=2,計算圓的面積并輸出結(jié)果。#include<iostream.h>intmain(){
intr=2;doublearea; area=3.14159*r*r;
cout<<"圓的面積為:"<<area<<"\n"; return0; }5.3.4運算符和表達(dá)式運算符和表達(dá)式是實現(xiàn)數(shù)據(jù)操作的兩個重要組成部分。運算符:即操作符,如+,-,*,/等操作數(shù):是運算符的運算對象,變量、常量、函數(shù)等。表達(dá)式:是由運算符和操作數(shù)按照一定規(guī)則組合而成的式子。例:(2*x+a)*sin(b)-201、運算符根據(jù)運算符的操作數(shù)的個數(shù)不同,可將其分為:單目運算符(一元):對一個操作數(shù)運算雙目運算符(二元):對二個操作數(shù)運算三目運算符(三元):對三個操作數(shù)運算5.3.4運算符和表達(dá)式1、運算符在C++中運算符大致可以分為:算術(shù)運算符:+-*/%賦值運算符:=+=-=*=/=%=自增/自減運算符:++、--關(guān)系運算符:<<=>>===!=邏輯運算符:&&||位運算符:~&^|<<>>條件運算符:?:逗號運算符:,指針運算符:*&求字節(jié)數(shù)運算符:sizeof強(qiáng)制類型轉(zhuǎn)換運算符:類型分量運算符:.->下標(biāo)運算符:[]5.3.4運算符和表達(dá)式5.3.4運算符和表達(dá)式(1).算術(shù)運算符+,-,*,/,%(求余數(shù))。除法運算“/
”,兩個整數(shù)相除,結(jié)果為整數(shù),否則為實數(shù)。例如:
5/2=25.0/2=2.55%2=1(x+5)*y+6(2).賦值運算符在C++中,=稱為賦值運算符,其使用形式為:
變量名=表達(dá)式“=”不同于數(shù)學(xué)中的等號。inta;a=3;5.3.4運算符和表達(dá)式(2).賦值運算符在賦值符“=”之前加上算術(shù)運算符,可以構(gòu)成復(fù)合賦值運算符。算術(shù)運算+=加賦值-=減賦值*=乘賦值/=除賦值%=求余賦值5.3.4運算符和表達(dá)式(2).賦值運算符例如:inta,b;a+=b等效于a=a+ba*=b-4/c+d等效于:
a=a*(b-4/c+d)
不等效于:
a=a*b-4/c+d(3).自增、自減運算符——單目運算符自增:++++i:先加1后使用i++:先使用后加1例:i=3;j1=++i;j1=4相當(dāng)于執(zhí)行:i=i+1;j1=i;j2=i++;j2=3相當(dāng)于執(zhí)行:j2=i;i=i+1;自減:----i:先減1后使用i--:先使用后減1例:i=3;j1=--i;j1=2相當(dāng)于執(zhí)行:i=i-1;j1=i;j2=i--;j2=3相當(dāng)于執(zhí)行:j2=i;i=i-1;5.3.4運算符和表達(dá)式5.3.4運算符和表達(dá)式(4).關(guān)系運算符——雙目運算符,結(jié)果值為真/假。大小判斷>、>=、<、<=。相等判斷==、!=。2<36>=8a==3a=3
2+3<4-12+(3<4)-15.3.4運算符和表達(dá)式(5).邏輯運算符:&&(邏輯與)
||(邏輯或)
!(邏輯非)&&和||是雙目(元)運算符!是一目(元)運算符a&&b
:a和b都為真,
a&&b才為真,
否則為假a||b
:a和b都為假,
a||b才為假,
否則為真!a:a真!a假,a假!a真5.3.4運算符和表達(dá)式例子:判斷年齡在13至17歲之內(nèi)?age>13&&age<17(不能寫成13<age<17)判斷年齡小于12或大于65?age<12||age>65判別某一年是否閏年,用邏輯表達(dá)式表示:(year%4==0&&year%100!=0)||(year%400==0)如果表達(dá)式值為1,則閏年;否則為非閏年例子:(1)若a=4,則!a的值為0(2)若a=4,b=5,則a&&b的值為1(3)若a=4,b=5,則a||b的值為1(4)若a=4,b=5,則!a||b的值為1(5)4&&0||2的值為1(6).運算符的優(yōu)先級與結(jié)合性:優(yōu)先級,表達(dá)式中不同操作符的執(zhí)行順序的規(guī)定。上述運算符中單目運算符的優(yōu)先級最高,其次是算術(shù)運算,再次是關(guān)系運算,然后是邏輯運算,最后是賦值運算。如:a=-5*6+3;5.3.4運算符和表達(dá)式!++--(高)算術(shù)運算符關(guān)系運算符
&&和||賦值運算符(低)(6).運算符的優(yōu)先級與結(jié)合性:結(jié)合性,是指表達(dá)式中出現(xiàn)同等優(yōu)先級的操作時,該先做那個操作的規(guī)定。它有從左至右和從右至左兩種。從右至左:單目運算符,賦值運算符;從左至右:算術(shù)運算符,關(guān)系運算符;
如:a=3+d*e/5;
注:只有當(dāng)兩個同級運算符共用一個操作數(shù)時,結(jié)合性才會起作用。5.3.4運算符和表達(dá)式5.3.4運算符和表達(dá)式2、表達(dá)式是由運算符和操作數(shù)按照語法規(guī)則構(gòu)成的操作序列,其目的是用來描述一個計算。對于計算過程的控制手段包括:優(yōu)先級、結(jié)合性、括號、運算對象的求值順序。所謂求值次序,是指表達(dá)式中各個操作符的求值次序視編譯器不同而不同。 如:doublee=3*d+d++;5.3.5基本語句語句是命令,基本語句提供了語言的基本動作。1、C++語句分類(1)控制語句:
用于實現(xiàn)一定的控制功能。條件語句:用于實現(xiàn)程序執(zhí)行過程中的條件轉(zhuǎn)移。循環(huán)語句:用于實現(xiàn)程序中重復(fù)進(jìn)行某些操作。(2)表達(dá)式語句;
a=3; b=3+d*e/5;(3)空語句
;5.3.5基本語句1、C++語句分類(4)函數(shù)調(diào)用語句;sqrt(4);(5)復(fù)合語句;由一對花括號{}括起來的一組語句。如果要在只執(zhí)行一條語句的地方執(zhí)行多條語句,那么這多條語句要寫成一條復(fù)合語句。5.3.5基本語句2、賦值語句(1)賦值語句的基本形式為:
<對象>=<表達(dá)式>;
表示把賦值號右側(cè)表達(dá)式的值復(fù)制給左側(cè)的對象。
例如:a=5;
a的原值為7a7a5
a的新值變成了5
執(zhí)行賦值語句a=55.3.5基本語句2、賦值語句(2)左值和右值:左值(L-value):可出現(xiàn)在賦值運算符左邊的表達(dá)式。左值表達(dá)式具有存放數(shù)據(jù)的空間,并且該內(nèi)存空間可以執(zhí)行寫操作。例如:inta,b;a=3;//ok(a+b)=8;//error賦值表達(dá)式的值和類型是左值的值和類型。5.3.5基本語句2、賦值語句(2)左值和右值:右值(R-value)
:可出現(xiàn)在賦值運算符右邊的可求值的表達(dá)式。說明:左值既可以出現(xiàn)在賦值運算符的左邊,又可以出現(xiàn)在右邊例如:inta;intb;b=8;//b是左值,8是右值a=b;//a是左值,b為右值32=a+2;//error,32是常量,只能作右值5.3.5基本語句2、賦值語句例子:怎樣實現(xiàn)兩個變量值的互換?★●AB互換前●★AB互換后★●ABT★5.3.5基本語句2、賦值語句例子:★●ABT★●5.3.5基本語句2、賦值語句例子:ABT★●★●5.3.5基本語句2、賦值語句例子:int
a,b,t;a=3;b=5;t=a;a=b;b=t;5.3.5基本語句3、輸入輸出語句幾乎每一個程序都包含輸入輸出,輸入輸出是程序中最基本的操作之一。所謂輸入輸出是以計算機(jī)主機(jī)為主體而言的;從輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)向主機(jī)輸入數(shù)據(jù)稱為輸入。從主機(jī)向輸出設(shè)備(如顯示器、打印機(jī)等)輸出數(shù)據(jù)稱為輸出。5.3.5基本語句3、輸入輸出語句(1)C語言格式輸出函數(shù)printf
printf(格式控制,輸出表列);“格式控制”是用雙引號括起來的字符串,包括兩種信息:
格式說明—由“%”和格式字符組成,如%d,%f等。其作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。
普通字符—即需要原樣輸出的字符?!拜敵霰砹小笔切枰敵龅囊恍?shù)據(jù),可以是變量、表達(dá)式。例如:inta=3;charb=‘s’;
printf(“a=%d,b=%c\n”,a,b);結(jié)果:a=3,b=s5.3.5基本語句格式字符說明%d按實際位數(shù)輸出十進(jìn)制整型數(shù)據(jù)。
%mdm為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實際位數(shù)輸出。%o以八進(jìn)制數(shù)形式輸出整數(shù)。%x以十六進(jìn)制數(shù)形式輸出整數(shù)。%c輸出一個字符。%s輸出一個字符串。%f輸出實數(shù),以小數(shù)形式輸出。3、輸入輸出語句(1)C語言格式輸出函數(shù)printf5.3.5基本語句3、輸入輸出語句(2)C語言格式輸入函數(shù)scanf
scanf(格式控制,地址表列)“格式控制”的含義同printf函數(shù);“地址表列”是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址。例如:
int
a,b,c;
scanf(“%d%d%d”,&a,&b,&c);
printf(“%d,%d,%d\n”,a,b,c);運行結(jié)果:3453,4,55.3.5基本語句3、輸入輸出語句C++語言中使用面向?qū)ο蟮腎/O流,定義了兩個輸入輸出對象:cin和cout。流是C++的一個核心概念,數(shù)據(jù)從一個位置到另一個位置的流動抽象為“流”。當(dāng)數(shù)據(jù)從鍵盤流入到程序中時,這樣的流稱為輸入流當(dāng)數(shù)據(jù)從程序中流向屏幕或磁盤文件時,這樣的流稱為輸出流5.3.5基本語句(1)輸入流對象(cin)cin標(biāo)準(zhǔn)輸入流對象,對應(yīng)的輸入設(shè)備是鍵盤,可以獲得鍵盤的多個輸入值。提取運算符“>>”可以連續(xù)寫多個,每個提取運算符后面跟一個獲得輸入值的變量或?qū)ο?。提取運算符“>>”能自動將cin輸入值轉(zhuǎn)換成相應(yīng)變量的數(shù)據(jù)類型。從鍵盤輸入的數(shù)據(jù)的個數(shù)、數(shù)據(jù)類型及順序,必須與cin中的列舉的變量一一匹配。
cin>><對象1>{>><對象2>…};5.3.5基本語句(1)輸入流對象(cin)intnum1,num2,num3;cin>>num1>>num2>>num3;1246doubled;cin>>num1>>d>>num2;232.345.3.5基本語句(2)輸出流對象(cout)cout是標(biāo)準(zhǔn)輸出流對象,對應(yīng)的輸出設(shè)備是顯示器,通過cout可以輸出一個整數(shù)、實數(shù)、字符及字符串。插入運算符“<<”可以連續(xù)寫多個,每個后面可以跟一個要輸出的常量、變量、轉(zhuǎn)義序列符及表達(dá)式等。
cout<<<對象1>{<<<對象2>…};5.3.5基本語句(2)輸出流對象(cout)例如:cout<<"ABCD\t"<<1234<<"\t"<<endl;ABCD 1234
5.3.5基本語句例子:輸入兩個整數(shù),交換后輸出。#include<iostream.h> //頭文件,處理C++中的輸入和輸出操作intmain(){
inta,b,temp;
cin>>a>>b;
//輸入兩個整數(shù),分別保存在變量a和b中
temp=a; a=b; b=temp;
cout<<"Afterswap…"<<endl; //輸出字符串,然后換行
cout<<a<<","<<b<<endl;
//輸出變量a和b中的值,然后換行
return0;}5.3.6三種基本程序結(jié)構(gòu)1、順序結(jié)構(gòu)程序的執(zhí)行按照語句出現(xiàn)的先后次序順序進(jìn)行。程序中的每個語句都會被執(zhí)行到。5.3.6三種基本程序結(jié)構(gòu)例子:通過鍵盤輸入一個三角形的底和高,計算其面積并輸出。#include<iostream.h>
intmain(){floatwidth,height,area;
/*定義變量*/
cout<<"Enterwidthandheight:";
/*輸出提示信息*/cin>>width>>height;/*通過鍵盤輸入底和高*/area=(width*height)/2.0;/*計算面積*/cout<<"Thearaeis:"<<area<<endl;/*輸出面積的值*/
retrun0;}5.3.6三種基本程序結(jié)構(gòu)說明:(1)C++程序由函數(shù)構(gòu)成,可以包含多個函數(shù),但最少也要包含一個函數(shù),即main()函數(shù)。(2)C++程序書寫格式自由。(3)C++程序可以包含語句的注釋,有助于對程序的理解,不參與程序的運行。
//
單行注釋
/*……*/是多行注釋;
5.3.6三種基本程序結(jié)構(gòu)2、選擇結(jié)構(gòu)對給定條件進(jìn)行判斷,根據(jù)判斷的結(jié)果(真或假)來決定執(zhí)行兩個分支或多個分支程序段中的一個分支。也稱為“分支結(jié)構(gòu)”。C++語言有兩種選擇語句:(1)if語句(2)switch語句if語句的形式簡單的if語句:單分支if…else語句:雙分支嵌套的if語句:多分支(1)if語句簡單的if語句——單分支格式說明if后的()不能省略。語句s可以是0條、1條或多條語句。若為多條語句,語句前后須加上{},變成塊語句。if(<e>){<s>}[another]if(<e>)<s>[another]或測試es否是(1)if語句例子:輸入兩個整數(shù)按從小到大排序后輸出#include<iostream>usingnamespacestd;intmain(){
inta,b,temp;
cout<<"請輸入兩個整數(shù):";
cin>>a>>b;
if(a>b)
{
//塊開始,另起一行,與if對齊
temp=a;a=b;b=temp;
//縮進(jìn)
}
//塊結(jié)束,與最靠近它的{對齊
cout<<"排序的結(jié)果為:"<<a<<"\t"<<b<<endl; return0;}
例子:將兩個整數(shù)按從小到大排序說明:名稱空間以“.h”為擴(kuò)展名,C語言為了使iostream中的定義對程序有效,還需使用下面的名稱空間編譯指令來指定:usingnamespacestd;std是“名空間”,避免名稱沖突。#include<iostream.h>#include<iostream>usingnamespacestd;ANSI/ISOC++if…else語句——雙分支格式if(<e>){<s1>}else{
<s2>}[another]if(<e>)<s1>else<s2>[another]或es1否是s2(1)if語句例子:輸入兩個整數(shù),輸出其中的較大值。//**************//*求a、b中的較大值*//**************#include<iostream.h>intmain(){
inta,b,max;
cin>>a>>b;//輸入a、b的值
if(a>b) max=a;
else max=b;
cout<<a<<"和"<<b<<"的較大值為:"<<max<<endl; return0; }嵌套的if語句——多分支if-else語句的else分支語句中包含if-else語句。舉例:if(<e1>){<s1>}else{
if(<e2>)
{
<s2>
}else{<s3>
}
<s4>}
if(<e1>)
<s1>
elseif(<e2>)<s2>
elseif(<e3>)<s3>
┆
elseif(<em>)<sm>
else<sm+1>(1)if語句#include<iostream.h>intmain(){ floatfScore;
cout<<"請輸入一個百分制成績:";
cin>>fScore;
if(fScore>=90)
cout<<"A"<<endl;
else
if(fScore>=80)
cout<<"B"<<endl;
else
if(fScore>=70)
cout<<"C"<<endl;
else
if(fScore>=60)
cout<<"D"<<endl;
else
cout<<"E"<<endl; return0;}例子:將輸入的百分制成績轉(zhuǎn)換成等級。(1)if語句說明:1)如果在if、esle后有多條語句,則必須用花括號將這些語句括起來,否則只有后跟的第1條語句有效。2)if語句中的條件表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是任意的數(shù)值類型。if(a>0)
cout<<“OK\n”;
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 協(xié)議離婚的協(xié)議書范本10篇
- 2023安全生產(chǎn)責(zé)任協(xié)議書七篇
- 萬能模板賠償協(xié)議書范本10篇
- 機(jī)械基礎(chǔ) 課件 模塊六任務(wù)二 鏈傳動
- 中醫(yī)藥基礎(chǔ)專題知識宣教
- (立項備案申請模板)超薄金剛石項目可行性研究報告參考范文
- (安全生產(chǎn))選礦廠安全生產(chǎn)標(biāo)準(zhǔn)化自評報告
- (2024)酒文化創(chuàng)意產(chǎn)業(yè)園建設(shè)項目可行性研究報告(一)
- 清明節(jié)緬懷先烈主題班會71
- 2023年薄板木船項目籌資方案
- 【基于抖音短視頻的營銷策略分析文獻(xiàn)綜述2800字(論文)】
- 2021-2022學(xué)年度西城區(qū)五年級上冊英語期末考試試題
- 《組織行為學(xué)》(本)形考任務(wù)1-4
- 廣東省廣州市白云區(qū)2022-2023學(xué)年九年級上學(xué)期期末語文試題
- 劇本-進(jìn)入黑夜的漫長旅程
- DB43-T 958.3-2023 實驗用小型豬 第3部分:配合飼料
- 化肥購銷合同范本正規(guī)范本(通用版)
- 健康管理專業(yè)職業(yè)生涯規(guī)劃書
- 外墻巖棉板施工方案
- 吊裝葫蘆施工方案
- 自動化設(shè)備調(diào)試規(guī)范
評論
0/150
提交評論