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