C程序設計語言課件_第1頁
C程序設計語言課件_第2頁
C程序設計語言課件_第3頁
C程序設計語言課件_第4頁
C程序設計語言課件_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章C語言概述11/10/20221C程序設計第一章C語言概述11/9/20221C程序內(nèi)容

計算機語言

C語言簡介C語言發(fā)展歷史C語言特點

計算機程序

C語言程序C語言程序的基本結(jié)構(gòu)C語言的語句C語言的字符集和標識符

算法與算法的表示算法算法的表示

結(jié)構(gòu)化程序設計方法11/10/2022C程序設計內(nèi)容11/9/2022C程序設計計算機語言定義

為計算機用戶設計的用于編制程序的語言工具稱為計算機語言分類機器語言匯編語言高級語言11/10/2022C程序設計計算機語言11/9/2022C程序設計計算機語言:機器語言定義具有固定格式、能完成一系列操作的特定二進制編碼。

特點

難于掌握、容易出錯,冗長繁瑣11/10/2022C程序設計計算機語言:機器語言11/9/2022C程序設計算機語言:匯編語言定義用助記符代替指令的操作碼、用數(shù)字或符號代替指令中的操作數(shù)或操作數(shù)存放位置的程序設計語言。例如:用ADD代替加法指令的二進制代碼;用SUB代替減法指令的二進制代碼;特點

易于記憶、便于掌握;用匯編語言編寫的程序需要通過計算機編譯程序編譯,才能被計算機執(zhí)行,因而執(zhí)行效率不如機器語言程序高。11/10/2022C程序設計計算機語言:匯編語言11/9/2022C程序設計算機語言:高級語言定義機器語言或匯編語言是面向機器的語言,用它們編寫程序都離不開具體的計算機指令系統(tǒng)。高級語言則是面向過程的語言,它獨立于機器。在高級語言里,操作碼與地址都以符號代碼或文字形式出現(xiàn)。特點

易于記憶、便于理解和掌握,編寫效率高;用高級語言編寫的程序需要通過編譯或解釋,才能被計算機執(zhí)行,因而執(zhí)行效率不如機器語言程序高。11/10/2022C程序設計計算機語言:高級語言11/9/2022C程序設計算機語言:高級語言種類BASIC,PASCAL,F(xiàn)ORTRAN,COBOL,C,LISP,PROLOG高級語言程序的執(zhí)行方式編譯執(zhí)行:將源程序先轉(zhuǎn)換成機器語言的目標程序,再將各個目標程序連接成可執(zhí)行程序。解釋執(zhí)行:用語言的解釋程序?qū)υ闯绦蜻M行解釋,同時執(zhí)行。執(zhí)行過程中不保存解釋后的機器代碼,下次運行程序需要重新解釋。

11/10/2022C程序設計計算機語言:高級語言11/9/2022C程序設C語言簡介:C語言發(fā)展歷史語言名稱誕生年代

制定者

ALGOL601960PeterNaur等13人來自7個不同的國家CPL1963劍橋大學

BCPL1967M.RichardsB語言

1970-1971K.ThompsonC語言

1972-1973D.M.Ritchie可移植C語言

1977標準C語言

1978B.W.Kernighan,D.M.RitchieANSIC語言

1983AmericanNationalStandardInstitute87ANSIC1987AmericanNationalStandardInstituteISOC語言

1990InternationalStandardOrgannization11/10/2022C程序設計C語言簡介:C語言發(fā)展歷史語言名稱誕生年代制定者ALGOC語言簡介:C語言發(fā)展歷史語言名稱特點

ALGOL60面向問題,離硬件遠,不適合編寫系統(tǒng)軟件

CPL比ALGOL60離硬件近,但規(guī)模大,難實現(xiàn)

BCPL對CPL的簡化---BasicCombinedProgrammingLanguageB語言

更簡化的BCPL,可編寫系統(tǒng)軟件(UNIX),但過于簡單,功能有限C語言

保持了B和BCPL語言的特點,克服了不足,編寫了UNIX第5,6版

可移植C語言

簡化了移植C的工作,

標準C語言

以UNIX第七版的編譯程序為基礎,TheCProgrammingLanguage

ANSIC語言

考慮了C語言問世以來的發(fā)展情況,比標準C有很大發(fā)展

87ANSICK&G重新寫了書TheCProgrammingLanguage,提出了新標準

ISOC語言

以87ANSIC為標準和基礎,誕生了許多C語言系統(tǒng):Microsoftc、TurboC、QuickC、BorlandC、VisualC、VisualC++11/10/2022C程序設計C語言簡介:C語言發(fā)展歷史語言名稱特點ALGOL60面C語言簡介:典型的C語言版本目前比較流行的C語言版本MicrosoftC、VisualC、VisualC++(Microsoft);TurboC、BorlandC、BorlandC++(Borland);這些C語言分DOS版本、WINDOWS版本;有面向過程的、也有面向?qū)ο蟮?。本課程以TurboC3.0,Visualc++6.0為編程實踐的上機環(huán)境。11/10/2022C程序設計C語言簡介:典型的C語言版本11/9/2022C程序C語言簡介:

C語言特點1.語言簡潔、緊湊、使用方便、靈活32個關鍵字,9種控制語句,書寫自由,接近自然語言

2.運算符豐富有34種運算符,使用很靈活,可以構(gòu)造多樣表達式

3.數(shù)據(jù)類型齊全標準的和用戶定義的數(shù)據(jù)類型能滿足各種編程需要

4.結(jié)構(gòu)化語言便于編寫結(jié)構(gòu)化的程序

11/10/2022C程序設計C語言簡介:C語言特點11/9/2022C程序C語言簡介:

C語言特點5.程序執(zhí)行效率高,可移植性好

比匯編程序執(zhí)行效率低10~20%,基本不需修改即可以移植到其他機器系統(tǒng)

6.比其他高級語言更接近機器語言

C語言是高級語言中的低級語言,能實現(xiàn)匯編語言的大部分功能,可以直接訪問物理硬件

7.語法不太規(guī)范,自由度大,查錯難度大從這個意義上講,不是“很好”的教學語言11/10/2022C程序設計C語言簡介:C語言特點11/9/2022C程序計算機程序程序種類源程序目標程序可執(zhí)行程序解釋程序編譯程序程序執(zhí)行過程

CPU從內(nèi)存中讀出一條指令,通過運算器和控制器執(zhí)行相應的操作,再讀下一條指令,執(zhí)行相應的操作,重復該過程,直至程序的最后一條指令。11/10/2022C程序設計計算機程序11/9/2022C程序設計C語言程序源程序目標程序可執(zhí)行程序編譯程序11/10/2022C程序設計C語言程序11/9/2022C程序設計C語言程序的基本結(jié)構(gòu)

C語言程序示例[例1]

僅由一個main()函數(shù)構(gòu)成的C語言程序。#include<stdio.h>voidmain()

{printf(“Hi,itisme---asimpleCprogram!\n”);

}主函數(shù)語句:輸出語句預處理命令11/10/2022C程序設計C語言程序的基本結(jié)構(gòu)C語言程序示例主函數(shù)語句:輸出語句預C語言程序的基本結(jié)構(gòu)[例2]#include<stdio.h>floatmax(floatx,floaty);voidmain(){floata,b,c;

/*輸入3個實數(shù)*/scanf(“%f%f%f”,&a,&b,&c);

/*打印最大者*/printf(“Thebiggestis%f”,max(max(a,b),c));}floatmax(floatx,floaty){if(x>y)return(x);elsereturn(y);}輸入語句函數(shù)注釋聲明語句if語句11/10/2022C程序設計C語言程序的基本結(jié)構(gòu)[例2]#include<stdio.hC語言程序的基本結(jié)構(gòu)C語言程序是函數(shù)的組合體特殊的主函數(shù)——main()函數(shù)C語言程序必須有且只能有一個名稱是main的函數(shù),稱為主函數(shù)。主函數(shù)是整個程序的組織者,它直接或間接協(xié)調(diào)組織其它函數(shù)按照一定的順序工作,完成整體任務;C語言遵循“先定義后使用”的原則一般,要使用一個符號,應當在使用前定義它;若主函數(shù)在其它函數(shù)之前出現(xiàn),要對后面的函數(shù)進行聲明;C語言程序從main函數(shù)開始執(zhí)行11/10/2022C程序設計C語言程序的基本結(jié)構(gòu)11/9/2022C程序設C語言程序的基本結(jié)構(gòu)從設計C語言源程序到可以執(zhí)行的程序,通常要經(jīng)過以下幾步:編輯編譯連接執(zhí)行11/10/2022C程序設計C語言程序的基本結(jié)構(gòu)編編連執(zhí)11/9/2022C程序C語言的函數(shù)直觀描述

函數(shù)好比一個加工處理器,可以接收需要處理的數(shù)據(jù),也可以輸出要求的處理結(jié)果,其形象圖如下:輸入:參數(shù)函數(shù)輸出:函數(shù)類型11/10/2022C程序設計C語言的函數(shù)輸入:參數(shù)函數(shù)輸出:函數(shù)類型11/9/2022C語言的函數(shù)函數(shù)的一般格式

函數(shù)類型函數(shù)名稱(函數(shù)參數(shù)){函數(shù)體:由聲明、語句以及注釋組成;}11/10/2022C程序設計C語言的函數(shù)函數(shù)類型函數(shù)名稱(函數(shù)參數(shù))11/9/C語言的函數(shù)函數(shù)的例子

voidmain()

{printf(“asimpleCprogram!\n”);

}floatmax(floatx,floaty){if(x>y)return(x);elsereturn(y);}11/10/2022C程序設計C語言的函數(shù)voidmain()floatmax(flC語言的函數(shù)函數(shù)由語句構(gòu)成每條語句須以分號“;”結(jié)束一行可以包含一條語句或多條語句;或多行一條語句(\)注釋有兩種形式

/**/:用于一段注釋;可出現(xiàn)在引號外、空格可出現(xiàn)的任何位置;//:用于一行注釋;注釋不是程序的必要部分,其存在與否不影響程序的編譯和執(zhí)行。但注釋可增強程序的可讀性。C語言絕大部分功能通過函數(shù)實現(xiàn)C語言一般都提供了常見功能的函數(shù);使用這些函數(shù),要在main函數(shù)前面包含聲明這些函數(shù)的頭文件;比如#include<stdio.h>就是聲明scanf、printf等函數(shù)的頭文件。11/10/2022C程序設計C語言的函數(shù)11/9/2022C程序設計C語言的語句按形式分類控制語句(1)選擇結(jié)構(gòu)控制語句:if-else,switch(2)循環(huán)結(jié)構(gòu)控制語句:do-while,for,while(3)其它控制語句:

goto,return,break,continue

表達式語句表達式語句由表達式后加一個分號構(gòu)成;表達式語句的特例是函數(shù)調(diào)用語句.例如:scanf(“%f%f%f”,&a,&b,&c);printf(“%f”,max(max(a,b),c));11/10/2022C程序設計C語言的語句11/9/2022C程序設計C語言的語句按語句數(shù)目分類簡單語句:單條語句;只由一個分號構(gòu)成的語句稱為空語句。復合語句:由大括號括起來的一組簡單語句構(gòu)成的語句組。

注意:(1)復合語句在地位上與單條語句相同,但復合語句最后沒有分號;(2)復合語句可以嵌套,即復合語句中可出現(xiàn)復合語句;voidmain(){inta,b,c;

{a=1;b=3;c=3;}printf(“%d”,a+b+c);}11/10/2022C程序設計C語言的語句voidmain()11/9/2022C程C的字符集和標識符C語言的標識符和運算符是組成C語句的基本單位。C語言的字符集是構(gòu)成標識符和運算符的基本單位。11/10/2022C程序設計C的字符集和標識符11/9/2022C程序設C的字符集

C語言的字符集C語言字符集是ASCII碼字符集合的子集合,主要包括:(1)26個英文字母(區(qū)分大小寫)(2)10個數(shù)字(0~9)(3)下劃線以及專用符號(+-*/%~<等)。

關于ASCII碼字符集基本知識:(1)26個英文大寫字母連續(xù)排列;(2)26個英文小寫字母連續(xù)排列;(3)10個數(shù)字(0~9)連續(xù)排列;(4)每個字符有唯一一個序號相對應;

11/10/2022C程序設計C的字符集11/9/2022C程序設計C的標識符

標識符由C語言字符組成

C語言標識符構(gòu)建規(guī)則:

注意:(1)C語言的標識符區(qū)分大、小寫字母;(2)標識符的長度依編譯系統(tǒng)的不同而不同。由字母或下劃線開頭,字母、數(shù)字和下劃線的組合11/10/2022C程序設計C的標識符由字母或下劃線開頭,11/9/2022C程C的標識符[例]標識符舉例合法的標識符:

a,A,A10,A_2,store,price,Student_no,is_zero,_pdf不合法的標識符:

2,2a,a-2,a+2,*3a,“this”11/10/2022C程序設計C的標識符11/9/2022C程序設計C的標識符:關鍵字(保留字)

關鍵字(保留字)是C語言專用的標識符,用戶不能賦予新的含義而用作自己的標識符(共有32個):Auto break case charconstcontinue default do doubleelseenum extern float for gotoif int long registerreturnShort signed sizeof staticstructswitch typedef union unsignedvoidvolatile while11/10/2022C程序設計C的標識符:關鍵字(保留字)11/9/2022C程C的標識符:預定義標識符

預定義標識符是賦予指定含義的標識符,這些含義通常符合習慣用法。例如:sin,tan,log等都與數(shù)學中的含義相同;fclose,fopen用于文件的關閉、打開。這些預定義標識符的數(shù)量隨系統(tǒng)的不同而不同。預定義標識符與關鍵字不同,用戶可以賦予新的含義,但不提倡這樣做。11/10/2022C程序設計C的標識符:預定義標識符11/9/2022C程序C的標識符:用戶定義標識符

用戶安照自己的意愿和需要定義的標識符用戶定義標識符的基本原則[例]判別下面的字符序列是否是合法的標識符:p2p,,,sin,Int,INT,sin,a[2],a*b(1)符合標識符號的組成規(guī)則;(2)絕對避免和關鍵字重名;(3)盡量避免和預定義標識符重名;11/10/2022C程序設計C的標識符:用戶定義標識符(1)符合標識符號的組成規(guī)則;1C的標識符[例3]標識符sin,cos被重命名,程序正確;若把它們改為int,for,編譯時會出錯。#include<stdio.h>#include<math.h>doublesin(doublex){return2*x;}voidmain(){floatcos=2;printf("%.2f",sin(1));}11/10/2022C程序設計C的標識符[例3]標識符sin,cos被重命名,程序正確;若算法與算法的表示編寫程序時,必須明確如下3個方面:1.已知的要處理的數(shù)據(jù)對象——數(shù)據(jù)結(jié)構(gòu)2.要求得到的結(jié)果及形式3.從已知出發(fā)求得結(jié)果所采取的方法和步驟——算法數(shù)據(jù)結(jié)構(gòu)和算法根據(jù)結(jié)果和形式確定,所得結(jié)果和形式是數(shù)據(jù)結(jié)構(gòu)和算法的必然產(chǎn)物。計算機程序是數(shù)據(jù)結(jié)構(gòu)之上的算法,即:程序=數(shù)據(jù)結(jié)構(gòu)+算法計算機算法可以分為兩大類:

數(shù)值算法和非數(shù)值算法。

11/10/2022C程序設計算法與算法的表示11/9/2022C程序設計算法的例子[例4]任意給定正整數(shù)n,求數(shù)列1,-1/2,1/3,-1/4,…前n項的和。分析:處理對象正負項交替出現(xiàn),后一項的分母比前一項的分母大1的數(shù)列;求前n項的和。算法:令sum代表要求的和,且sum初始值為0;則sum是逐項求出數(shù)列的每一項后,加到sum上的結(jié)果。令item代表第k項,則當k為奇數(shù)時,item為正,否則為負。讓k從1開始按1遞增,當k變到n的時候,sum就是所求的結(jié)果。據(jù)此可以設計如下算法:11/10/2022C程序設計算法的例子[例4]任意給定正整數(shù)n,求數(shù)列1,-1/2算法的例子

(1)讀入整數(shù)n(2)sum=0(3)k=1(4)若k為奇數(shù),item=1/k;否則item=-1/k(5)sum=sum+item(6)k遞增1:k=k+1(7)如果k不大于n,則繼續(xù)(4)~(6);否則結(jié)束,輸出結(jié)果

11/10/2022C程序設計算法的例子11/9/2022C程序設計算法的特點1.有窮性:算法應當在有限步之后結(jié)束2.確定性:算法的每一步都應當是清晰明確的3.有效性:算法應能有效運行并給出預期結(jié)果4.有輸出:算法應當有一個或多個輸出。

11/10/2022C程序設計算法的特點11/9/2022C程序設計算法的表示自然語言表示法

用自然語言把算法表達、敘述出來。此方法因自然語言含義的不準確而不準確,因此不能在計算機上實現(xiàn)。

計算機語言表示法

用語言嚴格按照其語法寫出算法對應的程序,這是我們編程的目標。但一下子直接寫出算法的計算機語言程序往往比較困難,需要有個過渡。下面的幾種方法可以理解為從自然語言到計算機語言的過渡表示方法

11/10/2022C程序設計算法的表示11/9/2022C程序設計算法的表示流程圖表示法流程圖是一種用圖形直觀表示算法操作的算法表示方法。常用的圖形是由美國國家標準化協(xié)會(ANSI)制定并得到公認的。主要有以下幾種:

起止框輸入輸出框處理框判斷框流程線11/10/2022C程序設計算法的表示起止框輸入輸出框處理框判斷框流程線11/9/20算法的表示上面例子的流程圖YNYN開始讀入nsum=0k=1item=1/kk是奇數(shù)item=-1/ksum=sum+itemk=k+1k>n?結(jié)束11/10/2022C程序設計算法的表示YNYN開始讀入nsum=0item=1/kk是算法的表示采用基本結(jié)構(gòu)的改進流程圖

在流程圖表示方法中,流程線的使用沒有任何限制,從而會導致流程走向的任意性,降低可讀性。

1966年Bohra和Jacopini提出了以下5種改進的基本結(jié)構(gòu):(1)順序結(jié)構(gòu)

(2)雙分支選擇結(jié)構(gòu)

(3)單分支選擇結(jié)構(gòu)

(4)當型循環(huán)結(jié)構(gòu)

(5)直到型循環(huán)結(jié)構(gòu)

11/10/2022C程序設計算法的表示11/9/2022C程序設計算法的表示5種改進的基本結(jié)構(gòu)的結(jié)構(gòu)圖AB順序結(jié)構(gòu)ABp雙分支選擇結(jié)構(gòu)pA單分支選擇結(jié)構(gòu)NYpA當型循環(huán)結(jié)構(gòu)YNAp直到型循環(huán)結(jié)構(gòu)11/10/2022C程序設計算法的表示AB順序結(jié)構(gòu)ABp雙分支選擇結(jié)構(gòu)pA單分支選擇結(jié)算法的表示5種基本結(jié)構(gòu)的特點:(1)只有一個入口和一個出口(2)

結(jié)構(gòu)內(nèi)每個部分都能得到執(zhí)行且沒有死循環(huán)重要結(jié)論:(1)由5種基本結(jié)構(gòu)順序組成的算法結(jié)構(gòu),可以解決任何復雜的問題。(2)由5種基本結(jié)構(gòu)順序組成的算法稱為結(jié)構(gòu)化的算法

11/10/2022C程序設計算法的表示11/9/2022C程序設計算法的表示N-S流程圖表示法

沒有流程線的結(jié)構(gòu)化流程圖稱為N-S流程圖。上面5種基本結(jié)構(gòu)對應的N-S基本結(jié)構(gòu)圖為:順序結(jié)構(gòu)選擇結(jié)構(gòu)當型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)N-S流程圖表示的算法顯然是結(jié)構(gòu)化算法

當P成立AB

直到P成立AAB

PNYAB11/10/2022C程序設計算法的表示N-S流程圖表示法當P成立AB直算法的表示

k是奇數(shù)NYitem=-1/k

item=1/ksum=sum+itemk=k+1

讀入nSum=0K=1直到k>n例4的N-S流程圖為11/10/2022C程序設計算法的表示k是奇數(shù)NYite算法的表示[例5]判斷素數(shù)的N-S流程圖11/10/2022C程序設計算法的表示[例5]判斷素數(shù)的N-S流程圖11/9/2022C算法的表示偽代碼表示法

流程圖的優(yōu)點是直觀準確,但突出的缺點是難以繪畫,且不便于修改。偽代碼表示法克服了這些缺點。偽代碼表示法是介于自然語言表示法和計算機語言表示法之間的一種表示方法。它的寫法如同寫文章,自上而下,方便自如。例4的偽代碼表示法如下

11/10/2022C程序設計算法的表示11/9/2022C程序設計算法的表示開始讀入整數(shù)n置sum的初值為0置k的初值為1執(zhí)行下面的操作:

如果k為奇數(shù),置item=1/k

如果k為偶數(shù),置item=-1/ksum=sum+item直到k>n打印sum的值結(jié)束Begininputnsum=0k=1doifk為奇數(shù),item=1/kelseitem=-1/ksum=sum+itemuntilk>nprintsumEnd11/10/2022C程序設計算法的表示開始Begin11/9/2022C程序算法的表示小結(jié)表示法小結(jié)(1)流程圖表示和N-S流程圖表示應當熟練掌握一種,后面我們會用到;(2)偽代碼表示法也應當熟悉,因為使用起來很方便,而且在許多其他場合也用到;(3)精練的算法對應的算法表示也簡單;而算法的好壞取決于所掌握的數(shù)學知識和基礎,因此要注重數(shù)學知識的學習。11/10/2022C程序設計算法的表示小結(jié)11/9/2022C程序設計程序設計方法采用結(jié)構(gòu)化算法寫成的計算機程序是結(jié)構(gòu)化程序。編寫結(jié)構(gòu)化程序,經(jīng)常采用的是結(jié)構(gòu)化程序設計方法,這種方法的基本思路是:這樣一種程序設計方法就是結(jié)構(gòu)化程序設計方法。結(jié)構(gòu)化的編程思想的體現(xiàn)離不開另一種基本結(jié)構(gòu)——函數(shù),后面會介紹。

把給定的問題按層次(縱方向)、分階段(橫方向)分解為一系列易于編程解決的小問題,然后對應著這些分解的小問題,設計結(jié)構(gòu)化的算法,最后采用語言將算法描述出來。11/10/2022C程序設計程序設計方法把給定的問題按層次(縱方向)、分階段(橫方向)程序設計小結(jié)

學習編寫程序,就如同學習寫文章。寫文章,要先后學字、詞組、句子、段落、語法等。編寫程序要先后學字符集、標識符、語句、函數(shù)、語法,并循序漸進。下面是程序和文章的類比:

文章段落句子詞字程序函數(shù)語句標識符字符集11/10/2022C程序設計程序設計小結(jié)文章段落句子詞字程序函數(shù)語句標識符字符集習題1、C語言的特點。2、C語言程序的結(jié)構(gòu)。3、C語言的標識符及組成方法。4、算法的常用表示方法。5、結(jié)構(gòu)化程序設計方法。6、從設計算法到可執(zhí)行程序,要經(jīng)過哪幾步工作。7、P36習題2.4.11/10/2022C程序設計習題11/9/2022C程序設計第一章C語言概述11/10/202252C程序設計第一章C語言概述11/9/20221C程序內(nèi)容

計算機語言

C語言簡介C語言發(fā)展歷史C語言特點

計算機程序

C語言程序C語言程序的基本結(jié)構(gòu)C語言的語句C語言的字符集和標識符

算法與算法的表示算法算法的表示

結(jié)構(gòu)化程序設計方法11/10/2022C程序設計內(nèi)容11/9/2022C程序設計計算機語言定義

為計算機用戶設計的用于編制程序的語言工具稱為計算機語言分類機器語言匯編語言高級語言11/10/2022C程序設計計算機語言11/9/2022C程序設計計算機語言:機器語言定義具有固定格式、能完成一系列操作的特定二進制編碼。

特點

難于掌握、容易出錯,冗長繁瑣11/10/2022C程序設計計算機語言:機器語言11/9/2022C程序設計算機語言:匯編語言定義用助記符代替指令的操作碼、用數(shù)字或符號代替指令中的操作數(shù)或操作數(shù)存放位置的程序設計語言。例如:用ADD代替加法指令的二進制代碼;用SUB代替減法指令的二進制代碼;特點

易于記憶、便于掌握;用匯編語言編寫的程序需要通過計算機編譯程序編譯,才能被計算機執(zhí)行,因而執(zhí)行效率不如機器語言程序高。11/10/2022C程序設計計算機語言:匯編語言11/9/2022C程序設計算機語言:高級語言定義機器語言或匯編語言是面向機器的語言,用它們編寫程序都離不開具體的計算機指令系統(tǒng)。高級語言則是面向過程的語言,它獨立于機器。在高級語言里,操作碼與地址都以符號代碼或文字形式出現(xiàn)。特點

易于記憶、便于理解和掌握,編寫效率高;用高級語言編寫的程序需要通過編譯或解釋,才能被計算機執(zhí)行,因而執(zhí)行效率不如機器語言程序高。11/10/2022C程序設計計算機語言:高級語言11/9/2022C程序設計算機語言:高級語言種類BASIC,PASCAL,F(xiàn)ORTRAN,COBOL,C,LISP,PROLOG高級語言程序的執(zhí)行方式編譯執(zhí)行:將源程序先轉(zhuǎn)換成機器語言的目標程序,再將各個目標程序連接成可執(zhí)行程序。解釋執(zhí)行:用語言的解釋程序?qū)υ闯绦蜻M行解釋,同時執(zhí)行。執(zhí)行過程中不保存解釋后的機器代碼,下次運行程序需要重新解釋。

11/10/2022C程序設計計算機語言:高級語言11/9/2022C程序設C語言簡介:C語言發(fā)展歷史語言名稱誕生年代

制定者

ALGOL601960PeterNaur等13人來自7個不同的國家CPL1963劍橋大學

BCPL1967M.RichardsB語言

1970-1971K.ThompsonC語言

1972-1973D.M.Ritchie可移植C語言

1977標準C語言

1978B.W.Kernighan,D.M.RitchieANSIC語言

1983AmericanNationalStandardInstitute87ANSIC1987AmericanNationalStandardInstituteISOC語言

1990InternationalStandardOrgannization11/10/2022C程序設計C語言簡介:C語言發(fā)展歷史語言名稱誕生年代制定者ALGOC語言簡介:C語言發(fā)展歷史語言名稱特點

ALGOL60面向問題,離硬件遠,不適合編寫系統(tǒng)軟件

CPL比ALGOL60離硬件近,但規(guī)模大,難實現(xiàn)

BCPL對CPL的簡化---BasicCombinedProgrammingLanguageB語言

更簡化的BCPL,可編寫系統(tǒng)軟件(UNIX),但過于簡單,功能有限C語言

保持了B和BCPL語言的特點,克服了不足,編寫了UNIX第5,6版

可移植C語言

簡化了移植C的工作,

標準C語言

以UNIX第七版的編譯程序為基礎,TheCProgrammingLanguage

ANSIC語言

考慮了C語言問世以來的發(fā)展情況,比標準C有很大發(fā)展

87ANSICK&G重新寫了書TheCProgrammingLanguage,提出了新標準

ISOC語言

以87ANSIC為標準和基礎,誕生了許多C語言系統(tǒng):Microsoftc、TurboC、QuickC、BorlandC、VisualC、VisualC++11/10/2022C程序設計C語言簡介:C語言發(fā)展歷史語言名稱特點ALGOL60面C語言簡介:典型的C語言版本目前比較流行的C語言版本MicrosoftC、VisualC、VisualC++(Microsoft);TurboC、BorlandC、BorlandC++(Borland);這些C語言分DOS版本、WINDOWS版本;有面向過程的、也有面向?qū)ο蟮?。本課程以TurboC3.0,Visualc++6.0為編程實踐的上機環(huán)境。11/10/2022C程序設計C語言簡介:典型的C語言版本11/9/2022C程序C語言簡介:

C語言特點1.語言簡潔、緊湊、使用方便、靈活32個關鍵字,9種控制語句,書寫自由,接近自然語言

2.運算符豐富有34種運算符,使用很靈活,可以構(gòu)造多樣表達式

3.數(shù)據(jù)類型齊全標準的和用戶定義的數(shù)據(jù)類型能滿足各種編程需要

4.結(jié)構(gòu)化語言便于編寫結(jié)構(gòu)化的程序

11/10/2022C程序設計C語言簡介:C語言特點11/9/2022C程序C語言簡介:

C語言特點5.程序執(zhí)行效率高,可移植性好

比匯編程序執(zhí)行效率低10~20%,基本不需修改即可以移植到其他機器系統(tǒng)

6.比其他高級語言更接近機器語言

C語言是高級語言中的低級語言,能實現(xiàn)匯編語言的大部分功能,可以直接訪問物理硬件

7.語法不太規(guī)范,自由度大,查錯難度大從這個意義上講,不是“很好”的教學語言11/10/2022C程序設計C語言簡介:C語言特點11/9/2022C程序計算機程序程序種類源程序目標程序可執(zhí)行程序解釋程序編譯程序程序執(zhí)行過程

CPU從內(nèi)存中讀出一條指令,通過運算器和控制器執(zhí)行相應的操作,再讀下一條指令,執(zhí)行相應的操作,重復該過程,直至程序的最后一條指令。11/10/2022C程序設計計算機程序11/9/2022C程序設計C語言程序源程序目標程序可執(zhí)行程序編譯程序11/10/2022C程序設計C語言程序11/9/2022C程序設計C語言程序的基本結(jié)構(gòu)

C語言程序示例[例1]

僅由一個main()函數(shù)構(gòu)成的C語言程序。#include<stdio.h>voidmain()

{printf(“Hi,itisme---asimpleCprogram!\n”);

}主函數(shù)語句:輸出語句預處理命令11/10/2022C程序設計C語言程序的基本結(jié)構(gòu)C語言程序示例主函數(shù)語句:輸出語句預C語言程序的基本結(jié)構(gòu)[例2]#include<stdio.h>floatmax(floatx,floaty);voidmain(){floata,b,c;

/*輸入3個實數(shù)*/scanf(“%f%f%f”,&a,&b,&c);

/*打印最大者*/printf(“Thebiggestis%f”,max(max(a,b),c));}floatmax(floatx,floaty){if(x>y)return(x);elsereturn(y);}輸入語句函數(shù)注釋聲明語句if語句11/10/2022C程序設計C語言程序的基本結(jié)構(gòu)[例2]#include<stdio.hC語言程序的基本結(jié)構(gòu)C語言程序是函數(shù)的組合體特殊的主函數(shù)——main()函數(shù)C語言程序必須有且只能有一個名稱是main的函數(shù),稱為主函數(shù)。主函數(shù)是整個程序的組織者,它直接或間接協(xié)調(diào)組織其它函數(shù)按照一定的順序工作,完成整體任務;C語言遵循“先定義后使用”的原則一般,要使用一個符號,應當在使用前定義它;若主函數(shù)在其它函數(shù)之前出現(xiàn),要對后面的函數(shù)進行聲明;C語言程序從main函數(shù)開始執(zhí)行11/10/2022C程序設計C語言程序的基本結(jié)構(gòu)11/9/2022C程序設C語言程序的基本結(jié)構(gòu)從設計C語言源程序到可以執(zhí)行的程序,通常要經(jīng)過以下幾步:編輯編譯連接執(zhí)行11/10/2022C程序設計C語言程序的基本結(jié)構(gòu)編編連執(zhí)11/9/2022C程序C語言的函數(shù)直觀描述

函數(shù)好比一個加工處理器,可以接收需要處理的數(shù)據(jù),也可以輸出要求的處理結(jié)果,其形象圖如下:輸入:參數(shù)函數(shù)輸出:函數(shù)類型11/10/2022C程序設計C語言的函數(shù)輸入:參數(shù)函數(shù)輸出:函數(shù)類型11/9/2022C語言的函數(shù)函數(shù)的一般格式

函數(shù)類型函數(shù)名稱(函數(shù)參數(shù)){函數(shù)體:由聲明、語句以及注釋組成;}11/10/2022C程序設計C語言的函數(shù)函數(shù)類型函數(shù)名稱(函數(shù)參數(shù))11/9/C語言的函數(shù)函數(shù)的例子

voidmain()

{printf(“asimpleCprogram!\n”);

}floatmax(floatx,floaty){if(x>y)return(x);elsereturn(y);}11/10/2022C程序設計C語言的函數(shù)voidmain()floatmax(flC語言的函數(shù)函數(shù)由語句構(gòu)成每條語句須以分號“;”結(jié)束一行可以包含一條語句或多條語句;或多行一條語句(\)注釋有兩種形式

/**/:用于一段注釋;可出現(xiàn)在引號外、空格可出現(xiàn)的任何位置;//:用于一行注釋;注釋不是程序的必要部分,其存在與否不影響程序的編譯和執(zhí)行。但注釋可增強程序的可讀性。C語言絕大部分功能通過函數(shù)實現(xiàn)C語言一般都提供了常見功能的函數(shù);使用這些函數(shù),要在main函數(shù)前面包含聲明這些函數(shù)的頭文件;比如#include<stdio.h>就是聲明scanf、printf等函數(shù)的頭文件。11/10/2022C程序設計C語言的函數(shù)11/9/2022C程序設計C語言的語句按形式分類控制語句(1)選擇結(jié)構(gòu)控制語句:if-else,switch(2)循環(huán)結(jié)構(gòu)控制語句:do-while,for,while(3)其它控制語句:

goto,return,break,continue

表達式語句表達式語句由表達式后加一個分號構(gòu)成;表達式語句的特例是函數(shù)調(diào)用語句.例如:scanf(“%f%f%f”,&a,&b,&c);printf(“%f”,max(max(a,b),c));11/10/2022C程序設計C語言的語句11/9/2022C程序設計C語言的語句按語句數(shù)目分類簡單語句:單條語句;只由一個分號構(gòu)成的語句稱為空語句。復合語句:由大括號括起來的一組簡單語句構(gòu)成的語句組。

注意:(1)復合語句在地位上與單條語句相同,但復合語句最后沒有分號;(2)復合語句可以嵌套,即復合語句中可出現(xiàn)復合語句;voidmain(){inta,b,c;

{a=1;b=3;c=3;}printf(“%d”,a+b+c);}11/10/2022C程序設計C語言的語句voidmain()11/9/2022C程C的字符集和標識符C語言的標識符和運算符是組成C語句的基本單位。C語言的字符集是構(gòu)成標識符和運算符的基本單位。11/10/2022C程序設計C的字符集和標識符11/9/2022C程序設C的字符集

C語言的字符集C語言字符集是ASCII碼字符集合的子集合,主要包括:(1)26個英文字母(區(qū)分大小寫)(2)10個數(shù)字(0~9)(3)下劃線以及專用符號(+-*/%~<等)。

關于ASCII碼字符集基本知識:(1)26個英文大寫字母連續(xù)排列;(2)26個英文小寫字母連續(xù)排列;(3)10個數(shù)字(0~9)連續(xù)排列;(4)每個字符有唯一一個序號相對應;

11/10/2022C程序設計C的字符集11/9/2022C程序設計C的標識符

標識符由C語言字符組成

C語言標識符構(gòu)建規(guī)則:

注意:(1)C語言的標識符區(qū)分大、小寫字母;(2)標識符的長度依編譯系統(tǒng)的不同而不同。由字母或下劃線開頭,字母、數(shù)字和下劃線的組合11/10/2022C程序設計C的標識符由字母或下劃線開頭,11/9/2022C程C的標識符[例]標識符舉例合法的標識符:

a,A,A10,A_2,store,price,Student_no,is_zero,_pdf不合法的標識符:

2,2a,a-2,a+2,*3a,“this”11/10/2022C程序設計C的標識符11/9/2022C程序設計C的標識符:關鍵字(保留字)

關鍵字(保留字)是C語言專用的標識符,用戶不能賦予新的含義而用作自己的標識符(共有32個):Auto break case charconstcontinue default do doubleelseenum extern float for gotoif int long registerreturnShort signed sizeof staticstructswitch typedef union unsignedvoidvolatile while11/10/2022C程序設計C的標識符:關鍵字(保留字)11/9/2022C程C的標識符:預定義標識符

預定義標識符是賦予指定含義的標識符,這些含義通常符合習慣用法。例如:sin,tan,log等都與數(shù)學中的含義相同;fclose,fopen用于文件的關閉、打開。這些預定義標識符的數(shù)量隨系統(tǒng)的不同而不同。預定義標識符與關鍵字不同,用戶可以賦予新的含義,但不提倡這樣做。11/10/2022C程序設計C的標識符:預定義標識符11/9/2022C程序C的標識符:用戶定義標識符

用戶安照自己的意愿和需要定義的標識符用戶定義標識符的基本原則[例]判別下面的字符序列是否是合法的標識符:p2p,,,sin,Int,INT,sin,a[2],a*b(1)符合標識符號的組成規(guī)則;(2)絕對避免和關鍵字重名;(3)盡量避免和預定義標識符重名;11/10/2022C程序設計C的標識符:用戶定義標識符(1)符合標識符號的組成規(guī)則;1C的標識符[例3]標識符sin,cos被重命名,程序正確;若把它們改為int,for,編譯時會出錯。#include<stdio.h>#include<math.h>doublesin(doublex){return2*x;}voidmain(){floatcos=2;printf("%.2f",sin(1));}11/10/2022C程序設計C的標識符[例3]標識符sin,cos被重命名,程序正確;若算法與算法的表示編寫程序時,必須明確如下3個方面:1.已知的要處理的數(shù)據(jù)對象——數(shù)據(jù)結(jié)構(gòu)2.要求得到的結(jié)果及形式3.從已知出發(fā)求得結(jié)果所采取的方法和步驟——算法數(shù)據(jù)結(jié)構(gòu)和算法根據(jù)結(jié)果和形式確定,所得結(jié)果和形式是數(shù)據(jù)結(jié)構(gòu)和算法的必然產(chǎn)物。計算機程序是數(shù)據(jù)結(jié)構(gòu)之上的算法,即:程序=數(shù)據(jù)結(jié)構(gòu)+算法計算機算法可以分為兩大類:

數(shù)值算法和非數(shù)值算法。

11/10/2022C程序設計算法與算法的表示11/9/2022C程序設計算法的例子[例4]任意給定正整數(shù)n,求數(shù)列1,-1/2,1/3,-1/4,…前n項的和。分析:處理對象正負項交替出現(xiàn),后一項的分母比前一項的分母大1的數(shù)列;求前n項的和。算法:令sum代表要求的和,且sum初始值為0;則sum是逐項求出數(shù)列的每一項后,加到sum上的結(jié)果。令item代表第k項,則當k為奇數(shù)時,item為正,否則為負。讓k從1開始按1遞增,當k變到n的時候,sum就是所求的結(jié)果。據(jù)此可以設計如下算法:11/10/2022C程序設計算法的例子[例4]任意給定正整數(shù)n,求數(shù)列1,-1/2算法的例子

(1)讀入整數(shù)n(2)sum=0(3)k=1(4)若k為奇數(shù),item=1/k;否則item=-1/k(5)sum=sum+item(6)k遞增1:k=k+1(7)如果k不大于n,則繼續(xù)(4)~(6);否則結(jié)束,輸出結(jié)果

11/10/2022C程序設計算法的例子11/9/2022C程序設計算法的特點1.有窮性:算法應當在有限步之后結(jié)束2.確定性:算法的每一步都應當是清晰明確的3.有效性:算法應能有效運行并給出預期結(jié)果4.有輸出:算法應當有一個或多個輸出。

11/10/2022C程序設計算法的特點11/9/2022C程序設計算法的表示自然語言表示法

用自然語言把算法表達、敘述出來。此方法因自然語言含義的不準確而不準確,因此不能在計算機上實現(xiàn)。

計算機語言表示法

用語言嚴格按照其語法寫出算法對應的程序,這是我們編程的目標。但一下子直接寫出算法的計算機語言程序往往比較困難,需要有個過渡。下面的幾種方法可以理解為從自然語言到計算機語言的過渡表示方法

11/10/2022C程序設計算法的表示11/9/2022C程序設計算法的表示流程圖表示法流程圖是一種用圖形直觀表示算法操作的算法表示方法。常用的圖形是由美國國家標準化協(xié)會(ANSI)制定并得到公認的。主要有以下幾種:

起止框輸入輸出框處理框判斷框流程線11/10/2022C程序設計算法的表示起止框輸入輸出框處理框判斷框流程線11/9/20算法的表示上面例子的流程圖YNYN開始讀入nsum=0k=1item=1/kk是奇數(shù)item=-1/ksum=sum+itemk=k+1k>n?結(jié)束11/10/2022C程序設計算法的表示YNYN開始讀入nsum=0item=1/kk是算法的表示采用基本結(jié)構(gòu)的改進流程圖

在流程圖表示方法中,流程線的使用沒有任何限制,從而會導致流程走向的任意性,降低可讀性。

1966年Bohra和Jacopini提出了以下5種改進的基本結(jié)構(gòu):(1)順序結(jié)構(gòu)

(2)雙分支選擇結(jié)構(gòu)

(3)單分支選擇結(jié)構(gòu)

(4)當型循環(huán)結(jié)構(gòu)

(5)

溫馨提示

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

最新文檔

評論

0/150

提交評論