版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、a,1,程序設計與語言(),培養(yǎng)目標 課程簡介 實驗 學時 考核形式 教材,主講:何潔月,a,2,培養(yǎng)目標,1.建立基本的計算機程序設計概念體系和基本的程序設計方法。 2.理解和掌握C+語言的基本語法和語義,初步理解面向對象的思想,初步掌握面向對象程序設計的方法。 3. 逐步提高學生的編程能力和調試程序的能力。 為后面的學習打好基礎。,a,3,課程簡介,第章 概述 計算機程序設計語言的發(fā)展(一般了解) 面向對象的方法(一般了解) 面向對象的軟件開發(fā)(一般了解) 信息的表示與存儲(理解) 程序的開發(fā)過程(一般了解) 小結,a,4,課程簡介,第章 簡單程序設計 語言概述(一般理解) 基本數據類型和
2、表達式(掌握) 數據的輸入與輸出(掌握) 算法的基本控制結構(掌握) 自定義數據類型(掌握) 小結,a,5,課程簡介,第章 函數 函數的定義與使用(掌握) 內聯函數(掌握) 帶默認形參值的函數(掌握) 函數重載(掌握) 函數模板(掌握) 使用系統(tǒng)函數(掌握) 小結,a,6,課程簡介,第章 類與對象 面向對象的思想(理解) 面向對象程序設計的基本特點(理解) 類和對象(掌握) 構造函數和析構函數(掌握) 類的組合(掌握) 類模板(掌握) 面向對象標記(一般了解) 小結,a,7,課程簡介,第章 程序的結構 程序的結構(理解) 生存期(掌握) 數據和函數(掌握) 靜態(tài)成員(掌握) 友元(掌握) 共享
3、數據的保護(掌握) 多文件結構和編譯預處理命令(掌握) 小結,a,8,課程簡介,第章 數組、指針與字符串 數組(掌握) 指針(掌握) 動態(tài)內存分配(掌握) 字符串(掌握),a,9,實驗,實驗共分次,每次小時,實驗環(huán)境為:visual c+6.0 實驗:visual c+6.0開發(fā)環(huán)境應用入門 實驗:簡單程序設計 實驗:函數的應用 實驗:類與對象 實驗:程序的結構 實驗:數組、指針與字符串,a,10,教材,教材: C+語言程序設計 C+語言程序設計習題與實驗指導,a,11,考核,總評成績=平時作業(yè)+上機實驗+期末筆試成績(閉卷)期末上機成績(閉卷) 平時作業(yè)占 10% 平時上機實驗占 10% 期
4、末筆試成績(閉卷)占 60% 期末上機成績(閉卷)占 20%,a,12,第一章 緒論,計算機程序設計語言的發(fā)展 面向對象的方法 面向對象的軟件開發(fā) 信息的表示與存儲 程序的開發(fā)過程,a,13,1.1計算機語言的發(fā)展,計算機的工作是用程序來控制的 程序是指令的集合。 指令是計算機可以識別的命令。,計算機程序,a,14,機器語言,由計算機硬件系統(tǒng)可以識別的二進制指令組成的語言稱為機器語言。 計算機發(fā)展的初期,軟件工程師們只能用機器語言來編寫程序。這一階段,在人類的自然語言和計算機編程語言之間存在著巨大的鴻溝。 例如 1011 1111 1101 缺點:難懂,不易修改,移植性差,a,15,匯編語言,
5、匯編語言將機器指令映射為一些可以被人讀懂的助記符,如ADD、SUB等。 此時編程語言與人類自然語言間的鴻溝略有縮小,但仍與人類的思維相差甚遠。因為它的抽象層次太低,程序員需要考慮大量的機器細節(jié)。 例如 ADD CX,DX 將DX的內容加進CX 。不能立即執(zhí)行,需要匯編,變成目標程序。,a,16,高級語言,高級語言屏蔽了機器的細節(jié),提高了語言的抽象層次,程序中可以采用具有一定涵義的數據命名和容易理解的執(zhí)行語句。這使得在書寫程序時可以聯系到程序所描述的具體事物。 例如 if y3 z=x+y; 類似英語和數學表達式,a,17,高級語言,分成 解釋方式與編譯方式,解 釋 程 序,運 行 結 果,編
6、譯 程 序,目 標 程 序,初 始 數 據,目 標 程 序,源 程 序,源程序,初始數據,運 行 結 果,a,18,高級語言發(fā)展:,第一代語言是對數學表達式有很強的運算處理能力 代表是Fortran 和Algol 60 第二代語言的重點如何有效地表達算法 代表是Pascal 和C 第三代語言引入抽象數據類型的程序設計語言 代表是被認為是基于對象的語言 第四代面向對象程序設計語言 代表是Smalltalk、Eiffel、c+、Java,a,19,面向對象的語言,出發(fā)點: 更直接地描述客觀世界中存在的事物(對象)以及它們之間的關系。 特點: 是高級語言。 將客觀事物看作具有屬性和行為的對象。 通過
7、抽象找出同一類對象的共同屬性和行為,形成類。 通過類的繼承與多態(tài)實現代碼重用,a,20,面向對象的語言,優(yōu)點: 使程序能夠比較直接地反問題域的本來面目,軟件開發(fā)人員能夠利用人類認識事物所采用的一般思維方法來進行軟件開發(fā)。,a,21,語言的鴻溝,面向對象的語言,自然語言,非面向對象的語言,匯編語言,機器語言,對問題域的認識(人,語言的鴻溝,編程(人,程序的理解和執(zhí)行(機器,a,22,程序的目的:用于數學計算 主要工作:設計求解問題的過程 缺點:對于龐大、復雜的程序難以開發(fā)和維護,1.2 面向對象的方法,面向對象方法的由來 一、程序設計方法的發(fā)展歷程 面向過程的程序設計方法,a,23,二、程序設計
8、方法的發(fā)展歷程面向過程的結構化程序設計方法,設計思路 自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。 程序結構: 按功能劃分為若干個基本模塊,形成一個樹狀結構。 各模塊間的關系盡可能簡單,功能上相對獨立;每一模塊內部均是由順序、選擇和循環(huán)三種基本結構組成。 其模塊化實現的具體方法是使用子程序。,a,24,a,25,優(yōu)點: 有效地將一個較復雜的程序系統(tǒng)設計任務分解成許多易于控制和處理的子任務,便于開發(fā)和維護。,a,26,缺點:可重用性差、數據安全性差、難以開發(fā)圖形界面的應用 把數據和處理數據的過程分離為相互獨立的實體。 當數據結構改變時,所有相關的處理過程都要進行相應的修改。
9、每一種相對于老問題的新方法都要帶來額外的開銷。 圖形用戶界面的應用,很難用過程來描述和實現,開發(fā)和維護都很困難。,a,27,三、程序設計方法的發(fā)展歷程 面向對象的方法,將數據及對數據的操作方法封裝在一起,作為一個相互依存、不可分離的整體對象。 對同類型對象抽象出其共性,形成類。 類通過一個簡單的外部接口,與外界發(fā)生關系。 對象與對象之間通過消息進行通訊。,a,28,優(yōu)點: 程序模塊間的關系更為簡單,程序模塊的獨立性、數據的安全性就有了良好的保障。 通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)和維護都更為方便。,a,29,面向對象的基本概念 對象,一般意義上的對象: 是現實世界中
10、一個實際存在的事物。 可以使有形的(比如一輛汽車),也可以是無形的(比如一項計劃)。 是構成世界的一個獨立單位,具有: 靜態(tài)特征:可以用某種數據來描述 動態(tài)特征:對象所表現的行為或具有的功能,a,30,面向對象方法中的對象: 是系統(tǒng)中用來描述客觀事物的一個實體,它是用來構成系統(tǒng)的一個基本單位。對象由一組屬性和一組行為構成。 屬性:用來描述對象靜態(tài)特征的數據項。 行為:用來描述對象動態(tài)特征的操作序列。,a,31,面向對象的基本概念 類,分類人類通常的思維方法 分類所依據的原則抽象 忽略事物的非本質特征,只注意那些與當前目標有關的本質特征,從而找出事物的共性,把具有共同性質的事物劃分為一類,得出一
11、個抽象的概念。 例如,石頭、樹木、汽車、房屋等都是人們在長期的生產和生活實踐中抽象出的概念。,a,32,面向對象方法中的類 具有相同屬性和服務的一組對象的集合 為屬于該類的全部對象提供了抽象的描述,包括屬性和行為兩個主要部分。 類與對象的關系:猶如模具與鑄件之間的關系,一個屬于某類的對象稱為該類的一個實例。,集合成員 抽象描述具體實例,集合成員 抽象描述具體實例,a,33,面向對象的基本概念 封裝,把對象的屬性和服務結合成一個獨立的系統(tǒng)單位。 盡可能隱蔽對象的內部細節(jié)。對外形成一個邊界(或者說一道屏障),只保留有限的對外接口使之與外部發(fā)生聯系。,a,34,封裝,顧客,a,35,面向對象的基本概
12、念 繼承,繼承對于軟件復用有著重要意義,是面向對象技術能夠提高軟件開發(fā)效率的重要原因之一。 定義:特殊類的對象擁有其一般類的全部屬性與服務,稱作特殊類對一般類的繼承。 例如:將輪船作為一個一般類,客輪便是一個特殊類。,a,36,哺乳動物 熱血、有毛發(fā)、用奶哺育幼仔,狗 有犬牙、食肉、特定的骨骼結構、群居,柯利狗 尖鼻子、身體顏色紅白相間、適合放牧,a,37,面向對象的基本概念 多態(tài)性,多態(tài)是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同的數據類型或表現出不同的行為。這使得同一個屬性或行為在一般類及其各個特殊類中具有不同的語義。 例如: 數的加法-實數的加法 -復數的加法 例動物叫
13、,a,38,面向對象的軟件工程,面向對象的軟件工程是面向對象方法在軟件工程領域的全面應用。它包括: 面向對象的分析(OOA) 面向對象的設計(OOD) 面向對象的編程(OOP) 面向對象的測試(OOT) 面向對象的軟件維護(OOSM),面向對象的軟件開發(fā),a,39,傳統(tǒng)的軟件工程方法,面向對象的軟件工程方法,自然語言,分析與設計的鴻溝,編程語言,自然語言,面向對象的編程語言,a,40,系統(tǒng)分析,系統(tǒng)分析階段應該扼要精確地抽象出系統(tǒng)必須做什么,但是不關心如何去實現。 面向對象的系統(tǒng)分析,直接用問題域中客觀存在的事物建立模型中的對象,對單個事物及事物之間的關系,都保留他們的原貌,不做轉換,也不打破
14、原有界限而重新組合,因此能夠很好地映射客觀事物。,a,41,設計,針對系統(tǒng)的一個具體實現運用面向對象的方法。其中包括兩方面的工作: 把OOA模型直接搬到OOD,作為OOD的一部分 針對具體實現中的人機界面、數據存儲、任務管理等因素補充一些與實現有關的部分。,a,42,編程,OOP工作就是用一種面向對象的編程語言把OOD模型中的每個成分書寫出來,是面向對象的軟件開發(fā)最終落實的重要階段。,a,43,測試,測試的任務是發(fā)現軟件中的錯誤。 在面向對象的軟件測試中繼續(xù)運用面向對象的概念與原則來組織測試,以對象的類作為基本測試單位,可以更準確的發(fā)現程序錯誤并提高測試效率。,a,44,維護,將軟件交付使用后
15、,工作并沒有完結,還要根據軟件的運行情況和用戶的需求,不斷改進系統(tǒng)。 使用面向對象的方法開發(fā)的軟件,其程序與問題域是一致的,因此,在維護階段運用面向對象的方法可以大大提高軟件維護的效率。,a,45,信息的表示和存儲,信息的分類 計算機的數字系統(tǒng) 程序設計中常用的數制 不同進位計數制間的轉換 信息的存儲單位 二進制數的編碼表示 小數的表示方法 非數值信息的表示,a,46,信息的分類, 指令 控制信息 控制字 信息 定點數 數值信息 數據信息 浮點數 字符數據 非數值信息 邏輯數據,a,47,計算機的數字系統(tǒng),計算機采用的是二進制數字系統(tǒng)。 基本符號:0、1 進位原則:逢二進一 優(yōu)點: 易于物理實
16、現 二進制數運算簡單 機器可靠性高 通用性強 缺點:對人來說可讀性差,a,48,程序設計中常用的數制,a,49,不同進位計數制間的轉換 R 進制十進制,各位數字與它的權相乘,其積相加。 例如: (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,a,50,不同進位計數制間
17、的轉換 十進制 R 進制,十進制整數轉換成R進制的整數 “除R取余”法,例如: 2 68 余 數 2 34 0 低位 2 17 0 2 8 1 2 4 0 2 2 0 2 1 0 0 1 高位 所以 681010001002,a,51,不同進位計數制間的轉換 十進制 R 進制,十進制小數轉換成R進制小數 “乘 R 取整”法,例如: 高位 0.31252 = 0 .625 0.625 2 = 1 .25 0.25 2 = 0 .5 0.5 2 = 1 .0 所以 0.312510 = 0.01012,a,52,不同進位計數制間的轉換二、八、十六進制的相互轉換,每位八進制數相當于三位二進制數 每位
18、十六進制數相當于四位二進制數 (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,a,53,信息的存儲單位,位(bit):度量數據的最小單位,表示一位二進制信息。 字節(jié)(byte):由八位二進制數字組成(1 byte = 8 bit)。 K 字節(jié) 1 K = 1024 byte M 字節(jié) 1 M = 1024 K G 字節(jié) 1 G = 1024 M,a,54,二進制數的編碼表示:原碼,符號絕對值表示的編碼 例如: X=
19、+0101011 X原 = 0 0101011 X=-0101011 X原 = 1 0101011 符號位 缺點: 零的表示不唯一:+0原 =000.0 -0原 =100.0 進行四則運算時,符號位需單獨處理,且運算規(guī)則復雜。,a,55,二進制數的編碼表示:反碼,正數的反碼與原碼表示相同。 負數的反碼與原碼有如下關系: 符號位相同(仍用1表示),其余各位取反(0變1,1變0)。例如:X=-1100110 X原 =11100110 X反 =10011001X=+0000000 X原 =00000000 X反 =00000000 反碼中零的表示也不唯一 X=-0000000 X原 =1000000
20、0 X反 =11111111 反碼只是求補碼的中間碼,a,56,二進制數的編碼表示:補碼,模數: n位整數(包括一位符號位),則它的模數為 2n 。 n位小數,小數點前一位為符號位,則它的模數為 2。 補數: 一個數減去另一個數,或者說一個數加上一個負數,等于第一個數加上第二個數的補數。例:8+(-2)=8+10 ( mod 12 ) 一個二進制負數可用其模數與真值做加法 (模減去該數的絕對值) 求得其補碼。,a,57,二進制數的編碼表示:補碼,計算機中的補碼表示法 負數的補碼由該數反碼的末位加 1 求得 對補碼再求補即得到原碼 補碼運算規(guī)則p14 符號位可作為數值參加運算 減法運算可轉換為加
21、法運算: 加上一個負數等于加上該數的補碼 補碼運算的結果仍為補碼 運算結果溢出: 負數之和得正數,或正數之和得負數,a,58,小數的表示方法,計算機中通常采用浮點方式表示小數一個數 N 用浮點形式表示可以寫成: N=M2E E表示2的冪,稱為數N的階碼。階碼確定了數N的小數點的位置,其位數反映了該浮點數所表示的數的范圍。 M表示數N的全部有效數字,稱為數N的尾數。其位數反映了數據的精度。 p15,a,59,非數值信息的表示,西文字符: ASCII碼:用7位二進制數表示一個字符,最多可以表示27=128個字符 EBCDIC碼:用8位二進制數表示一個字符,最多可以表示28=256個字符 漢字: 應
22、用較為廣泛的是國家標準信息交換用漢字編碼(GB2312-80標準),簡稱國標碼。是二字節(jié)碼,用二個七位二進制數編碼表示一個漢字。,a,60,程序的開發(fā)過程,源程序、目標程序、翻譯程序 三種不同類型的翻譯程序: 匯編程序、編譯程序、解釋程序 程序的開發(fā)過程 編輯、編譯、連接、運行調試,a,61,基本術語,源程序: 用源語言寫的,有待翻譯的程序 目標程序: 也稱為結果程序,是源程序通過翻譯程序加工以后所生成的程序。 翻譯程序: 是指一個把源程序翻譯成等價的目標程序的程序。,a,62,基本術語 三種不同類型的翻譯程序,匯編程序: 其任務是把用匯編語言寫成的源程序,翻譯成機器語言形式的目標程序。 編譯
23、程序: 若源程序是用高級程序設計語言所寫,經翻譯程序加工生成目標程序,那么,該翻譯程序就稱為編譯程序。,a,63,基本術語 三種不同類型的翻譯程序,解釋程序: 這也是一種翻譯程序,同樣是將高級語言源程序翻譯成機器指令。它與編譯程序不同點就在于:它是邊翻譯邊執(zhí)行的,即輸入一句、翻譯一句、 執(zhí)行一句,直至將整個源程序翻譯并執(zhí)行完畢。,a,64,程序的開發(fā)過程,編輯 將源程序輸入到計算機中,生成后綴為cpp的磁盤文件。 編譯 將程序的源代碼轉換為機器語言代碼。 連接 將多個源程序文件以及庫中的某些文件連在一起,生成一個后綴為exe的可執(zhí)行文件。 運行調試,a,65,程序開發(fā)過程:,開始,編輯源程序,
24、編譯,編譯錯,連接,連接錯,運行,運行錯,完成,是,是,是,a,66,作業(yè),復習第一章,預習第二章 作業(yè):、 、,a,67,第二章 C+簡單程序設計,a,68,本章主要內容,C+語言概述 基本數據類型和表達式 數據的輸入與輸出 算法的基本控制結構 自定義數據類型,a,69,2.1.1 C+語言的產生,C+是從C語言發(fā)展演變而來的: C語言的開發(fā)史源于高級語言和UNIX操作系統(tǒng)的發(fā)展要求。 早期的系統(tǒng)程序設計,使用的是匯編語言,其優(yōu)點: (1)能體現計算機硬件指令級的特性,表達能力強; (2)運行效率高。 其缺點:可讀性,可移植性及描述問題的性能不如高級語言。 這樣很自然有如下想法:能否用具有足
25、夠表達能力的高級語言 來進行系統(tǒng)軟件的設計呢?Bell實驗室做了這一嘗試。 1970:在 PDP-11/20機上實現了B語言,并用它編寫了UNIX系統(tǒng)的實用程序。 B-BCPL-CPL-ALGOL 60,2.1 C+語言概述,a,70,在B語言基礎上,改進其缺陷,發(fā)展出了C語言, 其設計目標: (1)保持BCPL和B的精練性及接近硬件的特點 (2)恢復這些語言失去的通用性 1972:第一個C編譯投入使用 1973:UNIX用C改寫,加入多道程序功能,發(fā)生質變 現在,UNIX已得到廣泛推廣,成為公認的第一標準的操作系統(tǒng) 隨著UNIX的進一步開發(fā),C也交織在一起被迅速推廣。,a,71,1983:對
26、C擴充,發(fā)展為C。 C+語言的標準化工作從1989年開始,于1994年制定了ANSI C+標準草案。以后又經過不斷完善,成為目前的C+。,a,72,2.1.2 C+的特點,全面兼容C 它保持了C的簡潔、高效和接近匯編語言等特點 對C的類型系統(tǒng)進行了改革和擴充 C+也支持面向過程的程序設計,不是一個純正的面向對象的語言 支持面向對象的方法,a,73,2.1.3 C+程序實例例2-1,/ this is a simplest program. #include void main(void) coutHello!n; coutWelcome to c+!n; 說明:(1)注解 (2) 編譯預處理
27、(3)main函數 (4)語句括號 (5)語句分號;,a,74,C+程序實例,運行結果: Hello! Welcome to c+!,a,75,C+字符集,語言的最基本單位是字符: 字符詞語句函數程序。 字符集是構成語言的基本元素 大小寫的英文字母:AZ,az 數字字符:09 特殊字符:空格!#%.,( ) ,a,76,詞法記號,詞法記號是最小的詞法單位 、關鍵字 C+預定義的單詞。是指C+中有特殊含義的字,是不能重 新定義的。程序員不可用之作為自己定義的變量或函數的名字。,類別 關鍵字個數 舉例 ANSI C 32 char,for 等 ANSI C+ 61 (增加29個) class,pu
28、blic等 BC/AC 擴展了一些 asm 等,、標識符 程序員聲明的單詞,它命名程序正文中的 一些實體。,a,77,標識符的構成規(guī)則 以大寫字母、小寫字母或下劃線(_)開始。 可以由以大寫字母、小寫字母、下劃線(_)或數字09組成。 大寫字母和小寫字母代表不同的標識符。 例 Rectangle、 Draw、 _line. 、文字 在程序中直接使用符號表示的數據 包括數字、字符、字符串和布爾文字 、操作符 用于實現各種運算的符號。 、分隔符 用于分隔各個詞法記號或程序正文:( ) , : ; 、空白:空格、制表符(TAB鍵產生的字符)、換行符(Enter鍵所產生的字符)和注釋的總稱。 程序書寫
29、自由 / 、 /* */,a,78,2.2基本數據類型和表達式,2.2.1基本數據類型,是程序命令操作的對象。,是指將數據根據表達形式的不同而 劃分的類別。,數據:,數據類型:,a,79,C+的數據類型一般分為如下幾種:,基本數據類型,非基本數據類型(用戶定義數據類型),整型 字符型 實型(浮點型) 邏輯型(布爾型) 數組 指針 空類型 結構 聯合 枚舉 類,數據類型,a,80,數據類型修飾符:,short,long,unsigned,例:,無符號整型 unsigned int,無符號長整型 unsigned long,無符號短整型 unsigned short,signed,a,81,類型
30、所占位數 數的范圍 int 16 -32768 32767 short int 16 -32768 32767 long int 32 -2147483648 2147483647 unsigned int 16 0 65535 unsigned short 16 0 65535 unsigned long 32 0 4294967295,至于它們之間的差異,請看下表(p):(16位計算機),a,82,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.31456789,23,+,數符,小數部分,指數,a,83,例: cout“size of int is “ size of (
31、int)endl;,C+強類型語言要求程序設計者在使用數據之前對數據的類型進行聲明。,注意: (1)整型和實型的幾種不同方式 (2)注意各種數據類型的取值范圍。 (3)注意C無布爾類型。C語言在表達邏輯運算的結果時,用 整數0 代表邏輯“假”,用非0的整數值(如1)表示邏輯“真”。 C+中增添了布爾類型bool,但并非每個C+編譯器都支持。 用size of (數據類型)可以確定數據類型的字節(jié)長度,a,84,數據類型 常量與變量,#include void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; t
32、otal=num*PRICE; couttotal endl; r=2.5; h=3.2; v=3.14159*r*r*h; coutv endl; ,Page 84,a,85,2.2.2 常量,在程序中出現的常量分為一般常量和符號常量兩種。,一般常量,讓我們來看右邊的程序段:,int sum; sum=3+5; printf (“sum=%d”,sum);,.,其中的“”和“”都是一般常量。,常量 就是其值不能被改變的量,它相當于數學中的常數。,a,86,常量由于數據類型的不同而被分為:,整型常量,實型常量,字符常量,字符串常量,a,87,1、 整型常量,整型常量即以文字形式出現的整數。 分
33、十進制整數、八進制整數和十六進制整數,注意它們的書寫形式。,整型常量類型 表達形式 有無正負 十進制 957 有正負 八進制 01667 只有正 十六進制 0 xB7 只有正,123L 123l 長整型,a,88,2、 實型常量,實型常量即以文字形式出現的實數,又稱浮點型。 它分一般形式和指數形式。,實型常量類型 表達形式 一般形式 0.123 指數形式 123e5,a,89,(2) 一個實型常數缺省說明為double,如表示float型,則 在實數后加 f或 F。 例 34.5f 34.5,注: (1)指數形式的書寫。E或e的前面必須要有數字,且E后面的指數必須為整數。 例:e3 2.1e3
34、.5 .e3 e,a,90,單引號括起來的一個字符 例 A 每個字符常數占一個字節(jié) 每個字符常數有一個編碼數字值ASCII碼表中的碼值 例如:A:65 B:66 a:97 b:98 , 字符常量可象數量一樣進行運行、比較 例1:if(c=Ac=Z) c=c+a-A; 將字符變量c從大寫字母轉為小寫字母。 例2:0-0=0 1-0=1 2-0=2 如果c是一數字字符,則c-0就是它對應數字的數值,3、 字符常量,a,91,非圖形字符(如回車、制表符等) 及 “等字符,因它們有特殊作用,所以表示這些字符本身時,應:p。 n 表換行,無論是不可顯示字符還是一般字符,都可用8進制數、16進制數表示 d
35、dd:一 至三位8進制數。 xhh: 一 至二位16進制數。 例如:001表示碼值為(01)8 的ASCII字符。 A也可用101表示 0為空白符,即NULL,碼值為0,在C語言中是字符串的結束標志。(與0和空格符不同) 例:cout“x07operatingtsystemn”; operating system,轉義字符,a,92,例 : int a=b; char c=97; coutaendl; coutcendl; 輸出: 98 a,字符數據的使用方法 字符數據和整型數據之間可以運算。 字符數據與整型數據可以互相賦值。,a,93,4、 字符串常量,字符串型常量是用雙引號括起來的一個或多
36、個字符。 例如,將1用雙引號括起來,此時“1”代表的是一個字符串型常量, 與字符型常量1也是有區(qū)別的。,C+規(guī)定以字符0作為字符串結束標志。如,一個字符串“HELLO”,在內存中以“0”為結尾?!?”在輸出時不作顯示,只用來表示字符串的結束。,字符串型常量,“HELLO”,H E L L O 0,注意“P”與P不同。前者為字符串,在機內存儲形式 為 P 0 ,而P就是一常數P。,a,94,define PI 3.14159 main ( ) int r ; float L,S ; r = 10 ; L= 2 * PI * r ; S=PI * r * r ; printf (“周長=%fn”,
37、L); printf (“面積=%fn”,S); ,這是一個知道圓半徑r,求圓周長L、圓面積S的簡單C程序。其中的PI就是符號常量,它的值在一開始就被預處理命令“#define”定義為實數3.14159了,故程序在運行和編譯時會自動用“3.14159”來替代PI。,符號常量比起一般常量來,不但使用方便,實際值容易修改,而且更形象化,便于記憶。,符號常量,a,95,數據類型 布爾型數據,布爾型變量的說明:例:bool flag; 布爾型數據的取值:只有 false 和 true 兩個值,a,96,*C+中: const float pi=3.14159; *常量定義中初始化的值可以是一個常量表達
38、式: const int size=100*sizeof(int); const int number=max(15,23); (錯) 注意:#define 與const的區(qū)別,a,97,2.3變量,變量是什么,變量程序在運行過程中,其值會發(fā)生改變的量。,變量:變量值 23,變量名 length,變量類型 int,a,98,C+規(guī)定必須以字母或下劃線打頭,后面跟字母、數字或下劃線(如:a3, Z_5e, _D7d等),并且不能與保留字、函數名、類名等C+專用名相同(如 char, for, int 等)。 注意: (a)長度:早期的C編譯程序只認前8個字符。VC允許256個字符。 但一般不要超
39、過31個字符為宜,1、命名,a,99,(b)約定: 變量名、函數名、和數據類型名等用小寫字母 自定義的類型名(如類)、 符號常量名及宏 用大寫字母; 下劃線開頭的名字常為系統(tǒng)程序(庫函數用),用戶一般不用。 (c)要有意義:如用Sum表示“求和變量”,不要用aaa,A1, B12之類名字。 例: my_car 小寫 my_Car 駱駝 iMyCar 匈牙利標識法(WINDOWS標準命名法),a,100,下面我們看一段關于變量的程序:,程序中的num1,num2和sum都是變量。它們的值在程序的運行過程中都發(fā)生了變化。變量定義后,各變量的初值都是不確定的。num1的第一個確切值是10,當再次給n
40、um1賦值時,num1的值又變成-5。其他兩個變量的變化情況類似。,#include void main() int num1,num2,sum; num1=10;num2=25; sum=num1+num2; cout“sum=“sumendl; num1=-5; num2=num1+3; sum=num1+num2; cout“sum=“sumendl; ,a,101,變量:需要定義,說明其存儲屬性和數據類型。,例:static int nward=0, nkayword;,同一語句中,不能混合定義不同類型的變量。,2、 變量的定義,a,102,變量的存儲類型,auto存儲類 屬于一時性存
41、儲,其存儲空間可以被若干變量多次覆蓋使用。 register存儲類 存放在通用寄存器中。 extern存儲類 在所有函數和程序段中都可引用。 static存儲類 在內存中是以固定地址存放的,在整個程序運行期間都有效。,a,103,(1) double area, radius=23; (2) double area, radius; radius=23;,3、變量賦值與初始化,a,104,算術運算符與算術表達式,表達式: 一個常量或標識對象的標識符是一個最簡單的表達式,其值是常量或對象的值 一個表達式的值可以用來參與其它操作,即用作其它運算符的操作數,這就形成了更復雜的表達式 包含在括號中的表
42、達式仍是一個表達式,其類型和值于未加括號時的表達式相同 算術表達式: 由算術運算符、操作數和括號構成的表達式稱為算術表達式 a+b+(c-b)/2+5,Page 104,a,105,、基本算術運算符 + - * / %(取余) (若整數相除,結果取整) 優(yōu)先級與結合性 先乘除,后加減,同級自左至右 ,a,106,(1) / 整除 5/2=2 5.0/2.0=2.5 若 / 的兩操作數都為整數,則為整除: 例 int i = 15; float f ; f = i/10; 結果為:f=1 如果將第三條語句改為 f = (float)i/10; 或f = i/10.0; 則結果為:f=1.5,a,
43、107,在 C+語言中,表達式 (7/3+1)+ 5/6 的值是( )。 A)2B)3C)4 D)不能確定,B,a,108,(余的符號與被除數相同,不允許對浮點數操作) 3%4=3 4%4=0 例 #include void main() int n; n = 40 % 5; cout 40 % 5 : n endl; /(0) n = 40 % 7; cout 40 % 7 : n endl; / (5) n = 40 % -7; cout 40 % -7 : n endl; /(5) n = -40 % 7; cout -40 % 7 : n endl; /(-5) n = -40 % -
44、7; cout -40 % -7 : n endl; /(-5) ,( 2.) % 取余,a,109,() 取作為表達式的值,然后 () 先;然后取作為表達式的值 () ??; () ,取 例: int a=3; int b=+a; couta“ “bendl; int c=a+; couta“ “cendl;,4 5 4,、增量和減量,,a,110,.賦值運算 = 賦值運算符用于將一個數據傳給一個變量。 例如: int x; x = 5; 將值 5 傳給變量 x。其中=號即賦值運算符。 A: (1) 雙目運算符,從右到左 d=a=b (2) 賦值操作是一個表達式, 每個表達式在求值后都有一個確
45、定的值,其值為賦值號左邊表達式的值 例:cout(x=5)endl; (3) 當賦值號兩邊類型不一至時,根據左邊類型轉,a,111,int a=10; float x=70000.5;x = a;將 a 的值 10 賦給 x,x 的值為 10.0。 int a=10; float x=70000.5; a = x;將 x 的值 70000.5 賦給 a,但 70000.5 超過了 int 的取值范圍,于是將超過的部分扔掉了,a 是多少不知道了。 特別注意,上面的賦值語句,編譯時是可以通過的。,a,112,復合的賦值運算符,有10種復合運算符:+=, -=, *=, /=, %=,=, x+=x
46、-=x*x; 若x為整型變量,則上述語句執(zhí)行后 x 的值是_(4)_。 A. 36 B. -60C. 60D. -24,B,a,115,、逗號運算和逗號表達式,格式: 表達式1,表達式2 求解順序及結果: 先求解1,再求解2,最終結果為表達式2的值 例 a=3*5,a*4 最終結果為60 例 2 int a, b, c; d=(a=1, b=a+2 , c=b+3 ); coutdendl; ,Page 115,a,116,、關系運算與關系表達式,用關系運算符將兩個表達式連接起來,就是關系表達式 關系運算是比較簡單的一種邏輯運算,優(yōu)先次序為: = = != 優(yōu)先級相同(高) 優(yōu)先級相同(低)
47、關系表達式是一種最簡單的邏輯表達式 其結果類型為 bool,值只能為 true 或 false。 例如:ab,c=a+b,x+y=3,a,117,邏輯運算與邏輯表達式,邏輯運算符: !(非) = !=; else x=b;,a,124,注意:(1)條件運算符優(yōu)于賦值運算符比關系運算符和算術運算符都低 例 max=(ab)?a:b+1 (2)條件運算符的結合性為“自右向左” 例ab?a:cd?c:d 即 ab?a:(cd?c:d) (3) 條件表達式與一般if的語句的關系 coutb?a:b; ()表達式2、3的類型可以不同,條件表達式的最終類型為 2 和 3 中較高的類型。,a,125,、si
48、zeof 操作符,語法形式sizeof (類型名)或 sizeof (表達式) 結果值:“類型名”所指定的類型或“表達式”的結果類型所占的字節(jié)數。 例:coutsizeof(double)endl;,a,126,、位運算按位與(,a,128,位運算按位異或(),運算規(guī)則 兩個操作數進行異或:若對應位相同,則結果該位為 0,若對應位不同,則結果該位為 1, 舉例:計算 071052 071: 0 0 1 1 1 0 0 1 052:() 0 0 1 0 1 0 1 0 071052 : 0 0 0 1 0 0 1 1,a,129,位運算按位異或(),用途: 使特定位翻轉(與0異或保持原值,與1異
49、或取反) 例如:要使 01111010 低四位翻轉: 0 1 1 1 1 0 1 0 ()0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1,a,130,位運算取反(),單目運算符:對一個二進制數按位取反。 例: 025:0000000000010101 025:1111111111101010,a,131,位運算移位,左移運算() 右移后,低位:舍棄 高位:無符號數:補0 有符號數:補“符號位”,a,132,例1:,char a=-8; cout2)endl;,a,133,例2:,21,a,134,9、運算符優(yōu)先級,括號 +,-,sizeof *, /, % +, - =, !=
50、 位運算 float x=10; x=(float)a+a/b; (19.0),a,138,賦值語句,格式: 賦值表達式; 賦值語句與賦值表達式的區(qū)別: 賦值表達式可以包含在其它表達式中,而賦值語句不可。 例:if (a=b)0) t=a; 不可寫為:if (a=b;)0) t=a;,a,139,這是C中新加的非常簡單易用的輸入、輸出方式, C+中沒有專門的輸入輸出語句,是用I/O流類來實現。 在程序的開頭增加一行: #include 1)用插入操作符“”向標準輸出流cout中插入字符。 向標準輸出設備(顯示器)輸出 例:int x; cout“x=“x;,簡單的輸入、輸出,a,140,2)
51、用抽取操作符“”從標準輸入流cin中抽取字符 從標準輸入設備(鍵盤)輸入 例:int x; cinx; int a,b; cinab;,) 使用控制符 有時缺省輸出格式不能滿足要求,這時可以用控制符控制輸出的格式。 P表2-。 在程序的開頭增加一行: #include,a,141,例:,#include #include void main() coutsetw(5)setprecision(3)3.1415endl; 3.14,a,142,2.5算法的基本控制結構,問題的提出: (1) -1 (x0) (2)統(tǒng)計任意一個人群的平均身高 算法 算法的基本控制結構: 順序結構 分支結構 循環(huán)結構
52、 程序流程圖,a,143,if (表達式) 語句 例:if (xy) couty) coutx; else couty; if (表達式1) 語句1else if (表達式2) 語句2else if (表達式3) 語句3 else 語句 n,2.4.1 if 語句 三種形式,a,144, (條件表達式) 語句; 或(條件表達式) 語句; 或(條件表達式);空語句作中的語句 語句;,a,145,例(判輸入是否合理) #include void main( ) unsigned int age; cout age; if (age10) cout The age may be wrong; ,a,
53、146,#include void main() int year; cout year; / think about the sequence of the logical expression if (year %4 = 0 ,ifelse語句 if(條件表達式) 語句; else 語句;,例判閏年,a,147,一般形式 if ( ) if ( ) 語句 1 else 語句 2 else if ( ) 語句 3 else 語句 4 注意 語句 1、2、3、4 可以是復合語句,每層的 if 與 else 配對,或用 來確定層次關系。,a,148,int x=20; if(x=0) if(x5
54、0) cout“x is okn”; else cout“x is not okn”;,If 語句的嵌套二義性 因為 if 可以嵌套,所有在嵌套時有時會出 歧義, 例如上例中,else 是與第一個 if 配對, 還是與第二個 if 配對? 這種時候,系統(tǒng)就認為 :else 與最近的一個 if 相對應,a,149,二義性: (1) if() if() coutendl;/輸出能被整除,能被整除 else coutendl;/輸出能被整除,不能被整除 (2) if() if() coutendl; /輸出能被整除,能被整除 else coutendl;/輸出不能被整除不管是否被整除,a,150,例
55、2-3 輸入兩個整數,比較兩個數的大小。,a,151,#include void main( ) int x,y; coutxy; if (x!=y) if (xy) coutyendl; else coutxyendl; else coutx=yendl; ,a,152,運行結果1: Enter x and y:5 8 xy,a,153,#include void main( ) int x,y,z; cinxyz; int max=x; If (zy) if(zx) max=z; else if(yx) max=y; coutmax; ,功能:在三個數中取最大的,a,154,#includ
56、e void main( ) int x,y,z; cinxyz; int max=x; If (ymax) max=y; if(zmax) max=z; coutmax; ,a,155,#include void main() unsigned int amount = 0; float total=0 ; cout amount; if (amount 10) total = 5.88 * long(amount); else if (amount = 100) total = 5.68 * long(amount); else total = 5.68 * 0.95 * long(amount); cout Pay the money : total Please; ,例 / 5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版錘式破碎機設備租賃與使用權轉讓合同12篇
- 二零二五版市政綠化養(yǎng)護及植被更新合同3篇
- 2025年教師遠程教育聘用合同及服務協(xié)議2篇
- 二零二五年度35kv架空線路施工噪聲污染治理合同3篇
- 2025年度生物制藥企業(yè)控股權變更股權轉讓合同
- 2025年度股東對公司借款及財務報表披露協(xié)議
- 二零二五年度知識產權糾紛合同范本
- 二零二五年度集裝箱貨車運輸合同電子版
- 二零二五年度汽車貸款逾期罰金與利息退還合同
- 2025年度鋼結構工程勞務分包合同施工資料管理要求
- 藥學技能競賽標準答案與評分細則處方
- 2025屆高考英語 716個閱讀理解高頻詞清單
- 報建協(xié)議書模板
- 汽車配件購銷合同范文
- 貴州省2024年中考英語真題(含答案)
- 施工項目平移合同范本
- (高清版)JTGT 3360-01-2018 公路橋梁抗風設計規(guī)范
- 胰島素注射的護理
- 云南省普通高中學生綜合素質評價-基本素質評價表
- 2024年消防產品項目營銷策劃方案
- 聞道課件播放器
評論
0/150
提交評論