版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章概述1.1計算機發(fā)展計算機語言1.2算法及其描述方法1.31.4程序和程序設計方法本章內容導讀本章主要介紹計算機發(fā)展、計算機語言、程序、算法及其描述,以及程序設計方法等。通過學習本章,讀者應掌握以下內容:了解計算機語言的發(fā)展;了解高級語言的概念和特點;了解程序的概念;掌握幾種常用的算法表示方法以及程序設計方法。計算機的誕生1946年世界上第一臺電子計算機(電子數(shù)字積分計算機,ENIAC)誕生。1.1計算機發(fā)展計算機的發(fā)展第一代(20世紀50年代):主要采用真空電子管,主要用于科學計算,用機器語言編寫程序;第二代(20世紀50年代末期):以晶體管為主要元器件,采用匯編和高級語言編寫程序;第三代(1964至1974):采用集成電路技術,計算機軟件逐漸系統(tǒng)化,形成了操作系統(tǒng)、編譯程序和網(wǎng)絡軟件等;第四代(1974至今):采用大規(guī)模集成電路和微處理器;未來計算機:神經網(wǎng)絡計算機、生物計算機、量子計算機等。馮?諾依曼體系結構
ENIAC誕生的同時,馮?諾依曼提出存儲程序的概念,預先將計算機指令序列輸入到計算機存儲,以自動執(zhí)行一個計算任務。馮?諾依曼體系結構確定了現(xiàn)代計算機的體系結構,至今沒有改變。特點指令和數(shù)據(jù)采用二進制表示,簡化機器的邏輯線路;指令和數(shù)據(jù)存儲在存儲器中;計算機由運算部件、控制部件、存儲器、輸入設備和輸出設備五大部分組成。1.1計算機發(fā)展第一代
機器語言(低級語言):面向機器、可移植性差、效率高但不方便編程。第二代
匯編語言:利用助記符代替二進制代碼。第三代
高級語言:面向程序員、可移植性好、執(zhí)行效率高、便于編程。第四代
面向對象語言第五代
智能語言1.2計算機語言1、機器語言計算機發(fā)展早期使用的語言由“0”和“1”的字符串組成;計算機中唯一不經過翻譯而能直接識別的語言,與具體機器有關,不同的機器識別的機器語言也不同。1.2計算機語言2、匯編語言20世紀50年代早期,數(shù)學家GraceHopper發(fā)明了符號語言(又稱為匯編語言),即用符號或助記符表示不同的機器語言指令。機器語言和具體的機器有關,要求程序員不僅要非常熟悉硬件的組成及其指令系統(tǒng),而且必須熟記計算機的指令代碼。程序代碼量龐大,且易出錯,不易修改。1.2計算機語言3、高級語言程序員不必了解機器的指令系統(tǒng),編程效率大大提高。高級語言與具體機器無關,所以在一種機器上運行的高級語言程序可以不經改動地移植到另一種機器上運行,提高程序的通用性。與自然語言(尤其是英語)相似,但比自然語言嚴謹且富有邏輯性,因此高級語言易學、易懂。
1.2計算機語言C語言:系統(tǒng)軟件和應用軟件BASIC:初學者入門FORTRAN或PL/I:科學計算COBOL:商業(yè)和管理等數(shù)據(jù)處理領域PASCAL:教學,第一個結構化語言4、C語言與其他高級語言1.2計算機語言算法
解決問題的步驟序列即為算法。算法必須具備的五個基本特性可執(zhí)行性
算法的每一步都是可執(zhí)行的。確定性算法的每一步驟必須明確定義,不能有任何歧義性(非確定性)。有窮性一個算法必須在執(zhí)行有窮步驟之后結束。有輸入信息的說明有的算法可以沒有輸入信息,然而絕大多數(shù)算法都具有輸入信息。有輸出信息的步驟一個算法應至少有一個輸出問題答案的步驟。1.3算法及其描述方法【例1-1】計算1×2×…×9×10的積。第一種算法(最簡單的方法)步驟1:先求1×2,得到結果2;步驟2:將步驟1得到的乘積2再乘以3,得到結果6;步驟3:將6再乘以4,得到結果24;步驟4:將24再乘以5,得到結果120。…步驟9:將362880乘以10,得到結果3628800,即最后結果。1.3算法及其描述方法【例1-1】計算1×2×…×9×10的積。第二種算法分析:可以設置被乘數(shù)和乘數(shù)兩個變量,不另設變量存放乘積,直接將每一步驟的乘積放在被乘數(shù)的變量中。若設p為被乘數(shù),i為乘數(shù)。采用循環(huán)算法計算結果,即:
S1:使p=1;S2:使i=2;S3:使p×i,乘積仍放在變量p中,可表示為p×i=>p;S4:使i的值加1,即i+1=>i;S5:如果i不大于10,返回重新執(zhí)行步驟S3以及其后的步驟S4和S5;否則算法結束。最后得到p的值就是10!的值。1.3算法及其描述方法算法描述方法自然語言
通俗易懂,但文字冗長、易產生歧義。傳統(tǒng)流程圖
直觀形象,但占用篇幅較大,畫流程圖既費時又不方便。N-S流程圖比自然語言描述直觀、形象、易于理解;比傳統(tǒng)流程圖緊湊易畫,尤其是廢除了流程線,整個算法由各個基本結構按順序組成。偽代碼用介于自然語言和計算機語言之間的文字和符號描述算法。書寫方便,格式緊湊,容易理解,便于向計算機語言(即程序)過渡。計算機語言只有用計算機語言編寫的程序才能被計算機執(zhí)行。必須嚴格遵循所用編程語言的語法規(guī)則,不同于偽代碼。1.3算法及其描述方法【例1-1】算法的偽代碼
1=>t
2=>i
t×i=>t
i+1=>i
直到i>10
打印t開始
置t的初值為1置i的初值為2當i<=10時,執(zhí)行如下操作:使t=t×i使i=i+1打印t的值結束開始1=>t2=>ii+1=>it×i=>ti>10結束YN【例1-1】算法的N-S流程圖【例1-1】算法的傳統(tǒng)流程圖一個程序包括對數(shù)據(jù)的描述和對處理問題的方法和步驟的完整而準確的描述。對數(shù)據(jù)的描述,即數(shù)據(jù)結構。C語言中,系統(tǒng)提供的數(shù)據(jù)結構,以數(shù)據(jù)類型的形式出現(xiàn)。對處理問題的方法和步驟的描述,即計算機算法,是程序的靈魂。著名計算機科學家NikiklausWirth提出:
數(shù)據(jù)結構+算法=程序實際上,一個程序除了數(shù)據(jù)結構和算法外,還必須采用結構化程序設計方法進行設計,并采用一種計算機語言表示。1.4程序和程序設計方法1、程序程序設計者使用各種高級語言如C、C++和Java等編寫程序,生成的程序稱為源程序。預處理階段,對源程序中以字符#開頭的預處理命令進行處理,例如,將#include命令后面的.h文件內容嵌入到源程序文件中。編譯階段,對預處理后的源程序進行編譯,對源程序進行語法檢查,如果有錯誤則給出錯誤提示,直到源程序沒有任何語法錯誤,將源程序轉換生成一個匯編語言源程序文件。匯編階段,對匯編語言源程序進行匯編,生成一個可重定位目標文件,在VisualStudio中以“obj”為擴展名。鏈接階段,將多個可重定位目標文件和標準庫函數(shù)目標模塊合并成為一個可執(zhí)行目標文件(ExecutableObjectFile),簡稱為可執(zhí)行文件,在VisualStudio中以“exe”為擴展名。1.4程序和程序設計方法1、程序結構化程序設計方法(面向過程的程序設計方法)荷蘭計算機科學家E.W.Dijkstra
于1965年提出。核心思想——模塊化將待開發(fā)的程序劃分為若干個相互獨立的模塊,每個模塊完成特定功能,適合于設計大規(guī)模的復雜程序,其基本要點包括:采用“自頂向下,逐步求精”的設計方法。程序由三種基本結構(順序、選擇和循環(huán))構成。優(yōu)點:程序員易于編碼實現(xiàn),讀者易于閱讀理解;復雜的問題化簡為一系列簡單模塊,便于系統(tǒng)擴充。缺點:用戶的要求難以在需求分析階段被確定;開發(fā)周期較長。
2、程序設計方法1.4程序和程序設計方法面向對象程序設計方法1967年,挪威計算中心的KristenNygaard
和OleJohanDahl開發(fā)了Simula67語言,提供比子程序更高一級的抽象和封裝,引入數(shù)據(jù)抽象和類的概念,被認為是第一個面向對象的語言。核心思想將程序或者軟件看成是一個由對象組成的集合。與傳統(tǒng)的結構化程序設計相比,吸取了結構化程序設計的一切優(yōu)點。區(qū)別(1)采用數(shù)據(jù)抽象和信息隱藏技術使組成類的數(shù)據(jù)和操作是不可分割的,避免結構化程序由于數(shù)據(jù)和過程分離引起的弊病。(2)程序由類、對象(類的實例)和對象之間的動態(tài)聯(lián)系組成。而結構化程序由結構化的數(shù)據(jù)、過程的定義以及調用過程處理相應的數(shù)據(jù)組成。2、程序設計方法1.4程序和程序設計方法ThankYou!第2章概述2.1C語言發(fā)展和特點
C語言基本詞法2.2
C語言基本語句分類2.3C程序基本組成2.5C程序開發(fā)環(huán)境2.4本章內容導讀本章主要介紹C語言語句分類、程序組成和開發(fā)環(huán)境MicrosoftVisualC++6.0等。通過學習本章,讀者應掌握以下內容:掌握C語言的轉義字符;了解C程序的組成;掌握在MicrosoftVisualC++6.0環(huán)境下,創(chuàng)建源程序、編譯、連接、生成可執(zhí)行程序、編輯修改源程序、運行可執(zhí)行程序、查看運行結果等基本操作;了解C語言的語句分類。C語言誕生之前,系統(tǒng)軟件主要是用匯編語言編寫。由于匯編語言程序依賴于計算機硬件,其可讀性和可移植性差;一般的高級語言又難以實現(xiàn)對計算機硬件的直接操作,因此希望有一種兼具匯編語言和高級語言特性的新語言。C語言的發(fā)展1978年貝爾實驗室正式推出C語言;后來又被多次改進,并出現(xiàn)了多種版本;1983年美國國家標準化協(xié)會(ANSI),根據(jù)C語言問世以來的各種版本對C語言發(fā)展和擴充,制定了83ANSIC標準;1989年ANSI發(fā)布了一個完整的C語言標準ANSIC或C89;1990年,國際標準化組織(ISO)接收C89為ISO國際標準,即C90;1999年,ISO對C語言標準進行修訂發(fā)布C99,其中增加許多新特性。2.1C語言發(fā)展和特點目前,微機上廣泛使用的C語言編譯系統(tǒng)包括MicrosoftC、TurboC、BorlandC等。雖基本相同,但還是有一些差異。注:本教材選用的開發(fā)環(huán)境是MicrosoftVisualC++6.0。
C語言的特點結構化語言,簡潔、緊湊,使用方便、靈活;運算符豐富(提供三十多種),運算能力強大;數(shù)據(jù)類型豐富;生成的目標代碼質量高,程序執(zhí)行效率高;可移植性好(較之匯編語言);程序設計自由度較大,語法限制不嚴格;可以直接對硬件進行操作。2.1C語言發(fā)展和特點C語言中,除實現(xiàn)順序、選擇和循環(huán)三種基本結構的九種控制語句外,輸入和輸出操作均由標準庫函數(shù)實現(xiàn)。注意:學習C語言,不僅要學習這9種控制語句和各種運算符,而且要學習并掌握常用標準庫函數(shù)的使用。2.1C語言發(fā)展和特點字符集
字符是組成語言的最基本元素。C語言的字符集即ASCII字符集,由字母、數(shù)字、空格、標點和特殊字符組成。組成阿拉伯數(shù)字:0、1、2、…、9(共10個)大、小寫英文字母:A-Z、a-z(共52個)非字母、非數(shù)字的可顯示字符(共33個)轉義字符:ASCII字符集中有些字符不能顯示在顯示器上,又稱為不可顯示字符(如回車換行符、制表符等),轉義字符是由“\”后面跟單個字符或若干個字符組成。2.2C語言基本詞法關鍵字/保留字具有特殊含義的單詞,均由小寫字母組成。由系統(tǒng)預先定義不能用于其他目的,共32個,根據(jù)其作用,可分為數(shù)據(jù)類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它關鍵字四類。數(shù)據(jù)類型關鍵字(12個):char、double、enum、float、int、long、short、signed、struct、union、unsigned、void控制語句關鍵字(12個):break、case、continue、default、do、else、for、goto、if、return、switch、while存儲類型關鍵字(4個):auto、extern、register、static其它關鍵字(4個):const、sizeof、typedef、volatile
2.2C語言基本詞法標識符字符的序列,除了庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其他均由用戶定義。用戶標識符用戶根據(jù)需要對C程序中用到的變量、符號常量、自定義的函數(shù)或文件指針命名,形成用戶標識符。構成規(guī)則(1)由英文字母、數(shù)字和下劃線組成,且第一個字符不能是數(shù)字;(2)英文字母區(qū)分大小寫;(3)取名遵循“簡潔明了”和“見名知意”。
2.2C語言基本詞法詞匯分類常量、標識符、關鍵字、運算符、注釋符和分隔符共六類。常量:C程序運行中其值不變的量;標識符:C程序中使用的變量名、函數(shù)名和標號等統(tǒng)稱為標識符;關鍵字:C語言規(guī)定的具有特定意義的字符串;運算符:C語言中用于計算的符號;注釋符:C語言的注釋符有兩種,一種是以/*開頭,并以*/結尾的多行注釋。在/*與*/之間的內容即為注釋;另一種是以//開頭的單行注釋,直接在需要注釋的地加上//即可。兩者的區(qū)別在于,第一種注釋可以跨行,第二種注釋不可以跨行;分隔符:C語言分隔符包括逗號和空格兩種。逗號主要用在類型說明和函數(shù)參數(shù)表中,分隔各個變量;空格多用于語句中各單詞之間,作為間隔符。2.2C語言基本詞法按照語句的功能或構成不同,可分為八類,每條語句均以分號結束。數(shù)據(jù)定義語句用于定義C程序中使用的各種存放數(shù)據(jù)的對象的名稱和屬性。賦值語句計算表達式的值并賦予變量。例如num=5是一個賦值表達式;num=5;是一條賦值語句。函數(shù)調用語句由一個函數(shù)調用加一個分號(語句結束標志)構成。例如,printf("ThisisaCfunctionstatement.");2.3C語言基本語句分類表達式語句由表達式加一個分號構成。流程控制語句實現(xiàn)程序的各種結構。C語言有9條控制語句,又可細分為:選擇控制語句:if-else、switch語句;循環(huán)控制語句:do
while、while和for語句;
轉移語句:goto、return、break和continue語句??照Z句僅由一個分號構成,不執(zhí)行任何操作。2.3C語言基本語句分類復合語句由大括號括起來的一組(也可以是一條)語句構成。例如:main(){……{……}/*復合語句,注意右括號后不需要分號。*/……}注:在語法上和單一語句相同,即單一語句可以出現(xiàn)的地方,均可以使用復合語句;復合語句允許嵌套,即復合語句中還可出現(xiàn)復合語句。其他語句包括編譯預處理命令、類型自定義語句等。
2.3C語言基本語句分類每個C程序由一個main()函數(shù)(又稱主函數(shù))和若干個其它函數(shù)組成,或僅由一個主函數(shù)構成。main()函數(shù)的作用,相當于其它高級語言中的主程序;其它函數(shù)的作用,相當于子程序。函數(shù)是C程序的基本單位。C程序中每一語句后面都以分號“;”作為語句的結束,函數(shù)的最后一個語句也不例外。但預處理命令、函數(shù)首部和右花括號“}”之后不能加分號。C語言本身沒有輸入/輸出語句,而是通過調用庫函數(shù)scanf()、printf()、getchar()和putchar()等實現(xiàn)。2.4C程序基本組成【例2-1】由main()函數(shù)和一個其它函數(shù)max()構成的C語言程序。#include<stdio.h>intmax(intx,inty){return(x>y?x:y);}intmain(void){intnum1,num2;
printf("Inputthefirstintegernumber:");
scanf("%d",&num1);
printf("Inputthesecondintegernumber:");
scanf("%d",&num2);
printf("max=%d\n",max(num1,num2));return0;}程序運行結果:
Inputthefirstintegernumber:6←┘Inputthesecondintegernumber:9←┘
max=9C程序的任意位置都可以加注釋/*……*/。另外,C程序中還可以進行單行注釋,即在某行需要注釋的地方加“//”即可。編譯源程序時,注釋被忽略。注釋可有多行,但不可嵌套。(1)/*和*/必須成對使用,且/和*、以及*和/之間不能有空格,否則出錯。(2)注釋的位置,可以單占一行,也可以跟在語句的后面。(3)如果一行寫不下,可另起一行繼續(xù)寫。(4)注釋中允許使用漢字。在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程序運行。技巧:為避免遺漏必須配對使用的符號,例如注釋符號、函數(shù)體的起止標識符(花括號)、圓括號等,在輸入時,可連續(xù)輸入這些起止標識符,然后再在其中進行插入完成內容的編輯。在起止標識符嵌套時,以及相距較遠時,這樣做更有必要。2.4C程序基本組成C語言程序總是從main()函數(shù)開始執(zhí)行。一個C程序總是從main()函數(shù)開始執(zhí)行,而不論其在程序中的位置。當main()函數(shù)執(zhí)行完畢時,即程序執(zhí)行完畢。習慣上,將其放在程序的最前面。C程序中可以有預處理命令(如include命令),通常預處理命令放在程序的最前面。主函數(shù)可以調用任何其他函數(shù),任何其他函數(shù)之間可以互相調用,但不能調用主函數(shù)。每個函數(shù)是由函數(shù)首部和函數(shù)體兩部分組成。函數(shù)首部:返回值類型函數(shù)名(類型形式參數(shù)名,…)函數(shù)體:{數(shù)據(jù)定義部分實現(xiàn)函數(shù)功能的語句序列}2.4C程序基本組成例如函數(shù)max(),其函數(shù)說明如下:
返回值類型函數(shù)名函數(shù)參數(shù)表↓↓↓
intmax(int
x,inty)函數(shù)體在函數(shù)頭的下面、大括號(必須配對使用)內的部分。函數(shù)體一般由說明語句和可執(zhí)行語句兩部分構成。(1)說明語句說明語句可由變量定義、自定義類型定義、自定義函數(shù)說明、外部變量說明等組成。2.4C程序基本組成
(2)可執(zhí)行語句
一般由若干條可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖南建筑安全員知識題庫及答案
- 2025年云南省安全員-A證考試題庫附答案
- 二零二五年健身俱樂部股權投資合作協(xié)議3篇
- 2025版集裝箱貨物海上運輸與船舶燃料供應服務合同3篇
- 2024年股權轉讓與債務承接條約3篇
- 2024年飛機內飾裝修改造合同
- 二零二五年度三人聯(lián)合開發(fā)智能家居系統(tǒng)合同3篇
- 2025年度混凝土工程監(jiān)理合同6篇
- 二零二五年度加油站土地租賃合同附新能源車輛充電服務協(xié)議3篇
- 2024年綠色環(huán)保產業(yè)高級管理人員勞動合同2篇
- 微型頂管施工方案
- 湘教文藝版小學五年級音樂上冊期末測試題
- 老化箱點檢表A4版本
- 略說魯迅全集的五種版本
- 2022年110接警員業(yè)務測試題庫及答案
- 中聯(lián)16T吊車參數(shù)
- DB44∕T 115-2000 中央空調循環(huán)水及循環(huán)冷卻水水質標準
- 嵌入式軟件架構設計
- 《石油天然氣地質與勘探》第3章儲集層和蓋層
- 航道整治課程設計--
- 超星爾雅學習通《科學計算與MATLAB語言》章節(jié)測試含答案
評論
0/150
提交評論