




已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章 程序設計與軟件開發(fā)基礎概述,第一節(jié) 基礎知識回顧與軟件工程 第二節(jié) 算法與數(shù)據(jù)結構 第三節(jié) C語言介紹 第四節(jié) 常用C開發(fā)工具,1 / 46,C語言程序設計 龍昭華主編,第一節(jié) 基礎知識回顧與軟件工程,(第一章 程序設計與軟件開發(fā)基礎概述),2 / 46,一、 各種進制之間數(shù)的轉換,十進制轉換成二進制:對于整數(shù)部分采用除2取余法,用2逐次去除十進制數(shù), 直至商為0為止。先得到的余數(shù)為二進制的低位數(shù),最后得到的余數(shù)為二進 制的最高位的數(shù)。 十進制數(shù)轉換成八進制、十六進制:方法同轉換成二進制,只是將2分別改成8 和16。 二進制、八進制、十六進制數(shù)轉換成十進制數(shù):使用按權展開、逐項相加的方 法。 二進制轉換成八進制、十六進制:因為23=8、24=16,所以3位二進制對應一位 八進制,4位二進制對應一位十六進制。 八進制、十六進制轉換成二進制:上面的逆過程,將1位八進制數(shù)轉成3位二進 制數(shù),將1位十六進制數(shù)轉成4位二進制數(shù)即可。 例如: (10001)B = 1*24+1 =(17)D =(21)O =(11)H (20)D =(10100)B =(24)O =(14)H (2B)H = 2*16+11 =(43)D =(53)O =(101011)B,二、 原碼、反碼、補碼、ASCII碼,第一節(jié) 基礎知識回顧與軟件工程,3 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),原碼:在原碼中規(guī)定正數(shù)符號位為0,負數(shù)符號位為1,后面的數(shù)據(jù)位則表示該 數(shù)的絕對值。 如:+15原=0000000000001111B , -15原=1000000000001111B。 反碼:在反碼中規(guī)定正數(shù)的反碼與原碼相同;負數(shù)的反碼由該負數(shù)的原碼進行 計算:原碼符號位不變,數(shù)據(jù)位按位取反(即0變?yōu)?,1變?yōu)?)。 如: +15反=0000000000001111B , -15反=1111111111110000B。 補碼:正數(shù)的補碼等于原碼;負數(shù)的補碼等于該負數(shù)的反碼加1,即該數(shù)絕對 值的原碼按位取反加1。如:+15補=+15原=0000000000001111B, -15補=1111111111110001B。 ASCII 碼:無符號整型數(shù)據(jù)值即為ASCII碼值。 標準ASCII碼取值 0127 。 擴展ASCII碼取值 128255 。如:字母AZ的ASCII碼值為6590。 注意:在計算機中,數(shù)值數(shù)據(jù)是用補碼方式表示的,而字符數(shù)據(jù) 是用ASCII碼表示的。,三、 編程語言,第一節(jié) 基礎知識回顧與軟件工程,4 / 46,第一代語言又稱“機器語言”,是計算機誕生和發(fā)展初期使用的語言,它是用二 進制形式編碼的,由CPU可以識別的0、1序列構成指令碼。 第二代語言是“匯編語言”,它開始于20世紀50年代初,是用助記符來表示每一 條機器指令。第一代語言和第二代語言都是低級語言。 第三代語言即“高級語言”,它起源于20世紀50年代中期,與人們的自然語言和 數(shù)學語言更接近,可讀性強,編程方便。它告訴計算機怎么做。 如:BASIC,F(xiàn)ORTRAN、COBOL、PASCAL、C等。C語言也是中級語言,它把 高級語言的基本結構和語句與低級語言的實用性結合起來。 第四代語言稱為“非過程化語言”,又稱為“面向對象的語言”。它告訴計算機做 什么。不必關心問題的解法和處理過程的細節(jié)描述,只要說明所要完成的 加工和條件,指明輸入數(shù)據(jù)和輸出形式,就能得到要的結果,其他工作由 系統(tǒng)來完成。如:C+、Visual C+、DELPHI等。 第五代語言,堪稱智能性語言。PROLOG語言是第五代語言的代表,他廣泛運用 于抽象問題求解、數(shù)據(jù)邏輯、公式處理、自然語言理解、專家系統(tǒng)和人工 智能的許多領域。,(第一章 程序設計與軟件開發(fā)基礎概述),四、 軟件工程,第一節(jié) 基礎知識回顧與軟件工程,5 / 46,2、軟件工程概念 軟件工程是采用工程的概念、原理、技術和方法來維護和開發(fā)軟件,把經(jīng)時 間考驗證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。,1、軟件危機的表現(xiàn) 軟件復雜性飛速增長,錯誤率大增 落后編程方式導致軟件成本極高 手工開發(fā)周期長 維護工作量大,軟件工程強調使用 生命周期的方法和各 種結構化分析與設計 技術,用系統(tǒng)的觀點 來分解問題,然后再 分別解決各個子問題。,(第一章 程序設計與軟件開發(fā)基礎概述),3、軟件開發(fā)模型,第一節(jié) 基礎知識回顧與軟件工程,6 / 46,(1)、瀑布模型: 支持結構化軟件開發(fā)。,(2)、演化模型: 多次迭代逐步修正。,(3)、螺旋模型: 瀑布模型 + 演化模型 + 風險分析。,(4)、噴泉模型: 主要用于面向對象開發(fā)過程,支持復用,具有迭 代和無間歇特征。,(5)、增量模型: 快速原型模型的一種。,(第一章 程序設計與軟件開發(fā)基礎概述),第二節(jié) 算法與數(shù)據(jù)結構,7 / 46,一、 數(shù)據(jù)結構的概念,程序:程序實質是完成既定任務的指令序列。而編寫程序的工具是語言。 程序 = 數(shù)據(jù)結構 + 算法 + 程序設計方法 + 語言工具環(huán)境 算法是靈魂,是問題求解過程中的精確描述;數(shù)據(jù)結構是加工對象;語言是工 具;編程需要采用合適的方法。 數(shù)據(jù):是對客觀事物的符號表示,是所有能輸入到計算機中并被計算機程序處理的符 號的總稱。 數(shù)據(jù)元素:是數(shù)據(jù)的基本單位,在程序中通常作為一個整體進行考慮和處理。一個數(shù) 據(jù)元素可由若干個數(shù)據(jù)項組成。數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位。如一本 書的書目為一個數(shù)據(jù)元素,而書目信息中的每一項(如書名、作者名等)為一個 數(shù)據(jù)項。 數(shù)據(jù)對象:是性質相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。 數(shù)據(jù)結構:是相互之間存在一種或多種特定關系的數(shù)據(jù)元素的集合。 結構:數(shù)據(jù)元素相互之間的關系稱為結構。 數(shù)據(jù)的邏輯結構:數(shù)據(jù)元素間的邏輯上的聯(lián)系稱為數(shù)據(jù)的邏輯結構。數(shù)據(jù)結構中的元 素之間的關系集合,反映的是數(shù)據(jù)的邏輯結構。數(shù)據(jù)結構研究的內容著重于數(shù) 據(jù)的邏輯結構,因此經(jīng)常把邏輯結構稱為數(shù)據(jù)結構。 數(shù)據(jù)的存儲結構:數(shù)據(jù)的邏輯結構在計算機存儲設備中的映像稱為數(shù)據(jù)的存儲結構。,(第一章 程序設計與軟件開發(fā)基礎概述),二、 數(shù)據(jù)結構的分類,第二節(jié) 算法與數(shù)據(jù)結構,8 / 46,根據(jù)數(shù)據(jù)元素之間關系的不同特性,數(shù)據(jù)結構有4類基本結構: 集合:結構中的數(shù)據(jù)元素之間除了“同屬于一個集合”的關系外,別無其他關系。 線性結構:結構中的數(shù)據(jù)元素之間存在一個對一個(簡記為1:1)的關系。 樹形結構:結構中的數(shù)據(jù)元素之間存在一個對多個(簡記為1:N)的關系。 圖狀(網(wǎng)狀)結構:結構中的數(shù)據(jù)元素之間存在多個對多個(簡記為M:N)的關系。,(第一章 程序設計與軟件開發(fā)基礎概述),三、 算法概述,第二節(jié) 算法與數(shù)據(jù)結構,9 / 46,算法:是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表 示一個或多個操作。算法解決的是“做什么”和“怎么做”的問題,程序中的操作語句 就是算法的體現(xiàn)。 計算機算法可分為兩大類:數(shù)值運算算法、非數(shù)值運算算法。 數(shù)值運算算法:數(shù)值運算的目的是求數(shù)值解,如:求方程的根、函數(shù)的定積分等。 非數(shù)值運算算法:應用十分廣泛,如:圖書檢索、人事管理、行車調度管理、排序 算法等。 常用算法: 遞推化算法(牛頓迭代法、二分法、梯形法、窮舉法等); 排序算法(選擇法、冒泡法); 查找算法(順序查找、折半查找); 有序數(shù)列的插入、刪除操作; 存儲區(qū)的動態(tài)分配與釋放,單向線性鏈表的建立、查找、插入、刪除操作; 初等數(shù)論問題求解的有關算法(最大公約數(shù)、最小公倍數(shù)、素數(shù)等); 遞歸算法(求最大公約數(shù)、階乘等); 字符串的處理(字符和字符串的插入、刪除、字符串的連接、比較等)。,(第一章 程序設計與軟件開發(fā)基礎概述),算法具有5個特性:,第二節(jié) 算法與數(shù)據(jù)結構,10 / 46,有窮性:對任何合法的輸入值,算法中每個步驟由計算機執(zhí)行的次數(shù)及時間 都是有限的。 確定性:算法中每個步驟含義明確,無二義性。在任何條件下,相同的輸 入,必有相同的輸出。 可行性:算法中描述的操作都可通過有限次的基本運算來實現(xiàn)。 輸入:一個算法應具有零個或多個輸入。 (無輸入情況:如求:1*2*3*4*5)。 輸出:一個算法應具有一個或多個輸入。,(第一章 程序設計與軟件開發(fā)基礎概述),算法的設計目標:,第二節(jié) 算法與數(shù)據(jù)結構,11 / 46,正確性:設計的算法應當滿足具有輸入、輸出和加工處理等明確的無歧義性 的描述的具體問題的需求。驗證正確性通常有4個層次: 程序不含語法錯誤; 程序對于幾組輸入數(shù)據(jù)能夠得出滿足規(guī)格說明要求的結果; 程序對于精心選擇的典型、苛刻而帶有刁難性的幾組輸入數(shù)據(jù)能 夠得出滿足規(guī)格說明要求的結果; 程序對于一切合法的輸入數(shù)據(jù)能夠得出滿足規(guī)格說明要求的結 果。 一般情況至少通過第層的驗證。 可讀性:算法主要是為了閱讀與交流,其次才是機器執(zhí)行。可讀性好有助于 人對算法的理解;難懂的程序易于隱藏較多錯誤,難以調試和修改。 健狀性:當輸入非法數(shù)據(jù)時,算法也能適當?shù)刈龀龇磻蜻M行處理,而不會 產(chǎn)生莫名其妙的輸出結果。 效率與低存儲量的需求:主要指算法執(zhí)行時的最長時間與所需的最大存儲空 間。,(第一章 程序設計與軟件開發(fā)基礎概述),四、 算法的表示方法,第二節(jié) 算法與數(shù)據(jù)結構,12 / 46,1、用自然語言表示算法: 自然語言就是人們日常使用的語言,可以是漢語、英語或其他語言。用自然 語言表示通俗易懂,但文字冗長,容易出現(xiàn)“歧義性”。除了簡單問題外,一般 不用自然語言描述算法。,(第一章 程序設計與軟件開發(fā)基礎概述),例 1.1 :用自然語言寫出求,的算法。,解:算法表示如下: S1:sign=1 /* 數(shù)值的符號 */ S2:sum=1 /* 累加和 */ S3:deno=2 /* 分母值 */ S4:sign=(-1)*sign S5:term=sign*(1/deno)/* 某一項的值*/,S6:sum=sum+term S7:deno=deno+1 S8:若deno100返回S4,否則轉S9 S9:輸出sum,2、用流程圖表示算法,第二節(jié) 算法與數(shù)據(jù)結構,13 / 46,用流程圖表示算法,形象直觀,比較清楚地顯示出各個框之間的邏輯關系, 易于理解。但流程圖占用篇幅較多,當算法較復雜時,畫流程圖既費時,又不 方便。但必須掌握。 美國國家標準化協(xié)會ANSI規(guī)定了一些常用的流程圖符號,并已被世界各國 程序工作者采用:,三種基本結構:,為了解決程序設計混亂的問題,1966年提出了三種基本結構:順序結構、選 擇結構、循環(huán)結構,然后由這些基本結構按一定規(guī)律組成一個算法結構,整個 算法結構是由上而下將各個基本結構順序排列起來的。使用這三種基本結構順 序組成的算法結構,可以解決任何復雜的問題,并且是“結構化”的算法。,(第一章 程序設計與軟件開發(fā)基礎概述),順序結構:,第二節(jié) 算法與數(shù)據(jù)結構,14 / 46,順序結構是程序設計中最簡單的 一種基本結構。 如右圖所示,形象地描述了一個 最簡單的順序結構:圖中虛線框內是 一個順序結構。其中A和B兩個框是順 序執(zhí)行的,即在執(zhí)行完A框所指定的 操作后,必然接著執(zhí)行B框所指定的 操作。,(第一章 程序設計與軟件開發(fā)基礎概述),選擇結構(或稱選取結構,或稱分支結構):,第二節(jié) 算法與數(shù)據(jù)結構,15 / 46,如下圖所示,虛線框內是一個選擇結構。此結構必包括一個判斷框,根據(jù)給 定的條件p是否成立,而選擇執(zhí)行A框或B框。 注意:無論條件p是否成立,只能執(zhí)行A框或B框之一,不可能既執(zhí)行A框又執(zhí) 行B框。A或B兩個框中可以有一個是空的,即該空框不執(zhí)行任何操作。,(第一章 程序設計與軟件開發(fā)基礎概述),循環(huán)結構(或稱重復結構):,第二節(jié) 算法與數(shù)據(jù)結構,16 / 46,循環(huán)結構即反復執(zhí)行某一部分的操作,分為當型(while型)循環(huán)結構和直到 型(until型)循環(huán)結構兩類。,當型(while型)循環(huán)結構: 如右圖所示,虛線框內是一 個while型結構。它的功能是當給 定的條件p成立時,執(zhí)行A框操作, 執(zhí)行完A后再判斷條件p是否成立, 如果仍然成立,再執(zhí)行A框,如此 反復執(zhí)行A框,直到某一次p條件 不成立為止,此時不執(zhí)行A框,而 是從b點脫離循環(huán)結構。,(第一章 程序設計與軟件開發(fā)基礎概述),直到型(until型)循環(huán)結構:,第二節(jié) 算法與數(shù)據(jù)結構,17 / 46,如右圖所示,虛線框內是一 個until型結構。它的功能是先執(zhí) 行A框,然后判斷給定的條件p是 否成立,如果條件p成立,再執(zhí) 行A框,然后再對條件p作判斷, 如果條件p仍然成立,又執(zhí)行A 框,如此反復執(zhí)行A框,直到某一 次p條件不成立為止,此時不執(zhí)行A框,而是從b點脫離本循環(huán)結構。,(第一章 程序設計與軟件開發(fā)基礎概述),三種基本結構的共同特點:,第二節(jié) 算法與數(shù)據(jù)結構,18 / 46,只有一個入口 只有一個出口 結構內的每一部分都有機會執(zhí)行到 結構內不存在“死循環(huán)”(無終止的循環(huán)),(第一章 程序設計與軟件開發(fā)基礎概述),其他結構:,第二節(jié) 算法與數(shù)據(jù)結構,19 / 46,事實上,基本結構不一定只限于上面三種,只要具有上述基本結構的4個特點的結構都可以作為基本結構。人們可以運用三種基本結構定義自己派生的基本結構,并由這些基本結構組成結構化程序。 如下兩圖所示。,(第一章 程序設計與軟件開發(fā)基礎概述),例 1.2 :用流程圖表示出求,第二節(jié) 算法與數(shù)據(jù)結構,20 / 46,的算法。,解:,(第一章 程序設計與軟件開發(fā)基礎概述),3、用NS盒流程圖表示算法,第二節(jié) 算法與數(shù)據(jù)結構,21 / 46,既然用基本結構的順序組合可以表示任何復雜的算法結構,那么,基本結構之間的流程線就屬多余的了。1973年美國兩學者I.Nassi和B.Shneiderman提出了一種新的流程圖形式,并以他們的名字命名為NS結構化流程圖。這種流程圖完全去掉了帶箭頭的流程線,全部算法寫在一個矩形框內,在該框內還可以包括其他的從屬于它的框,即由一些基本的框組成一個大框。這種NS流程圖十分適合結構化程序設計,因而很受歡迎。,三種基本結構對應的NS流程圖符號:,順序結構 選擇結構 當(while)型循環(huán)結構 直到(until)型循環(huán)結構,(第一章 程序設計與軟件開發(fā)基礎概述),例 1.3 :用NS流程圖表示求素數(shù)的算法。,第二節(jié) 算法與數(shù)據(jù)結構,22 / 46,解: 素數(shù)是指除了1和該數(shù)本身之外,不能被其他任何整數(shù)整除的數(shù)。 實際上,若要判斷一個正整數(shù)m是否為素數(shù),只要將2到 間的每一個整數(shù)去除m,若有一個能整除m,則m不是素數(shù),若其間的所有整數(shù)都不能整除m,則m為素數(shù)。,(第一章 程序設計與軟件開發(fā)基礎概述),例 1.4 :用NS流程圖表示出判定20002500年中的每一年是否閏年,輸出結果的算法。,第二節(jié) 算法與數(shù)據(jù)結構,23 / 46,解:,閏年的條件: 能被4整除,但不能被100整除的年份都是閏年。 如:1996年、2004年是閏年。 能被100整除,又能被400整除的年份是閏年。 如:1600年、2000年是閏年。 不符合這兩個條件的年份不是閏年。,(第一章 程序設計與軟件開發(fā)基礎概述),4、用偽代碼表示算法,第二節(jié) 算法與數(shù)據(jù)結構,24 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),用流程圖和NS圖表示算法,直觀易懂,但畫起來比較費事,在設計一個算法時,可能要反復修改,而修改流程圖是比較麻煩的。因此,流程圖適宜表示一個算法,但在設計比較復雜的算法過程中使用不是很理想。為了設計算法時簡便,常常用偽代碼表示。 偽代碼表示算法的優(yōu)點: 偽代碼是用介于自然語言和計算機語言之間的文字和符號來描述算法。它如同一篇文章,自上而下的寫下來,每一行(或幾行)表示一個基本操作。它不用圖形符號,因此書寫方便、格式緊湊,也比較好懂,便于向計算機語言(即程序)過渡。 偽代碼的書寫格式比較自由,可以隨手寫下來,容易表達出設計者的思想,易于修改。 偽代碼表示算法的缺點: 用偽代碼寫算法不如流程圖或NS圖直觀,可能還會出現(xiàn)邏輯上的錯誤。,例 1.5 :用偽代碼表示“打印20002500年中的每一年是否閏年”的算法。,第二節(jié) 算法與數(shù)據(jù)結構,25 / 46,解:用偽代碼表示的算法如右邊所示:,(第一章 程序設計與軟件開發(fā)基礎概述),5、用計算機語言表示算法,第二節(jié) 算法與數(shù)據(jù)結構,26 / 46,要完成一項工作,包括設計算法和實現(xiàn)算法兩部分。前面講的只是描述算法,要得到運算結果,必須實現(xiàn)算法。實現(xiàn)算法的方法不止一種:計算器、心算、筆算等,我們這里將的是使用計算機來實現(xiàn)算法。但是計算機無法識別流程圖、自然語言、偽代碼等,只有將算法使用計算機語言編寫程序才能被計算機執(zhí)行。 計算機語言程序實際上仍然只是描述了算法,并未實現(xiàn)算法,只有運行程序才能實現(xiàn)算法。本書所講的C語言程序設計,實際上就是使用C語言來描述具,體算法,上機運行就是實現(xiàn)用C所描述的算 法。有關C語言的使用規(guī)則正是我們即將要 學習的內容。 例 1.6 :用C語言表示“打印x絕對值”的算 法。 解:用C語言表示的算法如右邊所示:,main() int x=10; if (x0) printf(“%d”,x); else printf(“%d”, x); ,(第一章 程序設計與軟件開發(fā)基礎概述),五、 結構化程序設計方法,第二節(jié) 算法與數(shù)據(jù)結構,27 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),一個結構化程序就是用高級語言表示的結構化算法。用三種基本結構組成 的程序必然是結構化的程序,這種程序便于編寫、閱讀、修改和維護。結構化 程序設計強調程序設計風格和程序結構規(guī)范化,提倡清晰的結構。 結構化程序設計方法的基本思路是,把一個復雜問題的求解過程分階段進 行,每個階段處理的問題都控制在人們容易理解和處理的范圍內。采用以下方 法就可以保證得到一個結構化的程序: 自頂向下; 進行總體設計。 逐步細化; 進行細節(jié)設計。 模塊化設計; 把復雜的問題“分而治之”,每個模塊功能獨立,其耦合性越少越好。 結構化編碼。 設計好結構化的算法后,還要善于進行結構化編碼。,第1章 程序設計與軟件開發(fā)基礎概述-習題1,28 / 46,C語言程序設計 龍昭華主編,習 題 (一) * 復習本章全部內容,預習本章剩余內容和第二章內容。 1.1 分別使用流程圖、偽代碼寫出求 的根的算法。 分別考慮:有兩個不等的實根;有兩個相等的實根;無實根。 1.2 用NS圖表示“將100200之間的素數(shù)打印出來”的算法。,第三節(jié) C語言介紹,29 / 46,一、 C語言的產(chǎn)生與發(fā)展,(第一章 程序設計與軟件開發(fā)基礎概述),C 語言是1972年由美國貝爾實驗室的Dennis Ritchie設計發(fā)明的,并首次在UNIX操作系統(tǒng)的 DEC PDP-11 計算機上使用。 C語言可以追溯到1960年出現(xiàn)的ALGOL60。ALGOL60是面向問題的高級語言,不宜用來編寫系統(tǒng)程序。1963年英國劍橋大學在ALGOL60的基礎上推出了接近硬件一些的CPL (Combined Programming Language),但它規(guī)模較大,難以實現(xiàn)。1967年劍橋大學又對CPL語言做了簡化,推出了BCPL ( Basic Combined Programming Language)語言。在1970年, AT&T 貝爾實驗室的 Ken Thompson根據(jù)BCPL語言又一次做了簡化,設計出較先進的并取名為 B的語言。但B語言過于簡單,功能有限。最后導了C語言(取BCPL的第二個字母) 的問世。,隨著微型計算機的日益普及, 出現(xiàn)了許多C 語言版本。由于沒有統(tǒng)一的標準,使得這些C 語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國國家標準研究所(ANSI)為C 語言制定了一套ANSI標準,成為現(xiàn)行的C語言標準。,二、 C語言的特點,第三節(jié) C語言介紹,30 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),C 語言發(fā)展如此迅速, 而且成為最受歡迎的語言之一, 主要因為它具有強大的功能。許多著名的系統(tǒng)軟件,如UNIX、DBASE PLUS、DBASE 都是由C 語言編寫的。用C 語言加上一些匯編語言子程序, 就更能顯示C 語言的優(yōu)勢了,象PC- DOS 、WORDSTAR等就是用這種方法編寫的。歸納起來C 語言具有下列特點: 1. C是中級語言 :它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以象匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元。 2. C是結構式語言:結構式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便于使用、維護以及調試。C 語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結構化。 3. C語言功能齊全:C 語言具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。另外C 語言也具有強大的圖形功能,支持多種顯示器和驅動器。而且計算功能、邏輯判斷功能也比較強大,可以實現(xiàn)決策目的。 4. C語言適用范圍大:C 語言還有一個突出的優(yōu)點就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機型。 5. 語法限制不太嚴格,程序設計自由度大。因此C程序員要對程序設計更熟悉一些。 6. 生成目標代碼質量高,程序執(zhí)行效率高。 7. C語言可移植性好、硬件控制能力高、表達和運算能力強。,三、 C程序介紹,第三節(jié) C語言介紹,31 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),1. C程序是由函數(shù)構成的。一個C源程序至少包括一個main()函數(shù),也可以包含一個main()函數(shù)和若干個其他函數(shù)。因此函數(shù)是C程序的基本單位。被調用的函數(shù)可以是系統(tǒng)提供的庫函數(shù),也可以是自己編寫的函數(shù)。C的函數(shù)相當于其他語言的子程序,編寫C程序,就是編寫一個個函數(shù),因此可以說C是函數(shù)式的語言。ANSI C提供了100多個庫函數(shù),Turbo C2.0和MS C4.0提供了300多個庫函數(shù)。,2. C程序的一個函數(shù)由兩部分組成。函數(shù)的首部,即函數(shù)的第一行。包括 函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。一個函數(shù)名后 面必須跟一對圓括號,函數(shù)參數(shù)可以沒有。函數(shù)首部結尾無分號“;”。函數(shù) 體,即函數(shù)首部下面的花括弧 內的部分。如果一個函數(shù)內有多個花括 弧,則最外層的一對為函數(shù)體的范圍。 函數(shù)體一般包括:聲明部分:在這一部分中定義所用到的變量(或調用的 函數(shù))。 執(zhí)行部分:由若干個語句構成。 注意:空函數(shù)也是合法的??蘸瘮?shù)既無聲明部分,又無執(zhí)行部分。,3. 一個C程序總是從main函數(shù)開始執(zhí)行,并在main函數(shù)中結束,第三節(jié) C語言介紹,32 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),不論main函數(shù)在整個程序中的位置如何, 一個C程序總是從main函數(shù)開始 執(zhí)行的,main函數(shù)執(zhí)行完畢,也標志著整個C程序執(zhí)行完畢。 4. C程序書寫格式自由 C程序沒有行號,一行內可以寫幾個語句,一個語句可以分寫在多行上。 5. 每個語句和數(shù)據(jù)定義的最后必須有一個分號。分號是C語句的必要組成 部分,分號不可少,即使是程序中最后一個語句也應該包含分號。 6. C語言本身沒有輸入輸出語句。輸入和輸出操作是又庫函數(shù)scanf和 printf等函數(shù)來完成的。由于輸入輸出操作牽涉到具體的計算機設備,把輸入 輸出操作放在函數(shù)中處理,就可以使C語言本身的規(guī)模較小,編譯程序簡單, 很容易在各種機器上實現(xiàn),程序具有可移植性。 如輸出:Hello,How do you do! 則用: printf(“Hello,How do you do!”); 7. 可以用/* */對C程序中任何部分作注釋。,8. #include的作用,第三節(jié) C語言介紹,33 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),在許多C語言系統(tǒng)軟件中,程序的第一行有#include “/src/card.h ”或 #include ,它的作用是將事先定義的各種環(huán)境進行加載,保證編寫的 程序代碼能正確運行。 文件stdio.h或card.h稱為頭文件。 如果頭文件放在C系統(tǒng)缺省目錄中(一般為include目錄),則該文件在加載 時,直接寫文件名,并用一對尖括號括起來。 如果頭文件不在C系統(tǒng)缺省目錄中,則必須在文件名前加上路徑,并用一 對雙引號“”括起來。使用雙引號“”時,它將首先在當前目錄或指定目錄尋找頭 文件,如果沒有找到,則再到C缺省目錄尋找。,9. C語句分類,第三節(jié) C語言介紹,34 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),控制語句:它完成一定的程序流程控制能力。C語言有9種控制語句: if() else (條件語句) for() (循環(huán)語句) while() (循環(huán)語句) do while() (循環(huán)語句) continue (結束本次循環(huán)) break (中止執(zhí)行switch或循環(huán)語句) switch (多分支選擇語句) goto (轉向語句) return (從函數(shù)返回語句) 函數(shù)調用語句:由一個函數(shù)加一個分號就構成一個函數(shù)調用語句。 空語句:它是只有一個分號的語句,什么也不做。 復合語句:花括號內的所有語句總稱為一個復合語句。 表達式語句:表達式語句是指由一個表達式構成的語句,表達式的最后加一個分號就構成了表達式語句,C語言程序中的語句大多數(shù)都是表達式語句。,10. C語言的輸入輸出函數(shù),第三節(jié) C語言介紹,35 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),C語言沒有輸入輸出語句,主要由庫函數(shù)完成,庫函數(shù)在stdio.h中定義,例如: putchar (輸出字符) 如:char ch=A; putchar(ch); getchar (輸入字符) 如:char ch; ch=getchar(); printf (格式輸出) 如:printf(“Very Good!”); scanf (格式輸入) 如:int n; scanf(“%d”,11. C語言關鍵字,第三節(jié) C語言介紹,36 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),關鍵字又稱保留字,它是ANSI C保留下來的有專門目的的名字,它不能被程序員重復命名。使用C語言編程時,不能定義與關鍵字相同的變量名、函數(shù)名等。 C語言中的常用的關鍵字有以下30多個: 類型名:int,char,float,double,short,long,unsigned,viod 存儲類型:auto,static,register,extern 控制語句:if,while,do,goto,break,continue,for,default,case, switch,return,else 類型標識符:struct,union,enum 其他:typedef,sizeof,signed,const,volatile 另外,Turbo C2.0擴展關鍵字有:asm,_cs,_ds,_es,_ss,cdecl,far, near,huge,interrupt,pascal,12. C語言的標識符,第三節(jié) C語言介紹,37 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),所謂標識符,是指常量、變量、語句標號以及用戶自定義函數(shù)的名稱等。 標識符的命名必須遵循以下原則: 所有標識符必須由一個字母(az, AZ)或下劃線(_)開頭。 標識符除開頭的其它部分可以用字母、下劃線或數(shù)字(09)組成。 不要太長。在IBM-PC的MSC系統(tǒng)中取8個字符,Turbo C允許32個字符。 不要與C語言中的庫函數(shù)名、類型名相同。 不能使用C語言中的關鍵字。如do、for、int等。 大小寫字母表示不同意義,即代表不同的標識符。 例如: 合法的標識符 不正確的標識符 smart 5smart _decision bomb? key_board key.board FLOAT float Year2008 a%,例 1.7 :,第三節(jié) C語言介紹,38 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),#include /*包含文件說明*/ main() /* 主函數(shù) */ int max(int x,int y); /*聲明部分,函數(shù)聲明*/ int a,b,c; /* 定義變量 */ /* 執(zhí)行部分 */ scanf(“%d,%d”, /* 將z的值返回,通過max帶回調用處 */ ,例 1.8 :打印圖案。,第三節(jié) C語言介紹,39 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),#include /* 包含文件說明 */ void main(void) /* 主函數(shù) */ clrscr(); /* 清屏 */ printf(“AAAAAAAAAAAA”); printf(“ AAAAAAAAAA ”); printf(“ AAAAAAAA ”); printf(“ AAAAAA ”); printf(“ AAAA ”); printf(“ AA ”); printf(“ A ”); ,四、 TurboC源程序的一般形式,第三節(jié) C語言介紹,40 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),包含文件 子函數(shù)類型聲明 全程變量聲明 main() 局部變量聲明 sub1() 局部變量聲明 ,sub2() 局部變量聲明 . . . subN() 局部變量聲明 ,其中sub1(), ., subN()代表用戶定義的子函數(shù),程序體指Turbo C提供的任何庫函數(shù)調用語句、控制流程語句或其它用子函數(shù)調用語句等。,五、 C語言編程風格,第三節(jié) C語言介紹,41 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),1. 格式縮進??s進的大小是為了清楚的定義一個塊的開始和結束。最好使用8個縮進字符,當然也可以使用4個縮進字符。可直接使用Tab縮進8個字符。如果你的程序有3個以上的縮進的時候,你就應該修改你的程序。程序嵌套太多,不利于閱讀。 2.花括號的位置。一般情況下,將開始的花括號放在一行的最后,而將結束的花括號放在一行的第一位。當然也可以將開始的花括號放在一行的第一位。但是,命名函數(shù)時,開始的花括號都是放在下一行的第一位的。 3.命名系統(tǒng)。C是一種簡潔的語言,那么,命名也應該是簡潔的。描述性名字對全局變量來說是必要的,但局部變量的命名應該短小精悍。 4.函數(shù)處理。函數(shù)應該短小而迷人,而且它只作一件事情。函數(shù)的局部變量的個數(shù)一般不應該超過5-10個,否則分割成更小的函數(shù)。 5.注釋。在有限的注釋里,盡可能多的說明你的代碼做些什么,而不是注釋怎么做的。一般將注釋寫在函數(shù)前,告訴別人它做些什么事情,和可能為什么要這樣做。假如這個函數(shù)確實很復雜,你需要在其中有部分的注釋,則請分割成小函數(shù)。 6.字母書寫規(guī)范。程序一般用小寫字母書寫。變量名、函數(shù)名等一般用小寫字母書寫。符號常量一般用大寫字母書寫。 7. 在Turbo C中, 要嚴格區(qū)分大、小寫字母。相同字母的大、小寫代表不同的變量。,第四節(jié) 常用C開發(fā)工具,42 / 46,一、 C程序的上機步驟,(第一章 程序設計與軟件開發(fā)基礎概述),為了使計算機能按照人們的意志進行工作,必須根據(jù)問題的要求,編寫出相應的程序。所謂程序,就是一組計算機能識別和執(zhí)行的指令。用高級語言編寫的程序稱為“源程序”。 計算機只能識別和執(zhí)行由0和1組成的二進制的指令,源程序必須通過“編譯程序”翻譯成二進制形式的“目標程序”。 最后,將該目標程序與系統(tǒng)的函數(shù)庫和其他目標程序連接起來,形成可執(zhí)行的目標程序。,二、 Turbo C 2.0,第四節(jié) 常用C開發(fā)工具,43 / 46,(第一章 程序設計與軟件開發(fā)基礎概述),Turbo C 是美國Borland 公司于1987年首次推出的產(chǎn)品,而Turbo C 2.0 則是該公司1989年出版的。Borland 公司后來又推出了面向對象的程序軟件包Turbo C+,它繼承發(fā)展Turbo C 2.0 的集成開發(fā)環(huán)境,并包含了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國3-甲基-2-甲醛噻吩數(shù)據(jù)監(jiān)測報告
- 2025至2030年中國頂尖高性能光學平臺市場分析及競爭策略研究報告
- 2025至2030年中國鋁鋅噴劑市場分析及競爭策略研究報告
- 2025至2030年中國選色紙轉動輪市場分析及競爭策略研究報告
- 2025至2030年中國網(wǎng)絡應用管理平臺市場分析及競爭策略研究報告
- 2025至2030年中國碳化鈦粉市場分析及競爭策略研究報告
- 2025至2030年中國電子專用模具市場分析及競爭策略研究報告
- 2025至2030年中國汽車鋰基脂市場分析及競爭策略研究報告
- 2025至2030年中國散熱貼片市場分析及競爭策略研究報告
- 2025至2030年中國彈簧圓規(guī)市場分析及競爭策略研究報告
- 站用電400V系統(tǒng)定期切換試驗方案
- 初中數(shù)學北師大八年級下冊(2023年修訂) 因式分解岷陽王冬雪提公因式法教學設計
- 金屬非金屬礦山安全規(guī)程
- DB3311∕T 132-2020 住宅小區(qū)物業(yè)服務規(guī)范
- 員工三級安全教育培訓記錄
- C-TPAT反恐知識培訓ppt課件
- 二代征信系統(tǒng)數(shù)據(jù)采集規(guī)范釋義
- 河南華泰特種電纜項目可行性分析報告
- 公司員工合理化建議獎勵辦法
- 加工中心刀具庫選擇PLC控制系統(tǒng)設計
- 主域故障無法啟動,額外域提升Active Directory
評論
0/150
提交評論