程序設計基礎第一章_第1頁
程序設計基礎第一章_第2頁
程序設計基礎第一章_第3頁
程序設計基礎第一章_第4頁
程序設計基礎第一章_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、程序設計基礎第一章第1頁,共114頁,2022年,5月20日,11點58分,星期五聯(lián)系方式cwy主樓B1-513 第2頁,共114頁,2022年,5月20日,11點58分,星期五學時:24+24成績構成: 平時10, 期中10分 實驗20分,期末60 分考試:閉卷、筆試第3頁,共114頁,2022年,5月20日,11點58分,星期五教材: C語言程序設計 黃迪明 等 電子科技大學出版社 2008.7第4頁,共114頁,2022年,5月20日,11點58分,星期五參考書Brian W. Kernighan,Demis RitchieThe C Programming Language 2nd E

2、d(英文影印版)清華大學出版社 2000譚浩強 C程序設計(第3版) 清華大學出版社 2005第5頁,共114頁,2022年,5月20日,11點58分,星期五程序設計Programming給出解決特定問題程序的方法和過程,是軟件構造活動的重要組成部分專業(yè)的程序設計人員稱為程序員程序設計過程應當包括需求分析 設計 編碼 測試 維護五個階段,并生成各種文檔資料。第6頁,共114頁,2022年,5月20日,11點58分,星期五程序設計程序設計需要以某種程序設計語言為工具:編寫出該語言的程序。第7頁,共114頁,2022年,5月20日,11點58分,星期五問題什么是程序設計語言?什么是程序?什么是軟件

3、?程序設計語言與程序的關系是什么?第8頁,共114頁,2022年,5月20日,11點58分,星期五語言:一組規(guī)則的組合自然語言中的英語:1)字母表的定義;2)詞法規(guī)則:單詞符號的形成規(guī)則 一個單詞對應一條形成規(guī)則,規(guī)定了該單詞由哪些字母按照什么順序進行排列第9頁,共114頁,2022年,5月20日,11點58分,星期五3)語法規(guī)則:語法單位的形成規(guī)則 短語、從句、句子、段落、文章4)語義規(guī)則: 單詞符號和語法單位的含義規(guī)則第10頁,共114頁,2022年,5月20日,11點58分,星期五5)語用規(guī)則: 語義規(guī)則的發(fā)展和延伸 強調在一定的語境中使用單詞和語法單位時體現出來的具體意義 需要根據上下

4、文進行明確第11頁,共114頁,2022年,5月20日,11點58分,星期五思考英語和英語文章的關系?第12頁,共114頁,2022年,5月20日,11點58分,星期五程序設計語言: 用于程序設計的人工語言第13頁,共114頁,2022年,5月20日,11點58分,星期五程序設計語言機器語言:第一代程序設計語言 字母表:0,1 單詞符號:操作碼、地址 語法單位: 指令 10111000 1001 1110 程序 指令的組合第14頁,共114頁,2022年,5月20日,11點58分,星期五機器語言編寫程序十分繁瑣和痛苦;程序不便于記憶、閱讀和書寫,容易出錯(查錯和改錯,十分困難);每類計算機的指

5、令系統(tǒng)各不相同,可移植性很差,造成了重復工作。第15頁,共114頁,2022年,5月20日,11點58分,星期五機器語言指令針對特定型號的計算機(與機器有關,低級語言) 運算效率很高第16頁,共114頁,2022年,5月20日,11點58分,星期五匯編語言字母表:主要增加了英文字母單詞符號: 操作碼、內存符號、寄存器、數據語法單位: 指令 ADD A,R0 程序 指令的組合第17頁,共114頁,2022年,5月20日,11點58分,星期五匯編語言:第二代計算機語言助記憶符:用與代碼指令含義相近的英文縮寫詞、字母和數字等符號取代指令代碼較容易理解程序,糾錯及維護變得較方便匯編語言仍然是面向機器的

6、語言(低級語言),仍比較繁瑣,通用性也差。第18頁,共114頁,2022年,5月20日,11點58分,星期五匯編語言需要將匯編語言指令翻譯成機器語言的指令:匯編匯編語言程序的目標程序占用內存空間少,運行速度快有著高級語言不可替代的用途 第19頁,共114頁,2022年,5月20日,11點58分,星期五高級程序設計語言1)字母表的定義;2)詞法規(guī)則:一般有五類單詞符號3)語法規(guī)則: 語法單位包括:表達式、語句、模塊、程序第20頁,共114頁,2022年,5月20日,11點58分,星期五高級程序設計語言4)語義規(guī)則:5)語用規(guī)則:無二義的6)其他規(guī)則: 如數據類型的定義、運算符優(yōu)先級的定義、參數的

7、傳遞方式、作用域的規(guī)定等第21頁,共114頁,2022年,5月20日,11點58分,星期五FORTRAN語言的一條語句: if (num0) then abs:=num else abs:=-num;第22頁,共114頁,2022年,5月20日,11點58分,星期五高級程序設計語言獨立于計算機的硬件對具體的算法進行描述(算法語言)獨立性,通用性和可移植性好第23頁,共114頁,2022年,5月20日,11點58分,星期五高級程序設計語言一般包含有以下四種成分:數據成分:描述程序所涉及的數據運算成分:描述運算控制成分:表達程序的控制結構傳輸成分:表達數據的傳輸(輸入輸出、文件讀寫操作)第24頁,

8、共114頁,2022年,5月20日,11點58分,星期五高級程序設計語言高級語言的程序主要是描述計算機的解題過程,即描述復雜的加工處理過程,所以也稱高級語言為面向過程語言。計算機不能直接執(zhí)行高級語言的程序(源程序);通常有解釋方式和編譯方式兩種方法在計算機上執(zhí)行程序(目標程序)。第25頁,共114頁,2022年,5月20日,11點58分,星期五第26頁,共114頁,2022年,5月20日,11點58分,星期五思考 大量的程序設計語言被發(fā)明、被取代、被修改或組合在一起; 盡管多次試圖創(chuàng)造一種通用的程序設計語言,卻沒有一次嘗試是成功的 WHY?第27頁,共114頁,2022年,5月20日,11點5

9、8分,星期五高級語言的發(fā)展從 早期語言 到 結構化程序設計語言從 面向過程 到 非過程化程序語言第28頁,共114頁,2022年,5月20日,11點58分,星期五FORTRAN=FORmula TRANslation 主要用于科學計算2.ALGOL 60=ALGOrithmic Language 60 采用BNF形式描述語法一. 早期的高級語言(50年代)第29頁,共114頁,2022年,5月20日,11點58分,星期五早期的高級語言 3. COBOL COmmon Business Oriented Language.廣泛應用于各種事務處理領域.引入了文件和數據描述第30頁,共114頁,20

10、22年,5月20日,11點58分,星期五基于數學原則的語言 1. LISP.其基礎是函數和函數作用2. APL.支持函數式程序設計風格.應用于大量矩陣運算的科學計算二.早期的突破第31頁,共114頁,2022年,5月20日,11點58分,星期五3. SNOBOL 4 .主要用于字符串處理 . 與機器無關的宏功能,增加了程序的可移植性第32頁,共114頁,2022年,5月20日,11點58分,星期五PL/1 .希望將所有語言概念集成大全 .分程序概念和遞歸過程 .數據描述機能 .動態(tài)數據結構 .異常處理 .多任務機能 .可用于科學數值計算,數據處理等 .難以得到廣泛的應用三. 概念的集成(64年

11、)第33頁,共114頁,2022年,5月20日,11點58分,星期五 引入了許多有趣的概念1. ALGOL 68 .以零型文法描述語法規(guī)則 .引入正交性和通用性原則四. 再一次突破(60年代后期)第34頁,共114頁,2022年,5月20日,11點58分,星期五2. SIMULA67 .應用于模擬領域 .協(xié)同程序 .引入了類的概念第35頁,共114頁,2022年,5月20日,11點58分,星期五3. PASCAL .具有明顯的簡潔性 .體現結構程序設計思想 .具有用戶自定義類型 利用語法圖形式描述語法規(guī)則第36頁,共114頁,2022年,5月20日,11點58分,星期五 4. BASICBeg

12、inners All-purpose Symbolic Instruction Code .簡單易學 .交互式工作環(huán)境 .解釋執(zhí)行第37頁,共114頁,2022年,5月20日,11點58分,星期五70年代,支持系統(tǒng)軟件開發(fā)1. 語言研究 涉及抽象數據類型,異常處理和并行處理機制 2. MODULA-2 .支持模塊結構,模塊可以獨立編譯 .面向實時系統(tǒng)和并行系統(tǒng)綜合功能五. 大量的探索第38頁,共114頁,2022年,5月20日,11點58分,星期五3. C CPLBCPLBC .具有高級語言和低級語言的優(yōu)點 .應用于各種領域第39頁,共114頁,2022年,5月20日,11點58分,星期五70

13、年代以后,注重可移植性 1. Ada .面向專門領域的特殊要求 .是在引入了一個不大的,容易理解的 概念集合的基礎上開發(fā)的 .體現許多現代軟件設計方法學的語言 .提高程序的可讀性,可靠性,可維護性六. Ada和第四代語言第40頁,共114頁,2022年,5月20日,11點58分,星期五2. 第四代語言超高級語言 面向問題 .表達力強,更接近于問題的描述 .著重關心的是:做什么第41頁,共114頁,2022年,5月20日,11點58分,星期五 Java、HTML Java是一種通用、并發(fā)、基于類的面向對象的程序設計語言。面向對象實現:編譯與解釋相結合分布性、安全性、并發(fā)性七. 網絡時代的語言第4

14、2頁,共114頁,2022年,5月20日,11點58分,星期五拋棄馮.諾依曼體系結構包括函數式,邏輯式語言應用于人工智能等領域八. 新一代程序設計語言第43頁,共114頁,2022年,5月20日,11點58分,星期五1.基礎 存儲器,控制器,處理器,ip2.特點 數據或指令以二進制形式存儲; 存儲程序的工作方式; 程序順序執(zhí)行;可強制修改執(zhí)行順序 存儲器的內容可以被修改。 馮.諾依曼體系結構(模型)第44頁,共114頁,2022年,5月20日,11點58分,星期五ip代碼存儲器(C)數據存儲器(D)第45頁,共114頁,2022年,5月20日,11點58分,星期五一些高級語言的關系第46頁,共

15、114頁,2022年,5月20日,11點58分,星期五程序設計語言的發(fā)展小結 機器語言匯編語言高級語言 用機器語言編寫的程序由二進制代碼組成,計算機可以直接執(zhí)行。 將機器語言符號化,于是產生了匯編語言。 機器語言和匯編語言都是與機器有關的語言,通常稱為低級語言。第47頁,共114頁,2022年,5月20日,11點58分,星期五C語言的發(fā)展1963年,在ALGOL 60 的基礎上,英國劍橋大學推出了CPL(Combined Programming Langurage)語言。1967年英國劍橋大學的 Matin Richards對CPL語言做了簡化,推出了 BCPL (Base CPL )語言。1

16、970年美國貝爾實驗室的 Ken Thompson 對 BCPL 進一步簡化,設計出了簡單的而且很接近硬件的 B 語言,并用B語言寫出了第一個 UNIX 操作系統(tǒng)。第48頁,共114頁,2022年,5月20日,11點58分,星期五1972年至1973年間,貝爾實驗室的戴尼斯利奇(Demis Ritchie)和布朗卡尼漢(Brian Kernighan)在 B 語言的基礎上設計出了 C 語言(BCPL)。C語言即保持 BCPL 語言和 B 語言的優(yōu)點(精練、接近硬件),又克服了他們的缺點(過于簡單,數據無類型等)。 1973年新的UNIX版本完全用C語言編寫 第49頁,共114頁,2022年,5

17、月20日,11點58分,星期五1977年出現了可移植C語言的編譯程序 ,推動了UNIX在各種機器上實現 ,C語言也迅速得到推廣,其發(fā)展相輔相成。1978年以后,C語言先后移植到大、中、小、微型計算機上,成為最廣泛使用的計算機程序設計語言之一。第50頁,共114頁,2022年,5月20日,11點58分,星期五1978年在Brian W.Kernighan和Dennis M.Ritchie 合著的The C Programming Language 成為C語言的標準。第51頁,共114頁,2022年,5月20日,11點58分,星期五1983年,美國國家標準化協(xié)會(ANSI)根據C語言各種版本對C的

18、發(fā)展和擴充,制定了新的標準ANSI C,比標準C有了很大的發(fā)展1987年,ANSI公布了新標準:87 ANSI C。1989年,公布了新的C語言標準C891990年,ISO接受C89作為國際標準,通常稱為C90第52頁,共114頁,2022年,5月20日,11點58分,星期五1999年,ISO對C語言增加了一些面向對象的特征,簡稱為 C99。 目前流行的C語言編譯系統(tǒng)大多是以C89為基礎進行開發(fā)的。第53頁,共114頁,2022年,5月20日,11點58分,星期五第一章 C語言程序設計基礎知識 C語言是一種通用的高級程序設計語言當今世界上最流行的程序設計語言之一開發(fā)系統(tǒng)軟件和應用軟件中得到廣泛

19、應用本章簡介C語言程序設計相關的基礎知識 第54頁,共114頁,2022年,5月20日,11點58分,星期五1.1 引言1.1.1 計算機與信息社會計算機定義: 一種在事先存入程序的控制下,能夠接收數據、存儲數據、處理數據并提供處理結果的數字化電子設備。第55頁,共114頁,2022年,5月20日,11點58分,星期五計算機工作流程圖輸入運算與控制存儲輸出數據計算機結果第56頁,共114頁,2022年,5月20日,11點58分,星期五1.1.2 計算機中信息的表示 1.計算機內所有信息采用二進制表示 2.采用二進制的原因: 1)二進制只包含0和1,因此可用大量具有兩種不同穩(wěn)定狀態(tài)的元件來表示。

20、 2)二進制數的運算規(guī)則簡單,使得計算機中的運算部件的結構變得比較簡單。第57頁,共114頁,2022年,5月20日,11點58分,星期五3 .計算機中信息的表示數值直接轉換為二進制字符采用ASCII編碼(7位、美國標準信息交換碼)其它信息(漢字、圖形、圖象、聲音、表格)也有相應的編碼標準和規(guī)則。第58頁,共114頁,2022年,5月20日,11點58分,星期五 計算機系統(tǒng)軟件系統(tǒng)硬件系統(tǒng)系統(tǒng)軟件(操作系統(tǒng)、編譯程序、診斷程序系統(tǒng)服務軟件等)應用軟件(信息管理軟件、游戲等)CPU控制器運算器輸入設備(鼠標、鍵盤、手寫筆、MIC等)輸出設備(顯示器、繪圖儀、打印機等)存儲器 內存儲器(RAM)外

21、存儲器(軟盤、硬盤、光盤)1.1.3 計算機系統(tǒng)的組成第59頁,共114頁,2022年,5月20日,11點58分,星期五程序的靈魂算法一個程序應包括: 對數據的描述:在程序中要指定數據的類型和數據的組織形式 即數據結構(data structure) 對數據進行操作的描述:即操作步驟,也就是算法(algorithm)第60頁,共114頁,2022年,5月20日,11點58分,星期五Nikiklaus Wirth 提出的公式: 程序=數據結構+算法目前 程序=算法+數據結構 +程序設計方法+語言工具和環(huán)境 第61頁,共114頁,2022年,5月20日,11點58分,星期五算法及其表示算法:解決問

22、題所采取的一系列步驟例,要求用一個給定的半徑計算圓的面積,計算機算法為: 設置半徑值r; 使用公式s=r2; 顯示S的值。第62頁,共114頁,2022年,5月20日,11點58分,星期五算法的特點(1)有輸入 算法可以有零個或多個輸入。輸入是用來在一個算法的執(zhí)行過程中,向它提供處理對象(數據)或控制算法執(zhí)行過程的信息。(2)有輸出 算法必須具有一個或多個執(zhí)行結果的輸出。沒有輸出的算法是一個無效的算法。第63頁,共114頁,2022年,5月20日,11點58分,星期五算法的特點(3)有窮性 任何算法都應該在執(zhí)行有窮步驟之后結束。(4)確定性 算法不能具有二義性。算法中每一步的語義都應該清晰明了

23、,明確指出應該執(zhí)行什么操作,如何執(zhí)行操作。第64頁,共114頁,2022年,5月20日,11點58分,星期五算法的特點(5)高效性 根據算法編寫出來的程序應具有較高的時空效率。 執(zhí)行時間短 不占用過多內存。第65頁,共114頁,2022年,5月20日,11點58分,星期五算法的表示(描述)自然語言表示 易理解和交流,但易產生二義性。偽代碼表示 偽代碼使用介于自然語言和計算機語言之間的文字和符號來描述算法 (用形式化語言描述算法的邏輯過程)第66頁,共114頁,2022年,5月20日,11點58分,星期五算法的表示(描述)程序流程圖 用圖形符號和文字說明來表示數據處理的過程和步驟。N-S流程圖

24、也稱方框圖;適于結構化程序設計的算法描述工具。第67頁,共114頁,2022年,5月20日,11點58分,星期五程序流程圖是描述算法的良好工具。由邏輯框和流向線組成。 邏輯框是表示程序操作功能的圖形符號。 流向線用來指示程序的邏輯處理順序。第68頁,共114頁,2022年,5月20日,11點58分,星期五流程圖的邏輯框起止框 表示程序的開始和結束。處理框 表示一種處理功能或程序段,框內用文字簡述其功能。第69頁,共114頁,2022年,5月20日,11點58分,星期五邏輯框判斷框 表示在此進行判斷以決定程序的流向,框內注明判斷條件。連接框 框內注有字母,當流程圖跨頁時,或者可能出現流向線交叉時

25、,用它來表示彼此之間的關系,相同符號的連接框表示它們是相互連接的。第70頁,共114頁,2022年,5月20日,11點58分,星期五流向線流向線 表示程序處理的邏輯順序。以單向箭頭表示。第71頁,共114頁,2022年,5月20日,11點58分,星期五邏輯框和流向線NY第72頁,共114頁,2022年,5月20日,11點58分,星期五N-S流程圖 1973年美國學者Nassi和Schneiderman提出N-S流程圖(也稱為方框圖),它是一種適于結構化程序設計的算法描述工具。 由于流程圖各步驟之間,一般總是按照從上到下順序執(zhí)行,N-S流程圖中取消了流向線 。第73頁,共114頁,2022年,5

26、月20日,11點58分,星期五二選一結構的表示ABYN滿足不滿足AB第74頁,共114頁,2022年,5月20日,11點58分,星期五算法例子1輸入一個整數,輸出其絕對值:自然語言描述: 1 輸入一個整數; 2 若該數為正數,則其絕對值取該數的值 否則,其絕對值取該數的相反數值; 3 輸出其絕對值。第75頁,共114頁,2022年,5月20日,11點58分,星期五偽碼表示BEGIN READ numb IF numb0 abs=numb ELSE abs=-numb PRINT absEND第76頁,共114頁,2022年,5月20日,11點58分,星期五程序流程圖BEGINREAD numb

27、numb0abs=numbabs=-numbPRINT absENDYN第77頁,共114頁,2022年,5月20日,11點58分,星期五算法例子2從鍵盤讀入10個整數輸出其中正整數的和。第78頁,共114頁,2022年,5月20日,11點58分,星期五BEGIN SET 0sum SET 0count WHILE count 0 then sum + x sum END count + 1count END_WHILE PRINT sumEND算法例子2偽代碼第79頁,共114頁,2022年,5月20日,11點58分,星期五程序流程圖描述算法第80頁,共114頁,2022年,5月20日,11

28、點58分,星期五 N-S流程圖算法第81頁,共114頁,2022年,5月20日,11點58分,星期五編寫程序 算法用C語言進行實現,該過程也稱對算法進行編碼。按照算法的流程順序編寫程序編寫程序還必須進行語句執(zhí)行過程的控制。第82頁,共114頁,2022年,5月20日,11點58分,星期五語言提供的控制結構1順序:定義了語句按順序執(zhí)行的次序。2選擇:提供了根據某個條件的結果在不同的語句中選擇執(zhí)行某一條語句的能力。3循環(huán)(重復):提供根據某個條件的結果重復地執(zhí)行某些語句的能力。4調用:即在需要時運行指定的代碼段。第83頁,共114頁,2022年,5月20日,11點58分,星期五C語言程序的基本結構

29、#include void main( ) 數據定義;(變量說明語句); 數據處理;(執(zhí)行語句);第84頁,共114頁,2022年,5月20日,11點58分,星期五程序說明每個C程序必須有一個主函數main 是函數開始和結束的標志若需要輸入和輸出功能,程序開頭應該為 #include 第85頁,共114頁,2022年,5月20日,11點58分,星期五 #include void main( ) printf (“This is a C program.n”); 程序例1程序的作用是輸出一行信息:This is a C program.第86頁,共114頁,2022年,5月20日,11點58分,

30、星期五程序例2 求絕對值#include void main( ) int numb; /*代表某個整數*/int abs; /*代表該整的絕對值*/ scanf(“%d”,&numb); /*輸入該整數的值*/ /*求絕對值*/ if ( numb0) abs=numb; else abs= -numb; printf (“the abs of numb is %dn”,abs); /*輸出*/第87頁,共114頁,2022年,5月20日,11點58分,星期五注釋/*/表示注釋。注釋是對源程序進行的注解,增加程序的可讀性;對編譯和運行不起作用。第88頁,共114頁,2022年,5月20日,1

31、1點58分,星期五程序例3 求兩個實數之和#include void main( ) float a,b,sum; /*實型數據定義*/ scanf(“%f %f”,&a,&b); sum=a+b; printf(sum is %fn,sum); 第89頁,共114頁,2022年,5月20日,11點58分,星期五程序例4利用海倫公式 計算 邊長分別為3、4、5的三角形的面積第90頁,共114頁,2022年,5月20日,11點58分,星期五#include#include void main( )float a=3.0,b=4.0,c=5.0;float s,area;s=(a+b+c)/2;a

32、rea=sqrt(s*(s-a)*(s-b)*(s-c);printf(“area=%fn”,area); 第91頁,共114頁,2022年,5月20日,11點58分,星期五庫函數C語言(編譯器)提供了許多基本的、常用的功能;分別保存在不同的文件中;以函數形式提供給程序員使用;第92頁,共114頁,2022年,5月20日,11點58分,星期五庫函數分類(1)I/O 功能,需要的包含文件:stdio.h 如: printf,scanf等。 (2)字符(串)處理功能, string.h 如:islower,strcat,strcmp,strlen等。 (3)數學功能,math.h 如:sin,cos,exp,log,sqrt等。第93頁,共114頁,2022年,5月20日,11點58分,星期五庫函數分類(4)時間、日期功能,time.h 如:time()(5) 圖形功能,包括各種繪制點、線、圓、方和填色等的函數,graphics.h6)動態(tài)存儲分配,alloc.h第94頁,共114頁,2022年,5月20日,11點58分,星期五程序例5求2個整數中較大者(通過函數實現) int max(int x, int y) /* x,y :形參 */ int z; if (xy) z=x; else z=y; return (z); 第95頁,共114頁,2022年,5月20日,11點

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論