第1章C++語言基礎(chǔ)課件_第1頁
第1章C++語言基礎(chǔ)課件_第2頁
第1章C++語言基礎(chǔ)課件_第3頁
第1章C++語言基礎(chǔ)課件_第4頁
第1章C++語言基礎(chǔ)課件_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章C++語言基礎(chǔ)第1章C++語言基礎(chǔ)11.1計算機(jī)語言的發(fā)展

1.機(jī)器語言(由0和1組成的指令)

機(jī)器語言是一種CPU的指令系統(tǒng),它是該CPU可以識別的一組由0和1序列構(gòu)成的指令代碼。這種程序雖然可以被機(jī)器直接理解和執(zhí)行,但是由于它們不直觀、難記、難認(rèn)、難理解、不易查錯,只能被少數(shù)專業(yè)人員掌握,同時程序的生產(chǎn)效率很低,質(zhì)量難以保證。

匯編語言程序的執(zhí)行過程

不同型號的計算機(jī)的機(jī)器語言和匯編語言是互不通用的。匯編語言和機(jī)器語言都是面向機(jī)器的程序設(shè)計語言,一般稱為低級語言。

2.匯編語言(用英文字母和數(shù)字表示指令)

1.1計算機(jī)語言的發(fā)展1.機(jī)器語言(由0和1組成的指令)23.高級語言(接近于人的自然語言和數(shù)學(xué)語言)

高級語言是一種與硬件結(jié)構(gòu)及指令系統(tǒng)無關(guān),表達(dá)方式比較接近自然語言和數(shù)學(xué)表達(dá)式的一種計算機(jī)程序設(shè)計語言。

優(yōu)點:

描述問題能力強(qiáng),通用性、可讀性、可維護(hù)性都較好。缺點:

執(zhí)行速度較慢,編制訪問硬件資源的系統(tǒng)軟件較難。用高級語言編寫的程序稱為“源程序”,計算機(jī)不能直接識別和執(zhí)行,高級語言程序有編譯和解釋兩種執(zhí)行方式。

3.高級語言(接近于人的自然語言和數(shù)學(xué)語言)高級語3高級語言程序的編譯執(zhí)行:

將源程序整個編譯成等價的,獨立的目標(biāo)程序,然后通過鏈接程序?qū)⒛繕?biāo)程序鏈接成可執(zhí)行程序。高級語言編譯執(zhí)行過程

高級語言程序的編譯執(zhí)行:將源程序整個編譯成等價的,4高級語言程序的解釋執(zhí)行:

解釋方式是將源程序逐句翻譯,翻譯一句執(zhí)行一句,邊翻譯邊執(zhí)行,不產(chǎn)生目標(biāo)程序。整個執(zhí)行過程,解釋程序都一直在內(nèi)存中。高級語言解釋執(zhí)行過程

高級語言程序的解釋執(zhí)行:解釋方式是將源程序逐句翻譯5高級語言發(fā)展的三個階段:1.非結(jié)構(gòu)化的語言優(yōu)點:編程風(fēng)格比較隨意。缺點:難以閱讀和維護(hù)。2.結(jié)構(gòu)化語言優(yōu)點:由具有良好特性的基本結(jié)構(gòu)(順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu))構(gòu)成。缺點:對于龐大、復(fù)雜的程序難以開發(fā)和維護(hù)。面向過程的語言3.面向?qū)ο蟮恼Z言通過類和對象把程序所涉及的數(shù)據(jù)結(jié)構(gòu)和對它施行的操作有機(jī)的組織成模塊,將數(shù)據(jù)及對數(shù)據(jù)的處理進(jìn)行最大限度的封裝,并通過繼承和重載等手段,使開發(fā)出來的軟件易重用、易修改、易測試、易維護(hù)、易擴(kuò)充。高級語言發(fā)展的三個階段:1.非結(jié)構(gòu)化的語言面向過程的語言3.61.2C++語言的產(chǎn)生C++是從C語言發(fā)展演變而來的,首先是一個更好的C引入了類的機(jī)制,最初的C++被稱為“帶類的C”1983年正式取名為C++從1989年開始C++語言的標(biāo)準(zhǔn)化工作于1994年制定了ANSIC++標(biāo)準(zhǔn)草案于1998年11月被國際標(biāo)準(zhǔn)化組織(ISO)批準(zhǔn)為國際標(biāo)準(zhǔn),成為目前的C++1.2C++語言的產(chǎn)生C++是從C語言發(fā)展演變而來的,首先7一、語言特點除保持了C語言的優(yōu)點外,還能更自然地體現(xiàn)抽象數(shù)據(jù)類型的概念,從而更本質(zhì)地描述數(shù)據(jù)結(jié)構(gòu)和算法,在設(shè)計、開發(fā)系統(tǒng)軟件與應(yīng)用軟件中,展現(xiàn)了強(qiáng)大的生命力;支持面向過程和面向?qū)ο蟮某绦蛟O(shè)計;運算符、運算類型、數(shù)據(jù)類型豐富,功能齊全,靈活多樣;可移植性強(qiáng),適用范圍廣;語法限制少,程序設(shè)計的自由度大;目標(biāo)代碼質(zhì)量高,快捷高效。1.3C++程序的基本結(jié)構(gòu)一、語言特點1.3C++程序的基本結(jié)構(gòu)8例1.1一個簡單的C++程序#include<iostream.h>voidmain(){cout<<”WelcometoC++world!”;}程序輸出結(jié)果:WelcometoC++world!例1.1一個簡單的C++程序9例1.2從鍵盤輸入兩個整數(shù)值,計算其和,并輸出計算結(jié)果。#include<iostream.h>voidmain()

{inti,j,sum;cout<<”Entertwointegers:”;cin>>i>>j;sum=i+j;cout<<”Thesumis\n”<<sum<<endl;}程序輸出結(jié)果:Entertwointegers:6358Thesumis121例1.2從鍵盤輸入兩個整數(shù)值,計算其和,并輸出計算結(jié)果10例1.3運行下述C++程序?qū)@得與例1.1相同的輸出結(jié)果。#include<iostream.h>voiddisplaymessage1(){cout<<”Welcome”;}voiddisplaymessage2(){cout<<”to”;}voiddisplaymessage3(){cout<<”C++world!\n”;}voidmain(){displaymessage1();displaymessage2();displaymessage3();}程序輸出結(jié)果:WelcometoC++world!例1.3運行下述C++程序?qū)@得與例1.1相同的輸出結(jié)果111.函數(shù)是C++程序的主要組成部分一個C++程序是由一個或多個函數(shù)組成的必須包含一個main函數(shù)(只能有一個)每個函數(shù)都用來實現(xiàn)一個或幾個特定功能被調(diào)用的函數(shù)可以是庫函數(shù),也可以是自己編制設(shè)計的函數(shù)2.一個函數(shù)包括兩個部分:函數(shù)首部:一個函數(shù)名后必須跟一對圓括號,括號內(nèi)寫函數(shù)的參數(shù)名及其類型。若函數(shù)無參,在括弧中寫void或空括弧C++源程序主要有以下幾個特點:1.函數(shù)是C++程序的主要組成部分C++源程序主要有以下幾個12函數(shù)體(花括號內(nèi)的部分。若一個函數(shù)有多個花括號,則最外層的一對花括號為函數(shù)體的范圍)聲明部分可缺省執(zhí)行部分可缺省3.程序總是從main函數(shù)開始執(zhí)行4.C++程序?qū)τ嬎銠C(jī)的操作由C++語句完成C++程序書寫格式是比較自由的一行內(nèi)可以寫幾個語句一個語句可以分寫在多行上為清晰起見,習(xí)慣上每行只寫一個語句函數(shù)體(花括號內(nèi)的部分。若一個函數(shù)有多個花括號,則最外層的一135.數(shù)據(jù)聲明和語句最后必須有分號6.C++語言本身不提供輸入輸出語句,輸入和輸出的操作是由庫函數(shù)cout和cin等函數(shù)來完成的。C++對輸入輸出實行“函數(shù)化”。7.程序應(yīng)當(dāng)包含注釋,增加可讀性C++語言有兩種注釋方式://:單行注釋可單獨占一行可出現(xiàn)在一行中其他內(nèi)容的右側(cè)/*……*/:塊式注釋可包含多行第1章C++語言基礎(chǔ)課件14例1.4形式一//thefirstline,//thesecondline,//andthethirdline.形式二//thefirstline,thesecondline,andthethirdline.形式三/*thefirstline,thesecondline,andthethirdline.*/形式四/*thefirstline,*//*thesecondline,*//*andthethirdline.*/例1.4形式三151.4基本字符集與標(biāo)識符一、基本字符集數(shù)字:0-9英文大、小寫字母:A-Z,a-z專用符號:+-*/=<>()[]{}\等等若干字符對:==!=<=>=等等。特定功能的符號:轉(zhuǎn)義符(如\n表示換行)1.4基本字符集與標(biāo)識符一、基本字符集16二、標(biāo)識符自定義標(biāo)識符:常量、變量、函數(shù)、符號常量等的名稱。如a,sum,max,PI等

作為標(biāo)識符必須滿足以下規(guī)則:1)必須由字母或下劃線開頭2)其它部分可由字母、下劃線或數(shù)字組成3)大小寫字母代表不同的標(biāo)識符4)不能使用C++的關(guān)鍵字,盡量不使用系統(tǒng)預(yù)定義標(biāo)識符5)盡量不要使用l(L),f(F),u(U)等作為標(biāo)識符常量標(biāo)識符說明時用關(guān)鍵字const做限定符或預(yù)處理命令#define,且必須為該常量標(biāo)識符賦值。在整個程序運行期間,不允許改變常量標(biāo)識符的值。用大寫字符序列。例1.5常量標(biāo)識符說明示例constintZERO=0;#definePI=3.14159constdoublePI=3.14159;二、標(biāo)識符17關(guān)鍵字(保留字):在C++中有特定含義。如if,else,int,char,break等預(yù)定義標(biāo)識符:C++預(yù)先規(guī)定用來標(biāo)識預(yù)定義的命令、庫函數(shù)等,如include,cout等。允許程序員將系統(tǒng)預(yù)定義標(biāo)識符重新定義關(guān)鍵字(保留字):在C++中有特定含義。如if,18例1.6一些符合規(guī)則的標(biāo)識符smart_decisionFLOATB757例1.7幾個非法的標(biāo)識符1st不能以數(shù)字開頭TwoWords不能包含空格符What_is_this?問號符不允許under-weight減號符不允許例1.6一些符合規(guī)則的標(biāo)識符191.5簡單數(shù)據(jù)類型兩類數(shù)據(jù)類型:預(yù)定義數(shù)據(jù)類型和程序員自定義數(shù)據(jù)類型數(shù)據(jù)類型定義的作用:規(guī)定變量可接受值的集合以及對它所能執(zhí)行的操作指明對該類型的數(shù)據(jù)項(即變量)應(yīng)分配多大內(nèi)存空間規(guī)定能用于該類型數(shù)據(jù)項的操作;防止數(shù)據(jù)類型不匹配。1.5簡單數(shù)據(jù)類型兩類數(shù)據(jù)類型:預(yù)定義數(shù)據(jù)類型和程序20

21VisualC6.0編譯系統(tǒng)在32位計算機(jī)上運行,int型、short型整數(shù)將各占內(nèi)存4個字節(jié)一、整型類型1整型變量VisualC6.0編譯系統(tǒng)在32位計算機(jī)上運行,int222整型常量整型常量簡稱整常量。三種表示整型常量的形式:十進(jìn)制形式、八進(jìn)制形式、十六進(jìn)制形式。十進(jìn)制整常量:以非0數(shù)字打頭的十進(jìn)制數(shù)字串八進(jìn)制整常量:以數(shù)字0打頭的八進(jìn)制數(shù)字串十六進(jìn)制整常量:以數(shù)字和字母的組合0x或0X打頭的十六進(jìn)制數(shù)字串2整型常量23程序設(shè)計中常用的數(shù)制程序設(shè)計中常用的數(shù)制24不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——R進(jìn)制→十進(jìn)制各位數(shù)字與它的權(quán)相乘,其積相加。例如:(11111111.11)2=1×27+1×26+1×25+1×24

+1×23+1×22+1×21+1×20+1×2-1+1×2-2

=(255.75)10(3506.2)8=3×83+5×82+0×81+6×80+2×8-1

=(1862.25)10(0.2A)16=2×16-1+10×16-2=(0.1640625)10不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——R進(jìn)制→十進(jìn)制各25不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——十進(jìn)制→R進(jìn)制十進(jìn)制整數(shù)轉(zhuǎn)換成R進(jìn)制的整數(shù)“除R取余”法,例如:268余數(shù)234┄┄┄┄┄┄┄┄┄┄┄┄0低位217┄┄┄┄┄┄┄┄┄┄┄028┄┄┄┄┄┄┄┄┄┄┄124┄┄┄┄┄┄┄┄┄┄022┄┄┄┄┄┄┄┄┄┄021┄┄┄┄┄┄┄┄┄00┄┄┄┄┄┄┄┄┄1高位所以6810=10001002不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——十進(jìn)制→R進(jìn)制26十進(jìn)制小數(shù)轉(zhuǎn)換成R進(jìn)制小數(shù)“乘R取整”法,例如:高位0.3125×2=0.6250.625×2=1.250.25×2=0.50.5×2=1.0所以0.312510=0.01012

十進(jìn)制小數(shù)轉(zhuǎn)換成R進(jìn)制小數(shù)27不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——二、八、十六進(jìn)制的相互轉(zhuǎn)換每位八進(jìn)制數(shù)相當(dāng)于三位二進(jìn)制數(shù)每位十六進(jìn)制數(shù)相當(dāng)于四位二進(jìn)制數(shù)(1011010.10)2=(001

011

010.100)2=(132.4)8(1011010.10)2=(0101

1010.1000)2=(5A.8)16(F7)16=(1111

0111)2=(11110111)2不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——二、八、十六進(jìn)制的相互轉(zhuǎn)換每位八28例1.8十進(jìn)制、八進(jìn)制、十六進(jìn)制整常量示例220十進(jìn)制整常量-560十進(jìn)制整常量06八進(jìn)制整常量,相當(dāng)于十進(jìn)制數(shù)60106八進(jìn)制整常量,相當(dāng)于十進(jìn)制數(shù)700x4e十六進(jìn)制整常量,相當(dāng)于十進(jìn)制數(shù)780XFF十六進(jìn)制整常量,相當(dāng)于十進(jìn)制數(shù)255例1.8十進(jìn)制、八進(jìn)制、十六進(jìn)制整常量示例29C++允許在變量說明時直接賦予一個初始值,這稱為變量初始化。例1.9整型變量說明及初始化示例inta,b;/*說明a,b為基本整型變量*///且它們分別具有隨機(jī)初始值intm=4,p=3,n=2;//說明m,p,n為基本整型變量,//且它們分別具有初始值4,3,2C++允許在變量說明時直接賦予一個初始值,這稱為變量30二、實數(shù)類型1實型變量二、實數(shù)類型312實型常量實型常量簡稱實常量。實型常量有兩種表現(xiàn)形式:十進(jìn)制小數(shù)點形式和科學(xué)記數(shù)法的指數(shù)形式例1.10實常量示例6.365 十進(jìn)制小數(shù)點形式6.8e-5科學(xué)記數(shù)法的指數(shù)形式,表示6.810-5,即0.000068。6.8E-5

與上數(shù)相同。注:浮點數(shù)的小數(shù)點兩邊至少一邊要有數(shù)字,階碼標(biāo)志E(e)前后要有數(shù)字,否則為非法實數(shù)。如345,E7等。2實型常量32實常量缺省認(rèn)作屬于double類型。例1.11單精度型實常量與長雙精度型實常量示例6.365 雙精度(double)實常量3.14159f單精度(float)實常量3.1415926535897932L長雙精度型實常量,所有小數(shù)位均為有效數(shù)字。長雙精度型實常量可具有約19位有效數(shù)字。實常量缺省認(rèn)作屬于double類型。33例1.12實型變量說明及初始化示例floatradius,diameter,area;/*說明radius,diameter,area為單精度型實變量*/doublepi=3.14159265358979;/*說明pi為雙精度型實變量,且具有相應(yīng)初始值*/第1章C++語言基礎(chǔ)課件34三、字符類型char類型數(shù)據(jù)用來存放ASCII字符集內(nèi)的某個字符。C++支持?jǐn)U展ASCII代碼,共包括256個不同字符。1字符型變量C++規(guī)定,char類型數(shù)據(jù)在操作時將按整型量處理,在計算機(jī)內(nèi)部,一個char類型數(shù)據(jù)所對應(yīng)的整數(shù)值就是該字符的ASCII字符集中所對應(yīng)的序數(shù)值或序號。三、字符類型352字符型常量將字符用單引號括起來,即成一個字符型常量或簡稱字符常量。例1.13字符常量示例'A'表示英文大寫字母A的字符常量。'a'表示英文小寫字母a的字符常量。''表示空格符字符常量。2字符型常量36例1.14以下所示均為非法的字符常量表示''字符常量的單引號對內(nèi)必須有一個字符,若為空格,應(yīng)寫為''。'Turbo'字符常量的單引號對內(nèi)只能包含一個字符。''a''''a''是字符串常量(a\0),而'a'才是字符常量。例1.14以下所示均為非法的字符常量表示37字符數(shù)據(jù)的使用方法字符數(shù)據(jù)和整型數(shù)據(jù)之間可以運算。字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值。例1.15#include<iostream.h>voidmain(){charc1=97,c2=‘b’;cout<<c1<<‘’<<c2<<endl;}程序輸出結(jié)果:ab字符數(shù)據(jù)的使用方法38四、布爾類型bool、false和true均為C++關(guān)鍵字。規(guī)定false<true。系統(tǒng)將false的值轉(zhuǎn)換為0,將true的值轉(zhuǎn)換為1bool型數(shù)據(jù)占據(jù)1字節(jié)內(nèi)存。四、布爾類型391.6運算符與表達(dá)式初探一、算術(shù)運算符與算術(shù)表達(dá)式1.6運算符與表達(dá)式初探一、算術(shù)運算符與算術(shù)表達(dá)式40雙目運算符左右兩邊操作數(shù)的類型必須一致才能進(jìn)行運算,如果一邊是整型數(shù),另一邊是實型數(shù),則系統(tǒng)將自動把整形數(shù)轉(zhuǎn)換為等值的實型,然后再進(jìn)行運算。所有實型數(shù)的運算均按雙精度,以確保運算精度。當(dāng)雙目運算符/左右兩邊的操作數(shù)都是整型數(shù)時,其運算結(jié)果亦為整型數(shù)。對不能整除的情形,則是截斷取整(向零歸整)。要求雙目運算符%的左右兩邊的操作數(shù)均為整型數(shù),運行結(jié)果是兩數(shù)相除后的余數(shù),亦為整型數(shù)。C++規(guī)定,i%j的值的正負(fù)與i的正負(fù)一致。i%j=i-(i/j)*j(j非0)雙目運算符左右兩邊操作數(shù)的類型必須一致才能進(jìn)行運算,如果一邊41程序中的算術(shù)表達(dá)式與一般數(shù)學(xué)式在表示形式上有所不同:b2-4ac應(yīng)表示為b*b-4*a*c;sin2πx應(yīng)表示為sin(2*PI*x),其中假設(shè)PI是一個預(yù)先定義的一個常量標(biāo)識符。一律使用圓括號程序中的算術(shù)表達(dá)式與一般數(shù)學(xué)式在表示形式上有所不同:42二、關(guān)系運算符與關(guān)系表達(dá)式二、關(guān)系運算符與關(guān)系表達(dá)式43例1.16關(guān)系運算示例1+2==3結(jié)果值為1(true)'A'<'B' 結(jié)果值為1(true)'A'>='a' 結(jié)果值為0(false)'A'!='a' 結(jié)果值為1(true)例1.16關(guān)系運算示例44例1.17設(shè)int型變量a,b,c分別有值1,3,2,則b*b–4*a*c>=0 結(jié)果值為1注意:算術(shù)運算符的優(yōu)先級高于關(guān)系運算符,因此無須用圓括號將該算術(shù)表達(dá)式括起來。例1.17設(shè)int型變量a,b,c分別有值1,3,45三、邏輯運算符與邏輯表達(dá)式C++規(guī)定任何非0的值都被當(dāng)作真值,表示邏輯關(guān)系成立0值被當(dāng)作“假”值,表示邏輯關(guān)系不成立。三、邏輯運算符與邏輯表達(dá)式C++規(guī)定任何非0的值都被當(dāng)作真值46例1.18邏輯運算示例!0 結(jié)果值為1(true)!1 結(jié)果值為0(false)!5 結(jié)果值為0(false)1&&5 結(jié)果值為1(true)

例1.18邏輯運算示例47運算優(yōu)先級函數(shù)優(yōu)先括號優(yōu)先(嵌套括號中內(nèi)層括號優(yōu)先)優(yōu)先級高者優(yōu)先優(yōu)先級相同者按結(jié)合規(guī)則運算優(yōu)先級48運算符類型優(yōu)先級結(jié)合性()圓括號

從左到右+-!單目運算符從右到左*/%乘法運算符從左到右+-加法運算符從左到右<<=>>=關(guān)系運算符從左到右==!=相等測試運算符從左到右&&邏輯與從左到右||邏輯或從左到右運算符的優(yōu)先級及結(jié)合性高運算符類型優(yōu)先級結(jié)合性()圓括號

從左到右+-!單目運49例1.19設(shè)int型變量a,b,c分別有值1,3,2,則(a!=0)&&(b*b–4*a*c>=0)與a!=0&&b*b–4*a*c>=0等價,結(jié)果值為1例1.19設(shè)int型變量a,b,c分別有值1,3,250四、其他運算符增量運算符(++)和減量運算符(--)逗號運算符

表達(dá)式1,表達(dá)式2自反賦值運算符(+=,-=,*=,/=,%=)“?”運算符<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>

sizeof運算符位運算符移位運算四、其他運算符增量運算符(++)和減量運算符(--)51五、類型轉(zhuǎn)換雙目運算符兩邊操作數(shù)的類型必須一致。兩種類型轉(zhuǎn)換:隱式類型轉(zhuǎn)換與顯式類型轉(zhuǎn)換。隱式類型轉(zhuǎn)換——由系統(tǒng)自動進(jìn)行例1.20設(shè)已有帶初始賦值的變量說明inta=2,b=4;doublef=3.15;則:(a+f)/b的結(jié)果為1.2875,double型。五、類型轉(zhuǎn)換522.顯式類型轉(zhuǎn)換——強(qiáng)制類型轉(zhuǎn)換。一般形式是

(類型名)表達(dá)式或類型名(表達(dá)式)

其中類型名是一個任意基本數(shù)據(jù)類型名。例1.20設(shè)已有帶初始賦值的變量說明inta=2,b=4;doublef=3.15;(int)((a+f)/b)結(jié)果值為1(int)(a+f)/b結(jié)果值為1,注意:兩者運算過程有所不同強(qiáng)制類型轉(zhuǎn)換的優(yōu)先級高于/。2.顯式類型轉(zhuǎn)換——強(qiáng)制類型轉(zhuǎn)換。531.7賦值語句及簡單輸入、輸出一、賦值語句一般形式為變量=表達(dá)式;(=右結(jié)合,低優(yōu)先級)例1.21inti,j,k;doubler;則以下幾個語句均為合法的賦值語句:i=j=k=3; i,j,k均有整型值3r=2.5; r有雙精度實型值2.5i=r; i有整型值2r=i; r有雙精度實型值2.0注:C++不允許多重賦初始值的語句形式1.7賦值語句及簡單輸入、輸出一、賦值語句54例1.22設(shè)有變量說明intm,n,k;k=(m=5)*(n=4);執(zhí)行后,int型變量m,n,k將分別有整數(shù)值5,4,20。第1章C++語言基礎(chǔ)課件55二、輸入輸出簡述輸入、輸出標(biāo)準(zhǔn)庫函數(shù)cin、cout使用標(biāo)準(zhǔn)庫函數(shù)如cout、cin,需寫包含頭文件iostream.h。插入運算符“<<”和提取運算符“>>”分別用于輸出和輸入。插入運算符“<<”的結(jié)合性是從左到右,能夠?qū)崿F(xiàn)按順序輸出二、輸入輸出簡述56提取運算符“>>”的結(jié)合性亦為從左到右,故能按順序?qū)⑤斎敕謩e賦予相應(yīng)的變量。輸出和輸入時,系統(tǒng)對各種類型的數(shù)據(jù)都能自動進(jìn)行分析判別并按照缺省格式進(jìn)行處理,從而無需專門提供格式化串。提取運算符“>>”的結(jié)合性亦為從左到右,故能按順序?qū)⑤斎敕謩e57例1.23下述C++程序演示了使用cout語句對各種數(shù)據(jù)類型的變量、表達(dá)式按缺省格式輸出的形式#include<iostream.h>voidmain(){inti,j,m=4,p=3,n=2;doublepi=3.14159265;charch1=’A’,ch2=’Z’;boolok=true;i=m+p+n;j=m*p/n;cout<<''i=m+p+n=''<<m<<’+’<<p<<’+’<<n<<’=’<<i<<’\n’;cout<<''j=m*p/n=''<<m<<’*’<<p<<’/’<<n<<’=’<<j<<’\n’;cout<<''pi=''<<pi<<’\n’;cout<<''ch1=''<<ch1<<'',ch2=''<<ch2<<’\n’;cout<<''ok=''<<ok<<’\n’;cout<<''!ok=''<<!ok<<’\n’;}例1.23下述C++程序演示了使用cout語句對各種數(shù)據(jù)58程序輸出結(jié)果:i=m+p+n=4+3+2=9j=m*p/n=4*3/2=6pi=3.14159ch1=A,ch2=Zok=1!ok=0程序輸出結(jié)果:59欲使用這些格式操縱符,需在C程序開頭書寫如下包含命令#include<iomanip.h>

欲使用這些格式操縱符,需在C程序開頭書寫如下包含命令#60第1章C++語言基礎(chǔ)第1章C++語言基礎(chǔ)611.1計算機(jī)語言的發(fā)展

1.機(jī)器語言(由0和1組成的指令)

機(jī)器語言是一種CPU的指令系統(tǒng),它是該CPU可以識別的一組由0和1序列構(gòu)成的指令代碼。這種程序雖然可以被機(jī)器直接理解和執(zhí)行,但是由于它們不直觀、難記、難認(rèn)、難理解、不易查錯,只能被少數(shù)專業(yè)人員掌握,同時程序的生產(chǎn)效率很低,質(zhì)量難以保證。

匯編語言程序的執(zhí)行過程

不同型號的計算機(jī)的機(jī)器語言和匯編語言是互不通用的。匯編語言和機(jī)器語言都是面向機(jī)器的程序設(shè)計語言,一般稱為低級語言。

2.匯編語言(用英文字母和數(shù)字表示指令)

1.1計算機(jī)語言的發(fā)展1.機(jī)器語言(由0和1組成的指令)623.高級語言(接近于人的自然語言和數(shù)學(xué)語言)

高級語言是一種與硬件結(jié)構(gòu)及指令系統(tǒng)無關(guān),表達(dá)方式比較接近自然語言和數(shù)學(xué)表達(dá)式的一種計算機(jī)程序設(shè)計語言。

優(yōu)點:

描述問題能力強(qiáng),通用性、可讀性、可維護(hù)性都較好。缺點:

執(zhí)行速度較慢,編制訪問硬件資源的系統(tǒng)軟件較難。用高級語言編寫的程序稱為“源程序”,計算機(jī)不能直接識別和執(zhí)行,高級語言程序有編譯和解釋兩種執(zhí)行方式。

3.高級語言(接近于人的自然語言和數(shù)學(xué)語言)高級語63高級語言程序的編譯執(zhí)行:

將源程序整個編譯成等價的,獨立的目標(biāo)程序,然后通過鏈接程序?qū)⒛繕?biāo)程序鏈接成可執(zhí)行程序。高級語言編譯執(zhí)行過程

高級語言程序的編譯執(zhí)行:將源程序整個編譯成等價的,64高級語言程序的解釋執(zhí)行:

解釋方式是將源程序逐句翻譯,翻譯一句執(zhí)行一句,邊翻譯邊執(zhí)行,不產(chǎn)生目標(biāo)程序。整個執(zhí)行過程,解釋程序都一直在內(nèi)存中。高級語言解釋執(zhí)行過程

高級語言程序的解釋執(zhí)行:解釋方式是將源程序逐句翻譯65高級語言發(fā)展的三個階段:1.非結(jié)構(gòu)化的語言優(yōu)點:編程風(fēng)格比較隨意。缺點:難以閱讀和維護(hù)。2.結(jié)構(gòu)化語言優(yōu)點:由具有良好特性的基本結(jié)構(gòu)(順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu))構(gòu)成。缺點:對于龐大、復(fù)雜的程序難以開發(fā)和維護(hù)。面向過程的語言3.面向?qū)ο蟮恼Z言通過類和對象把程序所涉及的數(shù)據(jù)結(jié)構(gòu)和對它施行的操作有機(jī)的組織成模塊,將數(shù)據(jù)及對數(shù)據(jù)的處理進(jìn)行最大限度的封裝,并通過繼承和重載等手段,使開發(fā)出來的軟件易重用、易修改、易測試、易維護(hù)、易擴(kuò)充。高級語言發(fā)展的三個階段:1.非結(jié)構(gòu)化的語言面向過程的語言3.661.2C++語言的產(chǎn)生C++是從C語言發(fā)展演變而來的,首先是一個更好的C引入了類的機(jī)制,最初的C++被稱為“帶類的C”1983年正式取名為C++從1989年開始C++語言的標(biāo)準(zhǔn)化工作于1994年制定了ANSIC++標(biāo)準(zhǔn)草案于1998年11月被國際標(biāo)準(zhǔn)化組織(ISO)批準(zhǔn)為國際標(biāo)準(zhǔn),成為目前的C++1.2C++語言的產(chǎn)生C++是從C語言發(fā)展演變而來的,首先67一、語言特點除保持了C語言的優(yōu)點外,還能更自然地體現(xiàn)抽象數(shù)據(jù)類型的概念,從而更本質(zhì)地描述數(shù)據(jù)結(jié)構(gòu)和算法,在設(shè)計、開發(fā)系統(tǒng)軟件與應(yīng)用軟件中,展現(xiàn)了強(qiáng)大的生命力;支持面向過程和面向?qū)ο蟮某绦蛟O(shè)計;運算符、運算類型、數(shù)據(jù)類型豐富,功能齊全,靈活多樣;可移植性強(qiáng),適用范圍廣;語法限制少,程序設(shè)計的自由度大;目標(biāo)代碼質(zhì)量高,快捷高效。1.3C++程序的基本結(jié)構(gòu)一、語言特點1.3C++程序的基本結(jié)構(gòu)68例1.1一個簡單的C++程序#include<iostream.h>voidmain(){cout<<”WelcometoC++world!”;}程序輸出結(jié)果:WelcometoC++world!例1.1一個簡單的C++程序69例1.2從鍵盤輸入兩個整數(shù)值,計算其和,并輸出計算結(jié)果。#include<iostream.h>voidmain()

{inti,j,sum;cout<<”Entertwointegers:”;cin>>i>>j;sum=i+j;cout<<”Thesumis\n”<<sum<<endl;}程序輸出結(jié)果:Entertwointegers:6358Thesumis121例1.2從鍵盤輸入兩個整數(shù)值,計算其和,并輸出計算結(jié)果70例1.3運行下述C++程序?qū)@得與例1.1相同的輸出結(jié)果。#include<iostream.h>voiddisplaymessage1(){cout<<”Welcome”;}voiddisplaymessage2(){cout<<”to”;}voiddisplaymessage3(){cout<<”C++world!\n”;}voidmain(){displaymessage1();displaymessage2();displaymessage3();}程序輸出結(jié)果:WelcometoC++world!例1.3運行下述C++程序?qū)@得與例1.1相同的輸出結(jié)果711.函數(shù)是C++程序的主要組成部分一個C++程序是由一個或多個函數(shù)組成的必須包含一個main函數(shù)(只能有一個)每個函數(shù)都用來實現(xiàn)一個或幾個特定功能被調(diào)用的函數(shù)可以是庫函數(shù),也可以是自己編制設(shè)計的函數(shù)2.一個函數(shù)包括兩個部分:函數(shù)首部:一個函數(shù)名后必須跟一對圓括號,括號內(nèi)寫函數(shù)的參數(shù)名及其類型。若函數(shù)無參,在括弧中寫void或空括弧C++源程序主要有以下幾個特點:1.函數(shù)是C++程序的主要組成部分C++源程序主要有以下幾個72函數(shù)體(花括號內(nèi)的部分。若一個函數(shù)有多個花括號,則最外層的一對花括號為函數(shù)體的范圍)聲明部分可缺省執(zhí)行部分可缺省3.程序總是從main函數(shù)開始執(zhí)行4.C++程序?qū)τ嬎銠C(jī)的操作由C++語句完成C++程序書寫格式是比較自由的一行內(nèi)可以寫幾個語句一個語句可以分寫在多行上為清晰起見,習(xí)慣上每行只寫一個語句函數(shù)體(花括號內(nèi)的部分。若一個函數(shù)有多個花括號,則最外層的一735.數(shù)據(jù)聲明和語句最后必須有分號6.C++語言本身不提供輸入輸出語句,輸入和輸出的操作是由庫函數(shù)cout和cin等函數(shù)來完成的。C++對輸入輸出實行“函數(shù)化”。7.程序應(yīng)當(dāng)包含注釋,增加可讀性C++語言有兩種注釋方式://:單行注釋可單獨占一行可出現(xiàn)在一行中其他內(nèi)容的右側(cè)/*……*/:塊式注釋可包含多行第1章C++語言基礎(chǔ)課件74例1.4形式一//thefirstline,//thesecondline,//andthethirdline.形式二//thefirstline,thesecondline,andthethirdline.形式三/*thefirstline,thesecondline,andthethirdline.*/形式四/*thefirstline,*//*thesecondline,*//*andthethirdline.*/例1.4形式三751.4基本字符集與標(biāo)識符一、基本字符集數(shù)字:0-9英文大、小寫字母:A-Z,a-z專用符號:+-*/=<>()[]{}\等等若干字符對:==!=<=>=等等。特定功能的符號:轉(zhuǎn)義符(如\n表示換行)1.4基本字符集與標(biāo)識符一、基本字符集76二、標(biāo)識符自定義標(biāo)識符:常量、變量、函數(shù)、符號常量等的名稱。如a,sum,max,PI等

作為標(biāo)識符必須滿足以下規(guī)則:1)必須由字母或下劃線開頭2)其它部分可由字母、下劃線或數(shù)字組成3)大小寫字母代表不同的標(biāo)識符4)不能使用C++的關(guān)鍵字,盡量不使用系統(tǒng)預(yù)定義標(biāo)識符5)盡量不要使用l(L),f(F),u(U)等作為標(biāo)識符常量標(biāo)識符說明時用關(guān)鍵字const做限定符或預(yù)處理命令#define,且必須為該常量標(biāo)識符賦值。在整個程序運行期間,不允許改變常量標(biāo)識符的值。用大寫字符序列。例1.5常量標(biāo)識符說明示例constintZERO=0;#definePI=3.14159constdoublePI=3.14159;二、標(biāo)識符77關(guān)鍵字(保留字):在C++中有特定含義。如if,else,int,char,break等預(yù)定義標(biāo)識符:C++預(yù)先規(guī)定用來標(biāo)識預(yù)定義的命令、庫函數(shù)等,如include,cout等。允許程序員將系統(tǒng)預(yù)定義標(biāo)識符重新定義關(guān)鍵字(保留字):在C++中有特定含義。如if,78例1.6一些符合規(guī)則的標(biāo)識符smart_decisionFLOATB757例1.7幾個非法的標(biāo)識符1st不能以數(shù)字開頭TwoWords不能包含空格符What_is_this?問號符不允許under-weight減號符不允許例1.6一些符合規(guī)則的標(biāo)識符791.5簡單數(shù)據(jù)類型兩類數(shù)據(jù)類型:預(yù)定義數(shù)據(jù)類型和程序員自定義數(shù)據(jù)類型數(shù)據(jù)類型定義的作用:規(guī)定變量可接受值的集合以及對它所能執(zhí)行的操作指明對該類型的數(shù)據(jù)項(即變量)應(yīng)分配多大內(nèi)存空間規(guī)定能用于該類型數(shù)據(jù)項的操作;防止數(shù)據(jù)類型不匹配。1.5簡單數(shù)據(jù)類型兩類數(shù)據(jù)類型:預(yù)定義數(shù)據(jù)類型和程序80

81VisualC6.0編譯系統(tǒng)在32位計算機(jī)上運行,int型、short型整數(shù)將各占內(nèi)存4個字節(jié)一、整型類型1整型變量VisualC6.0編譯系統(tǒng)在32位計算機(jī)上運行,int822整型常量整型常量簡稱整常量。三種表示整型常量的形式:十進(jìn)制形式、八進(jìn)制形式、十六進(jìn)制形式。十進(jìn)制整常量:以非0數(shù)字打頭的十進(jìn)制數(shù)字串八進(jìn)制整常量:以數(shù)字0打頭的八進(jìn)制數(shù)字串十六進(jìn)制整常量:以數(shù)字和字母的組合0x或0X打頭的十六進(jìn)制數(shù)字串2整型常量83程序設(shè)計中常用的數(shù)制程序設(shè)計中常用的數(shù)制84不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——R進(jìn)制→十進(jìn)制各位數(shù)字與它的權(quán)相乘,其積相加。例如:(11111111.11)2=1×27+1×26+1×25+1×24

+1×23+1×22+1×21+1×20+1×2-1+1×2-2

=(255.75)10(3506.2)8=3×83+5×82+0×81+6×80+2×8-1

=(1862.25)10(0.2A)16=2×16-1+10×16-2=(0.1640625)10不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——R進(jìn)制→十進(jìn)制各85不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——十進(jìn)制→R進(jìn)制十進(jìn)制整數(shù)轉(zhuǎn)換成R進(jìn)制的整數(shù)“除R取余”法,例如:268余數(shù)234┄┄┄┄┄┄┄┄┄┄┄┄0低位217┄┄┄┄┄┄┄┄┄┄┄028┄┄┄┄┄┄┄┄┄┄┄124┄┄┄┄┄┄┄┄┄┄022┄┄┄┄┄┄┄┄┄┄021┄┄┄┄┄┄┄┄┄00┄┄┄┄┄┄┄┄┄1高位所以6810=10001002不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——十進(jìn)制→R進(jìn)制86十進(jìn)制小數(shù)轉(zhuǎn)換成R進(jìn)制小數(shù)“乘R取整”法,例如:高位0.3125×2=0.6250.625×2=1.250.25×2=0.50.5×2=1.0所以0.312510=0.01012

十進(jìn)制小數(shù)轉(zhuǎn)換成R進(jìn)制小數(shù)87不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——二、八、十六進(jìn)制的相互轉(zhuǎn)換每位八進(jìn)制數(shù)相當(dāng)于三位二進(jìn)制數(shù)每位十六進(jìn)制數(shù)相當(dāng)于四位二進(jìn)制數(shù)(1011010.10)2=(001

011

010.100)2=(132.4)8(1011010.10)2=(0101

1010.1000)2=(5A.8)16(F7)16=(1111

0111)2=(11110111)2不同進(jìn)位記數(shù)制間的轉(zhuǎn)換

——二、八、十六進(jìn)制的相互轉(zhuǎn)換每位八88例1.8十進(jìn)制、八進(jìn)制、十六進(jìn)制整常量示例220十進(jìn)制整常量-560十進(jìn)制整常量06八進(jìn)制整常量,相當(dāng)于十進(jìn)制數(shù)60106八進(jìn)制整常量,相當(dāng)于十進(jìn)制數(shù)700x4e十六進(jìn)制整常量,相當(dāng)于十進(jìn)制數(shù)780XFF十六進(jìn)制整常量,相當(dāng)于十進(jìn)制數(shù)255例1.8十進(jìn)制、八進(jìn)制、十六進(jìn)制整常量示例89C++允許在變量說明時直接賦予一個初始值,這稱為變量初始化。例1.9整型變量說明及初始化示例inta,b;/*說明a,b為基本整型變量*///且它們分別具有隨機(jī)初始值intm=4,p=3,n=2;//說明m,p,n為基本整型變量,//且它們分別具有初始值4,3,2C++允許在變量說明時直接賦予一個初始值,這稱為變量90二、實數(shù)類型1實型變量二、實數(shù)類型912實型常量實型常量簡稱實常量。實型常量有兩種表現(xiàn)形式:十進(jìn)制小數(shù)點形式和科學(xué)記數(shù)法的指數(shù)形式例1.10實常量示例6.365 十進(jìn)制小數(shù)點形式6.8e-5科學(xué)記數(shù)法的指數(shù)形式,表示6.810-5,即0.000068。6.8E-5

與上數(shù)相同。注:浮點數(shù)的小數(shù)點兩邊至少一邊要有數(shù)字,階碼標(biāo)志E(e)前后要有數(shù)字,否則為非法實數(shù)。如345,E7等。2實型常量92實常量缺省認(rèn)作屬于double類型。例1.11單精度型實常量與長雙精度型實常量示例6.365 雙精度(double)實常量3.14159f單精度(float)實常量3.1415926535897932L長雙精度型實常量,所有小數(shù)位均為有效數(shù)字。長雙精度型實常量可具有約19位有效數(shù)字。實常量缺省認(rèn)作屬于double類型。93例1.12實型變量說明及初始化示例floatradius,diameter,area;/*說明radius,diameter,area為單精度型實變量*/doublepi=3.14159265358979;/*說明pi為雙精度型實變量,且具有相應(yīng)初始值*/第1章C++語言基礎(chǔ)課件94三、字符類型char類型數(shù)據(jù)用來存放ASCII字符集內(nèi)的某個字符。C++支持?jǐn)U展ASCII代碼,共包括256個不同字符。1字符型變量C++規(guī)定,char類型數(shù)據(jù)在操作時將按整型量處理,在計算機(jī)內(nèi)部,一個char類型數(shù)據(jù)所對應(yīng)的整數(shù)值就是該字符的ASCII字符集中所對應(yīng)的序數(shù)值或序號。三、字符類型952字符型常量將字符用單引號括起來,即成一個字符型常量或簡稱字符常量。例1.13字符常量示例'A'表示英文大寫字母A的字符常量。'a'表示英文小寫字母a的字符常量。''表示空格符字符常量。2字符型常量96例1.14以下所示均為非法的字符常量表示''字符常量的單引號對內(nèi)必須有一個字符,若為空格,應(yīng)寫為''。'Turbo'字符常量的單引號對內(nèi)只能包含一個字符。''a''''a''是字符串常量(a\0),而'a'才是字符常量。例1.14以下所示均為非法的字符常量表示97字符數(shù)據(jù)的使用方法字符數(shù)據(jù)和整型數(shù)據(jù)之間可以運算。字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值。例1.15#include<iostream.h>voidmain(){charc1=97,c2=‘b’;cout<<c1<<‘’<<c2<<endl;}程序輸出結(jié)果:ab字符數(shù)據(jù)的使用方法98四、布爾類型bool、false和true均為C++關(guān)鍵字。規(guī)定false<true。系統(tǒng)將false的值轉(zhuǎn)換為0,將true的值轉(zhuǎn)換為1bool型數(shù)據(jù)占據(jù)1字節(jié)內(nèi)存。四、布爾類型991.6運算符與表達(dá)式初探一、算術(shù)運算符與算術(shù)表達(dá)式1.6運算符與表達(dá)式初探一、算術(shù)運算符與算術(shù)表達(dá)式100雙目運算符左右兩邊操作數(shù)的類型必須一致才能進(jìn)行運算,如果一邊是整型數(shù),另一邊是實型數(shù),則系統(tǒng)將自動把整形數(shù)轉(zhuǎn)換為等值的實型,然后再進(jìn)行運算。所有實型數(shù)的運算均按雙精度,以確保運算精度。當(dāng)雙目運算符/左右兩邊的操作數(shù)都是整型數(shù)時,其運算結(jié)果亦為整型數(shù)。對不能整除的情形,則是截斷取整(向零歸整)。要求雙目運算符%的左右兩邊的操作數(shù)均為整型數(shù),運行結(jié)果是兩數(shù)相除后的余數(shù),亦為整型數(shù)。C++規(guī)定,i%j的值的正負(fù)與i的正負(fù)一致。i%j=i-(i/j)*j(j非0)雙目運算符左右兩邊操作數(shù)的類型必須一致才能進(jìn)行運算,如果一邊101程序中的算術(shù)表達(dá)式與一般數(shù)學(xué)式在表示形式上有所不同:b2-4ac應(yīng)表示為b*b-4*a*c;sin2πx應(yīng)表示為sin(2*PI*x),其中假設(shè)PI是一個預(yù)先定義的一個常量標(biāo)識符。一律使用圓括號程序中的算術(shù)表達(dá)式與一般數(shù)學(xué)式在表示形式上有所不同:102二、關(guān)系運算符與關(guān)系表達(dá)式二、關(guān)系運算符與關(guān)系表達(dá)式103例1.16關(guān)系運算示例1+2==3結(jié)果值為1(true)'A'<'B' 結(jié)果值為1(true)'A'>='a' 結(jié)果值為0(false)'A'!='a' 結(jié)果值為1(true)例1.16關(guān)系運算示例104例1.17設(shè)int型變量a,b,c分別有值1,3,2,則b*b–4*a*c>=0 結(jié)果值為1注意:算術(shù)運算符的優(yōu)先級高于關(guān)系運算符,因此無須用圓括號將該算術(shù)表達(dá)式括起來。例1.17設(shè)int型變量a,b,c分別有值1,3,105三、邏輯運算符與邏輯表達(dá)式C++規(guī)定任何非0的值都被當(dāng)作真值,表示邏輯關(guān)系成立0值被當(dāng)作“假”值,表示邏輯關(guān)系不成立。三、邏輯運算符與邏輯表達(dá)式C++規(guī)定任何非0的值都被當(dāng)作真值106例1.18邏輯運算示例!0 結(jié)果值為1(true)!1 結(jié)果值為0(false)!5 結(jié)果值為0(false)1&&5 結(jié)果值為1(true)

例1.18邏輯運算示例107運算優(yōu)先級函數(shù)優(yōu)先括號優(yōu)先(嵌套括號中內(nèi)層括號優(yōu)先)優(yōu)先級高者優(yōu)先優(yōu)先級相同者按結(jié)合規(guī)則運

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論