




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章程序設計和C語言程序和程序語言C語言簡介一個簡單的C程序程序開發過程問題與程序設計主要內容理解什么是程序,什么是程序設計語言通過簡單的實例了解C語言程序的基本情況和相關概念掌握C程序的編譯和運行過程使用VisualC++6.0(CodeBlocks)創建C程序程序設計中遇到的問題重點和難點程序日常生活中的程序:通常指完成某些事務的一種既定活動方式和過程。1.1程序和程序語言1,起床2,刷牙3,洗臉4,吃飯5,早自習銀行帶上存折去銀行
3.將存折和取款單遞給銀行職員
2.填寫取款單并到相應窗口排隊4.銀行職員辦理取款事宜
5.拿到錢并離開銀行
電話邀請C君……回復信函……發送傳真……打電話2.信函_____________________________________________________3.傳真指令被逐條執行程序員老板秘書程序:為了讓計算機執行某些操作或解決某個問題而編寫的一系列有序指令的集合。要執行的一組指令程序計算機中的程序程序設計描述(編制)計算機程序的工作稱為程序設計或編程,其產品是程序。程序設計語言可供人編程用的語言就是程序設計語言,也常被稱為編程語言。程序設計語言的發展機器語言匯編語言高級語言機器語言是機器指令形成的語言;形式為二進制編碼,機器可直接執行;機器語言00000001000000001000 00000001000100001010 00000101000000000001 00000001000100001100 00000100000000000001 00000010000000001110 特點:難寫難讀,使用不方便,程序開發效率極低。數據裝入寄存器0數據裝入寄存器1寄存器0與1的數據乘數據裝入寄存器1寄存器0與1的數據加保存寄存器0里的數據d=a*b+c
匯編語言:采用助記符形式,有利于人閱讀和使用。匯編語言匯編語言的特點:每條指令的意義容易理解;程序粒度太小,細節太多;程序無結構,缺乏組織手段;寫大程序仍然很困難;d=a*b+c
load0aload1bmult01load1cadd01save0d將單元a的數據裝入寄存器0將單元b的數據裝入寄存器1寄存器0與1的數據乘將單元c的數據裝入寄存器1寄存器0與1的數據加將寄存器0里的數據存入單元d計算機無法直接執行匯編語言程序,執行前需要把匯編語言程序翻譯為機器指令程序。最早時通過手工翻譯為機器指令。后來人們開發出稱為“匯編系統”的程序,讓計算機去完成程序翻譯工作。
d=a*b+c;高級語言高級語言的優點:編程工作的效率大大提高;程序更容易理解和閱讀;更容易思考和把握復雜程序的意義;使編程發展成為一種職業和謀生方式。d=a*b+c
高級語言的特點:具有類似文字的表現形式,更接近人們的描述形式,更容易使用。用類似數學的表達式形式描述基本計算。用變量等概念取代低級的存儲概念,使人擺脫各種繁瑣低級的工作,例如存儲的安排。提供高級操作流程控制手段和程序組織手段。高級語言的編譯和執行高級編程語言中的指令哎呀…我理解不了編譯程序/解釋程序可以…我現在可以理解了高級語言由編譯/解釋程序轉換為機器代碼這種機器代碼計算機可以理解計算機硬件高級語言程序
編譯程序/解釋程序(編譯器/解釋器)
機器代碼1954年到1957年:高級語言Fortran誕生;至1960年代中,開發了Algol60,COBOL,BASIC等。還有函數式語言LISP等;1970年代開始:Pascal和C語言逐漸分別為教學科研和軟件開發用的主要語言;1980年代:邏輯程序語言Prolog,面向對象語言Smalltalk和后來的C++,另有ML等;1995年左右的Java;高級語言的簡單歷史(略~)5254565860626466687072747678808284868890929496AdaALGOL60ALGOL68PascalModula-2CPLBCPLBCC++JavaLISPPROLOGCOBOLFORTRAN77FORTRANPL/1Simula67Smalltalk80BASICANSI-BASICQBASICVBFORTRAN90機器語言匯編語言高級語言面向過程面向對象CPU指令系統,由0、1序列構成的指令碼組成如:10000000加
10010000減用助記符號描述的指令系統如ADDA,B面向機器的語言程序設計是數據被加工的過程客觀世界可以分類,對象是類的實例對象是數據和方法的封裝對象間通過發送和接受消息發生聯系程序設計關鍵是定義類,并由類派生對象
C語言的發展史
C語言的特點
C語言的發展和標準化1.2C語言簡介UNIX由BellLab的KenThompson和DennisRitchie最先在1969年開發的O.S.(它的前身是MIT和AE開發的Multies)1970年,V1,V2版在PDP-7機上用匯編語言實現1971年V3PDP11/23;1972年V4PDP11/451972年,DennisRitchie開發出新語言C。1973年,Ritchie和Thompson用C改寫了UNIX核心(90%)即V5ALGOL60語言
CPL語言
1963年,劍橋大學CombinedProgrammingLanguageBCPL語言
1967年,劍橋大學的MatinRichards對CPL語言進行了簡化B語言
C語言
1970年,美國貝爾實驗室的KenThompson將BCPL進行了修改1973年,B語言也給人“煮”了一下,美國貝爾實驗室的DennisRitchie在B語言的基礎上最終設計出了一種新的語言C語言的產生與UNIX操作系統是密不可分的:一、C語言發展史C–DennisRitchie(1972-1973年)
B–KenThompson
(1970年)BCPL–MartinRichards(1967年)
DennisM.Ritchie(丹尼斯·里奇)生于1941年9月9日,哈佛大學數學博士。現在,DennisM.Ritchie擔任朗訊科技公司貝爾實驗室(原AT&T實驗室)下屬的計算機科學研究中心系統軟件研究部的主任一職。/who/dmr/和Unix的設計者KenThompson
接受美國國家技術勛章肯·湯普遜(左)和丹尼斯·里奇(右)
1983年,兩人獲得計算機領域最高獎——圖靈獎。圖靈獎(A.M.TuringAward,又譯“杜林獎”),由美國計算機協會(ACM)于1966年設立,又叫“A.M.圖靈獎”,專門獎勵那些對計算機事業作出重要貢獻的個人。其名稱取自計算機科學的先驅、英國科學家阿蘭·麥席森·圖靈。由于圖靈獎對獲獎條件要求極高,評獎程序又是極嚴,一般每年只獎勵一名計算機科學家,只有極少數年度有兩名合作者或在同一方向作出貢獻的科學家共享此獎。因此它是計算機界最負盛名、最崇高的一個獎項,有“計算機界的諾貝爾獎”之稱。姚期智(AndrewChi-ChihYao),世界著名計算機學家,2000年圖靈獎得主,美國科學院院士,美國科學與藝術學院院士,中國科學院外籍院士,清華大學高等研究中心教授。C語言歷史(續)C語言的發展經歷三個階段:第一階段:78年以前,C稱為UNIXC,即C被看成UNIX的一部分。
成為UNIX的標準開發語言,隨UNIX流行而被廣泛接受。第二階段:78年BrianKernighan和DennisRitchie的《TheCProgrammingLanguage》出版到88年ANSIC(標準C)標準出現。此C又稱為K&RC。
被搬到各種機器的許多操作系統上,逐漸成為一種開發系統程序和復雜軟件的通用語言。第三階段:88年ANSIC標準(89年3月批準)和99年ISOC99。
成為使用最廣泛的系統開發語言。人們用C開發各種程序,從簡單應用到極其復雜的大型軟件。各種計算機都有可用的C語言系統。二、標準化本課程以ANSIC新標準來講解C語言是貝爾實驗室于70年代初研制出來的,后來又被多次改進,并出現了多種版本。80年代初,美國國家標準化協會(ANSI),根據C語言問世以來各種版本對C語言的發展和擴充,制定了ANSIC標準(1989年再次做了修訂)。
后被ISO和各國接受,也采納為中國國家標準(GB/T15272-94)。新標準C99已經通過。C語言比較簡單,入門容易,很快就可以開始編程有豐富的程序機制、數據機制、函數定義機制,能滿足復雜程序的需要。許多常用功能通過庫實現。提供接近硬件的低級操作,廣泛用于開發效率要求高的程序。被用于代替匯編語言開發底層軟件。一般只比匯編程序生成的目標代碼效率低10~20%。提供了預處理命令,支持軟件系統的分塊開發。從而支持大規模復雜軟件開發,三、C語言的特點C語言inta,b;if(表達式)語句;VB語言DimaAsIntegerDimbAsIntegerif(表達式)then語句
EndifC語言缺點算符太多,優先級多,不便記憶。相對來說,C語言類型轉換隨便,安全性較差(如指針)一、最簡單的C程序。/*ThisisthefirstCprogram*/#include<stdio.h>intmain(){
printf(“Goodmorning!\n");return0;}注釋信息預處理命令有返回值無參數、有返回值的主函數主函數名函數開始內部函數名參數回車換行符函數調用函數體語句結束標志函數結束運行結果:
Goodmorning!
在C程序中,注釋由“/*”開始,由“*/”結束,可以實現多行注釋
。在C++程序中也可使用“//”進行單行注釋。例如://注釋信息C語言的預處理命令都是以“#”號開頭。stdio.h是一個頭文件
。#include指令的作用是指示編譯器將該指令所指出的另一個源文件嵌入#include指令所在的程序中,文件應使用雙引號或尖括號括起來。為了程序的易讀性,
C程序中允許插入若干行空行,它不影響程序的功能,同注釋一樣。
main是主函數名,一個C語言程序有且僅有一個main函數。C程序執行時就是從main函數開始,具體講就是從“{”開始,到“}”結束。
printf是C語言的內部函數名,因為它后面跟著(),其功能是將“Goodmorning!\n”顯示在計算機的屏幕上(雙引號和\n不顯示)
C語言規定:語句以分號結束
1.3一個簡單的C程序頭文件作為一種包含功能函數、數據接口聲明的載體文件,用于保存程序的聲明(declaration)。頭文件就像是一本書中的目錄,讀者(用戶程序)通過目錄,可以很方便就查閱其需要的內容(函數庫)。
int
max(intx,inty){
intz;if(x>y)z=x;elsez=y;returnz;}你會分析這個子程序的結構嗎?二、C語言程序格式C語言是“自由格式”語言C語言是自由格式語言,可隨意安排格式(換行/加空格等),格式變化不影響程序意義。程序除了正確、高效之外,還要易讀程序格式的要求有很多,不是硬性規定,因人而宜標識符命名應含有含義鮮明的文字(最好英文而非拼音ceshitest)適當的注解格式應很好體現層次結構,反映內在關系。規則:適當加入空行,分隔不同部分同層對齊,下層退格(加空格/制表符)寫簡單程序時就應注意養成好習慣。附:C語言編碼規范.pdf編譯:編譯程序處理源程序,生成機器語言目標模塊(目標文件)。目標模塊不能執行,缺少必要的C程序運行系統和庫功能。連接:連接程序把目標模塊與運行系統、庫模塊組合起來,構成完整的可執行程序。三、C程序的加工和執行
源程序----用C語言寫出的程序稱為源程序,不能直接執行。將源程序轉換為可執行程序,通常分為編譯和連接兩個步驟C程序的執行C程序的加工給出可執行程序的結果C源程序目標文件可執行程序C語言函數庫編譯連接源程序:是用戶創建的文件,以“.c”為文件擴展名保存
目標文件:是編譯器的輸出結果。這類文件的常見擴展名為“.o”或“.obj”
可執行文件:是連接器的輸出結果。可執行文件的擴展名為“.exe”。
C程序的加工過程集成開發環境(IDE,IntegratedDevelopmentEnvironment)是支持軟件開發過程的軟件系統。IDE把編程所需軟件集成起來統一管理和使用。采用窗口菜單技術,提供編程用編輯環境,通過菜單提供編譯、連接、執行程序等命令。四、集成開發環境
C語言常用的編譯軟件有MicrosoftVisualC++、BorlandC++、BorlandC++Builder、WatcomC++、GNUDJGPPC++、Lccwin32C、MicrosoftC、TurboC、HighC等等。
Windows下集成開發環境(IDE,IntegratedDevelopmentEnvironment
)免費TurboCWinTCDevC++CodeBlocksEclipseCDT付費MicrosoftVisualC++6.0BorlandC++Builder為什么不用TurboC?TurboC(Win-TC)太老了,界面還是DOS界面,庫也是DOS的庫,沒有網絡開發包、沒有Windows界面開發包。TC只能用來學C的基礎,要進行實際開發必須使用先進一點的工具。為什么不用更高版本的VC?我們不使用高版本的VC主要是如下考慮:VC6和高版本的VC沒有本質區別。VC6是1998年的東西,大部分人、公司還是用VC6,市面上的書也都是用VC6;VC6的操作方式和VC2008非常相似,用熟了VC6再學高版本的VC只用半小時而已;高版本的VC體積太大,要五六百兆,而上面給出的VC6只有100MB。1.4程序開發過程分析問題編制程序編譯連接調試運行完成一、C程序的開發過程分析問題編制程序編譯連接調試運行完成編譯中發現錯誤,轉回修改源程序連接中發現錯誤,轉回修改源程序調試運行中發現問題,表明分析本身有錯誤,重新分析問題調試過程中發現程序編寫有錯誤,修改源程序二、程序調試和排錯程序中存在的錯誤靜態錯誤包括編譯錯誤和連接錯誤(例:缺分號,main()等)(書寫形式不符合語言要求)動態運行錯誤程序執行中出現的錯誤違反系統環境基本要求死循環除0類錯誤邏輯錯誤,例排序語言系統查出錯誤時,將產生一些“錯誤信息”行,指明發現位置和錯誤類型,供人參考。注意:應仔細閱讀系統報錯信息,檢查所指位置附近的源程序,找到實際錯誤并予以排除。基本原則:集中精力排除系統發現的第一個錯誤。兩個問題:1)實際錯誤可能出現在指定錯誤位置前面很遠處。2)一個實際錯誤有時會導致許多出錯信息行。應注意警告信息(WARNING)。警告常表示隱藏較深的錯誤,必須認真弄清原因。調試程序(Debug)調試(Debug):定位并解決問題(2000萬美元的bug)調試方法:簡單:使用打印語句(printf);高級:使用編程環境所帶的調試工具;調試方式:設置/刪除斷點(togglebreakpoint,Insert/RemoveBreakpoint)斷點是調試器設置的一個代碼位置。當程序運行到斷點時,程序中斷執行,回到調試器。查看變量(Watch)單步執行(StepInto)執行到光標處(RuntoCursor)1.5問題與程序設計用計算機解決問題的步驟分析問題,設計一種解決問題方案;用某種程序語言嚴格描述這一解決方案;在計算機上試用程序,看它能否解決問題。分析問題的能力,特別是從計算和程序的角度。掌握所用語言,熟悉語言的各種規定,形式和意義。學會寫程序。解決同樣問題,寫的程序是否較簡單?是否采用了合適的結構?是否清楚、易于閱讀和理解?一些條件改變時,程序是否容易修改,以滿足新要求?等等。檢查程序錯誤的能力。確認實際錯誤,弄清楚應當如何改正,這永遠是編程序的人的事。熟悉所使用的工具和環境。本課程學習中應注意的問題演示演示:使用VisualC++6.0編輯和運行程序的過程VisualC++6.0是目前國內比較流行的一種C++語言源程序的編譯系統,使用該系統也可以編輯和運行C語言的源程序。使用MicrosoftVisualC++可以創建控制臺應用程序也可以創建Windows應用程序。用
VisualC++創建的C程序被存儲為一個獨立工程。1、編輯方法一:先創建C源程序方法二:先創建空工程2、編譯和鏈接組建|編譯C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國無車承運人行業市場發展現狀及市場格局與投資報告
- 2025至2030中國文檔存儲和管理服務行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國數據擦除解決方案行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國攝像機模塊絕緣粘合劑行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國排水單元行業市場現狀分析及競爭格局與投資發展報告
- 2025至2030中國掛燙機行業市場發展現狀及競爭格局與投資發展報告
- 2025至2030中國打磨墊行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國房車保險行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國應急救援食品行業發展趨勢分析與未來投資戰略咨詢研究報告
- 農村電商合作發展協議書
- 《農藥經營許可培訓班》考試試卷
- 安徽省技能人才評價考評員考試題庫
- DB32∕T 4170-2021 城市軌道交通車輛基地上蓋綜合利用防火設計標準
- 網絡域名及域名解析PPT課件
- 《湖北省中小學生命安全教育課程標準》
- (完整)初中物理電學中常見的列方程計算歸類
- 浙江省2016年10月物理學業水平考試試題
- 蘇州大學物理化學真題
- 裝飾裝修自評報告
- 內科常見病、多發病的急診處理、診療規范及轉診要求
- 高級會計師考試試題及答案解析
評論
0/150
提交評論