程序的概念與算法_第1頁
程序的概念與算法_第2頁
程序的概念與算法_第3頁
程序的概念與算法_第4頁
程序的概念與算法_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

(優(yōu)選)程序的概念與算法目前一頁\總數(shù)五十七頁\編于三點1你對C語言了解程度如何?

(1).對C語言一無所知(2).聽到或看過一些關于C語言的知識

調(diào)查目前二頁\總數(shù)五十七頁\編于三點2努力認真學好C語言

1.從技術層面來講,C語言是我們最值得努力學習的一門語言:

教育部規(guī)定,每個大學生都要掌握至少一門編程語言,這樣做一定有它的道理:目前三頁\總數(shù)五十七頁\編于三點3

(1).C語言是目前國際上共認的主打語言,是必須

要認真學好的,特別對工科類同學.

(2).有了C語言的知識,可為今后學習后續(xù)C語言,

及學習其它語言打下良好的基礎.目前四頁\總數(shù)五十七頁\編于三點42.

計算機技術是人類智慧的結晶,通過學習一門計算機語言,加深對這一成果的體會,改進我們的思維方式,從另一個側(cè)面提高我們的素質(zhì)水平。

同時,通過學習計算機語言,對我們今后學習,使用計算機的其它操作,也會帶來很大的幫助。3.“打好一個基礎,掌握二種工具”:

數(shù)學基礎,計算機和外語二種工具。迎接“省計算機二級等級考試”。目前五頁\總數(shù)五十七頁\編于三點54.

當然,C語言是我們接觸的第一門高級語言,剛

開始學習計算機語言會有一定難度(新的概念,新

的理論和方法,相當多的語法點要理解和記憶等).

并且,C語言是計算機高級語言中較為難學的一門語言,更需要我們投入更多精力去學習,掌握.

我們應該為自己即將學習和掌握一門編程語言而高興和自豪.目前六頁\總數(shù)五十七頁\編于三點6如何學會用C語言程序設計:

了解C程序設計語言.模仿、改寫、編寫C程序.通過不斷的編程實踐,逐步領會和掌握程序設計的基本思想和方法.目前七頁\總數(shù)五十七頁\編于三點7教材“C語言程序設計”.唐云廷主編,科技出版社,2009

參考書“C程序設計”(第三版)潭浩強著清華大學出版社目前八頁\總數(shù)五十七頁\編于三點8C語言的發(fā)展歷史與特點

歷史1972年:貝爾實驗室的DennisRitchie在B語言的基

礎上設計并實現(xiàn)了C語言。1978年:B.W.Kernighan和D.Ritchie(簡稱K&R)

合著的《TheCProgrammingLanguage》是

各種C語言版本的基礎,稱之為舊標準C語言。1983年:美國國家標準化協(xié)會(ANSI)制定了新的C

語言標準,稱ANSIC。目前九頁\總數(shù)五十七頁\編于三點9

C語言的特點和功能

1.C語言是一種結構化語言.結構化程序設計的基本原則是:模塊化原則、自頂向下原則和逐步求精原則。

2.C語言語句簡潔、緊湊,使用方便、靈活.

32個關鍵字,9種控制語句,程序書寫形式自由。3.C語言程序易于移植.

C語言將與硬件有關的因素從語言主體中分離出來,通過庫函數(shù)或其他實用程序?qū)崿F(xiàn)它們。

目前十頁\總數(shù)五十七頁\編于三點104.C語言有強大的處理能力.5.生成的目標代碼質(zhì)量高,運行效率高.6.數(shù)據(jù)類型檢查不嚴格,表達式出現(xiàn)二義性,不具備數(shù)

據(jù)越界自動檢查功能,運算符的優(yōu)先級與結合性對初學

者難于掌握.C語言的功能:C語言不僅可以編寫系統(tǒng)軟件(操作系統(tǒng),語言處理軟件等),也可以編寫應用程序.目前十一頁\總數(shù)五十七頁\編于三點11

第1章

程序的概念與算法目前十二頁\總數(shù)五十七頁\編于三點121.1程序的概念程序是指把希望計算機做的工作寫成一定形式的指令,并把它們存儲在計算機的內(nèi)部存儲器中。

當人們給出命令之后,它就按指令操作順序自動進行,把這種可以連續(xù)執(zhí)行的一條條指令的集合稱為“程序”。

目前,正在使用的計算機程序設計語言有很多種,有些語言是面向機器的,如二進制語言,而多數(shù)是面向問題的語言。目前十三頁\總數(shù)五十七頁\編于三點13

目前的程序設計一般可分為非結構化程序設計、結構化程序設計和面向?qū)ο蟮某绦蛟O計.C語言是結構化程序設計語言,而C++稱為面向?qū)ο蟮恼Z言。面向問題的語言都被稱為計算機的“高級語言”,如C與C++語言等。目前十四頁\總數(shù)五十七頁\編于三點14

程序是為了解決某個問題而設計,用C語句所寫的序列稱為C源程序,它的后綴為(.c).

C源程序經(jīng)過編譯(Compile)后生成一個目標文件(.obj).

經(jīng)過鏈接庫函數(shù)后生成可執(zhí)行文件(.exe)。

這些語言都是用接近人們習慣的自然語言和數(shù)學語言作為語言的表達形式,人們學習和操作起來感到十分方便。目前十五頁\總數(shù)五十七頁\編于三點15

C程序的設計過程如下圖所示:

問題的提出及分析

確定該問題的算法用C語言描述算法建立語言源程序

編譯生成.obj文件

連接有關庫函數(shù)后生成可執(zhí)行文件運行程序并輸出正確的結果目前十六頁\總數(shù)五十七頁\編于三點161.2算法與流程圖什么是算法?算法是指解決問題所使用的一系列合乎邏輯的解題步驟.

一個程序應包括兩方面內(nèi)容:(1).對數(shù)據(jù)的描述.要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結構.

目前十七頁\總數(shù)五十七頁\編于三點17(2).對操作的描述,操作步驟,即算法(algorithm).

著名計算機科學家Wirth(沃思)提出:

數(shù)據(jù)結構+算法=程序

在計算機科學中,算法要用計算機算法語言描述.

要解決一個復雜的問題,需要仔細的分析與研究此問題,并進行精確的邏輯分析,找到解決問題的方法,再用計算機實現(xiàn)。目前十八頁\總數(shù)五十七頁\編于三點18當然,求解一個給定的可解的問題,不同的人可以編寫出不同的程序。例如判斷一個整數(shù)的奇偶性,大致分成以下幾步:計算機讀入該數(shù);將該數(shù)除以2;判斷余數(shù)是否為0;如果為0,該數(shù)為偶數(shù);否則為奇數(shù).以上這些解決問題的一系列步驟就是算法,并且可以用C語言編寫成程序,用以解決數(shù)的奇偶性問題。目前十九頁\總數(shù)五十七頁\編于三點19什么是流程圖?流程圖是一種用圖解方式說明,解決一個問題所要的一系列操作。流程圖比文字更容易理解,更加直觀.

流程圖中的符號含義如下所示:目前二十頁\總數(shù)五十七頁\編于三點20輸入輸出連接符控制流條件判斷加工、處理程序的入口和出口含義常用基本組件流程圖的符號及含義目前二十一頁\總數(shù)五十七頁\編于三點21例1.1

從鍵盤輸入兩個數(shù),求這兩數(shù)之和,并把結果輸出.畫出此問題的流程圖。開始

輸入兩數(shù)

兩數(shù)相加

顯示結果結束定義兩個變量程序流程圖目前二十二頁\總數(shù)五十七頁\編于三點221.3結構化程序設計包含的三種結構結構化程序設計由三種結構組成:

順序結構、選擇結構、循環(huán)結構。

1.3.1順序結構順序結構的程序是一條語句接一條語句順序地往下執(zhí)行的。例如右圖中,先執(zhí)行語句1,然后執(zhí)行語句2,最后執(zhí)行語句3.順序結構的程序是最簡單的程序。

語句1

語句2

語句3目前二十三頁\總數(shù)五十七頁\編于三點23例1.2編寫一個C語言程序,輸出顯示下列圖形。

*****************C語言的學習要努力!*****************

這是一個典型的順序執(zhí)行的程序設計,輸出三個字符串,輸出字符串用函數(shù)printf()完成,具體的過程描述為:開始輸出:***************換行后再輸出:C語言的學習要努力!換行后再輸出:***************程序結束目前二十四頁\總數(shù)五十七頁\編于三點24程序流程圖如圖所示:開始

輸出:**************結束

輸出:C語言的學習要努力!

輸出:**************目前二十五頁\總數(shù)五十七頁\編于三點25下面先介紹幾個C語言程序,使我們對C語言程序的特點有一個初步認識和了解.剛開始學習,可能在某些語法點上還有不理解的地方,可以在以后的章節(jié)中得到解決和加深.#include<stdio.h>/*包含標準輸入輸出庫預處理命令*/

intmain()/*主函數(shù)開始*/

{

printf(“*************\n”);

printf(“C語言的學習要努力!\n”);

printf(“***************\n”);

return0;

}

/*程序結束*/

雖然這是一個并不復雜的程序,但它包含了很多重要的語法點和一個程序的框架.下面逐條進行分折講解:目前二十六頁\總數(shù)五十七頁\編于三點26用C語言寫成的源程序為:(P4)#include<stdio.h>/*包含標準輸入輸出庫預處理命令*/

intmain()/*主函數(shù)開始*/

{

printf(“*************\n”);

printf(“C語言的學習要努力!\n”);

printf(“***************\n”);

return0;

}

/*程序結束*/

1.

main()是主函數(shù),每一個C程序都必須一個main()主函數(shù).

且只能有一個main()主函數(shù).3.這是一條編譯預處理命令.C語言程序設計中往往要用到輸入與輸出函數(shù)printf

、

sacnf,因此要有文件包含命令:#include<stdio.h>.2.

函數(shù)體用大括

號{}括起來。目前二十七頁\總數(shù)五十七頁\編于三點27

#include<stdio.h>

intmain()

{

printf(“*************\n”);

printf(“C語言的學習要努力!\n”);

/*輸出一行字符*/printf(“***************\n”);

return0;

}

printf()函數(shù)是C語言中的專用輸出函數(shù),雙引號內(nèi)的字符串按原樣輸出.

/*……*/是注釋部分,對編譯和運行不起作用,基本上可放于程序任何地方.

‘\n’是一轉(zhuǎn)義字符(為換行符).語句最后有一個分號

;

。目前二十八頁\總數(shù)五十七頁\編于三點28#include<stdio.h>

intmain()

{

printf(“*************\n”);

printf(“C語言的學習要努力!\n”);

printf(“***************\n”);

return0;

/*與main函數(shù)中的int相對應*/}

main()函數(shù)是由操作系統(tǒng)調(diào)用的.

標準C++要求main()函數(shù)聲明為int型.

如果程序正常執(zhí)行,則向操作系統(tǒng)返回0,否則返回1.細節(jié)問題將通過隨后章節(jié)的學習,以及上機練習來加深理解.目前二十九頁\總數(shù)五十七頁\編于三點29上機練習1(P5)步驟1:

在VisualC++環(huán)境下新建文件:[開始]按鈕→[所有程序]→[MicrosoftVisualC++6.0]

如果出現(xiàn)每日提示,如圖所示,即點擊關閉按扭。目前三十頁\總數(shù)五十七頁\編于三點30步驟2:在引導出的C++集中開發(fā)環(huán)境中,點擊菜單:[文件]→[新建]目前三十一頁\總數(shù)五十七頁\編于三點31在隨后出現(xiàn)的”新建”對話框中,點擊菜單:

[文件]→[C++SourseFile]

輸入文件名:如:1_1.c指定存放此文件的位置:

例如:D:\VC++目前三十二頁\總數(shù)五十七頁\編于三點32步驟3:在編輯框內(nèi)輸入C源程序。目前三十三頁\總數(shù)五十七頁\編于三點33步驟4:在VisualC++環(huán)境下點擊工具圖標:進行編譯(相當:Ctrl+F7),產(chǎn)生.obj文件.出現(xiàn)對話框(英文):

回答:是

這條編譯命令需要一個活動的工程工作區(qū).你要產(chǎn)生一個默認的工作區(qū)?目前三十四頁\總數(shù)五十七頁\編于三點34如果程序無錯,編譯通過.產(chǎn)生一個相應的1_1.obj文件.目前三十五頁\總數(shù)五十七頁\編于三點35如果程序有錯,編譯沒有通過.提示錯誤信息.目前三十六頁\總數(shù)五十七頁\編于三點36步驟5:點擊連接圖標:現(xiàn)設程序無錯,編譯通過.進行連接(相當:F7),產(chǎn)生.exe文件.目前三十七頁\總數(shù)五十七頁\編于三點37如果程序無錯,連接通過.產(chǎn)生一個相應的1_1.exe文件.目前三十八頁\總數(shù)五十七頁\編于三點38步驟6:點擊執(zhí)行圖標:進行執(zhí)行此1_1.exe文件.目前三十九頁\總數(shù)五十七頁\編于三點39思考:1.在例1-1.c中,如果沒有main(),編譯程序后出現(xiàn)的錯誤提示是什么?在C程序設計中要注意什么問題?2.在例1-1.c中,如把main寫成了Main,編譯程序后出現(xiàn)的錯誤提示是什么?在C程序設計中要注意什么問題?3.在例1-1.c中,如printf(“********\n”);后少了“;”號,編譯程序后出現(xiàn)的錯誤提示是什么?在C程序設計中要注意什么問題?目前四十頁\總數(shù)五十七頁\編于三點404.在例1-1.c中,如沒有寫上預處理命令#include<stdio.h>,編譯程序后出現(xiàn)的錯誤提示是什么?想想這是為什么?5.在例1-1.c中,任何一行的輸出語句中少了符號\n,程序運行后的結果有什么變化?問在C語言中符號\n的作用是什么?6.在例1-1.c中,如printf(“***********\n”);后少了雙引號,編譯程序后出現(xiàn)的錯誤提示是什么?目前四十一頁\總數(shù)五十七頁\編于三點411.3.2分支結構在程序執(zhí)行過程中,程序的流程可由多路分支組成,根據(jù)不同的條件去執(zhí)行不同的語句塊。這是一個兩分支結構。

首先判斷條件是否為“真”,如為真,執(zhí)行語句塊1,否則執(zhí)行語句塊2。

語句塊2

語句塊1

假真條件目前四十二頁\總數(shù)五十七頁\編于三點42假如判斷從鍵盤輸入的兩個數(shù)的大小:

如果:x>y,提示:x大于y.如果:x<y,提示:x小于y,

分支結構形式

x>y?

輸出x小于y真假

輸出x大于y

下一步此時將會用到如下所示的流程圖:目前四十三頁\總數(shù)五十七頁\編于三點43例1.3

從鍵盤輸入兩個數(shù),判斷兩個數(shù)的大小。分析:這是一個分支程序設計,具體的過程描述為:程序開始定義兩個變量:x,y輸入二個數(shù)給x,y如果x大于y輸出:x大于y否則輸出:x小于y程序結束目前四十四頁\總數(shù)五十七頁\編于三點44開始給x,y輸入相應的值

定義兩個變量:x,y

結束x>y?x小于yx大于y兩數(shù)中求最大值流程圖真假目前四十五頁\總數(shù)五十七頁\編于三點45例1.3

用C語言寫成的源程序為:(P8)#include<stdio.h>

intmain()

{

intx,y;

/*定義二個變量*/

scanf(“%d%d”,&x,&y);

/*讀入兩個整型數(shù)給變量x、y*/

if(x>y)

/*如果x大于y*/

printf(“x大于y\n”);

/*輸出:x大于y*/

else

/*否則*/

printf(“x小于y\n”);

/*輸出:x小于y*/

return0;}這一行為變量定義,指明x,y是整型變量(integer)。

scanf()函數(shù)是專用的輸入函數(shù).

&的含義是“取地址”的意思,函數(shù)的作用是:從鍵盤輸入的兩個值,分別送到

x,y所占地址的內(nèi)存單元中去,也就是輸入x,y的值.

%d為輸入格式說明,d為十進制整數(shù)格式說明符。兩分支結構目前四十六頁\總數(shù)五十七頁\編于三點46上機練習

步驟1:調(diào)出VC++6.0,關閉“每日提示”。步驟2:點擊菜單:[文件]→[新建]→[文件]→

[C++SourseFile]輸入文件名1-2.c,點擊確定按扭。步驟3:在編輯框內(nèi)輸入C源程序1-2.c。目前四十七頁\總數(shù)五十七頁\編于三點47步驟4:點擊圖標進行編譯源程序1-2.c,產(chǎn)生可執(zhí)行文件1-2.obj。步驟5:點擊連接圖標:進行連接,產(chǎn)生.exe文件.

執(zhí)行程序1_2.exe步驟6:

點擊執(zhí)行圖標目前四十八頁\總數(shù)五十七頁\編于三點48程序運行結果如圖所示。程序運行時輸入:1000500(然后回車).兩數(shù)間用空格分隔.目前四十九頁\總數(shù)五十七頁\編于三點49程序運行結果數(shù)據(jù)輸入行的顯示.程序運行后,結果顯示.目前五十頁\總數(shù)五十七頁\編于三點50思考:1.在例1_2.c中,如果沒有語句intx,y;編譯程序后出現(xiàn)的錯誤提示是什么?在C程序設計中要注意什么問題?2.在例1_2.c中,如把語句scanf(“%d%d”,&x,&y);寫成:scanf(“%d%d”,x,y);用來讀入兩個整型數(shù)給變量x、y,程序的運行結果會如何?目前五十一頁\總數(shù)五十七頁\編于三點513.在例1-2.c中,如程序在運行時輸入為:1000,500,程序能否得出正確的運行結果?4.在例1-2.c中,如果在if(x>y)后加上“;”號,編譯程序后出現(xiàn)的錯誤提示是什么?想想這是為什么?5.在例1-2.c中,輸入源程序后,int、if、else為什么會變顏色,在C程序設計中有什么特殊的意義?目前五十二頁\總數(shù)五十七頁\編于三點521.3.3循環(huán)結構如果在程序中需要根據(jù)某項條件重復地執(zhí)行某項任務若干次,直到滿足或不滿足某條件為止,這就構成循環(huán)結構。

循環(huán)條件?初始條件循環(huán)語句假真循環(huán)語句執(zhí)行完成后,又轉(zhuǎn)去判斷循環(huán)條件,如循環(huán)條件仍為真,再次執(zhí)行循環(huán)語句,如此反復,直到

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論