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

下載本文檔

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

文檔簡介

(優(yōu)選)程序的概念與算法當前第1頁\共有57頁\編于星期六\12點1你對C語言了解程度如何?

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

調(diào)查當前第2頁\共有57頁\編于星期六\12點2努力認真學好C語言

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

教育部規(guī)定,每個大學生都要掌握至少一門編程語言,這樣做一定有它的道理:當前第3頁\共有57頁\編于星期六\12點3

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

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

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

及學習其它語言打下良好的基礎(chǔ).當前第4頁\共有57頁\編于星期六\12點42.

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

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

數(shù)學基礎(chǔ),計算機和外語二種工具。迎接“省計算機二級等級考試”。當前第5頁\共有57頁\編于星期六\12點54.

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

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

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

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

我們應該為自己即將學習和掌握一門編程語言而高興和自豪.當前第6頁\共有57頁\編于星期六\12點6如何學會用C語言程序設(shè)計:

了解C程序設(shè)計語言.模仿、改寫、編寫C程序.通過不斷的編程實踐,逐步領(lǐng)會和掌握程序設(shè)計的基本思想和方法.當前第7頁\共有57頁\編于星期六\12點7教材“C語言程序設(shè)計”.唐云廷主編,科技出版社,2009

參考書“C程序設(shè)計”(第三版)潭浩強著清華大學出版社當前第8頁\共有57頁\編于星期六\12點8C語言的發(fā)展歷史與特點

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

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

合著的《TheCProgrammingLanguage》是

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

語言標準,稱ANSIC。當前第9頁\共有57頁\編于星期六\12點9

C語言的特點和功能

1.C語言是一種結(jié)構(gòu)化語言.結(jié)構(gòu)化程序設(shè)計的基本原則是:模塊化原則、自頂向下原則和逐步求精原則。

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

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

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

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

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

者難于掌握.C語言的功能:C語言不僅可以編寫系統(tǒng)軟件(操作系統(tǒng),語言處理軟件等),也可以編寫應用程序.當前第11頁\共有57頁\編于星期六\12點11

第1章

程序的概念與算法當前第12頁\共有57頁\編于星期六\12點121.1程序的概念程序是指把希望計算機做的工作寫成一定形式的指令,并把它們存儲在計算機的內(nèi)部存儲器中。

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

目前,正在使用的計算機程序設(shè)計語言有很多種,有些語言是面向機器的,如二進制語言,而多數(shù)是面向問題的語言。當前第13頁\共有57頁\編于星期六\12點13

目前的程序設(shè)計一般可分為非結(jié)構(gòu)化程序設(shè)計、結(jié)構(gòu)化程序設(shè)計和面向?qū)ο蟮某绦蛟O(shè)計.C語言是結(jié)構(gòu)化程序設(shè)計語言,而C++稱為面向?qū)ο蟮恼Z言。面向問題的語言都被稱為計算機的“高級語言”,如C與C++語言等。當前第14頁\共有57頁\編于星期六\12點14

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

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

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

這些語言都是用接近人們習慣的自然語言和數(shù)學語言作為語言的表達形式,人們學習和操作起來感到十分方便。當前第15頁\共有57頁\編于星期六\12點15

C程序的設(shè)計過程如下圖所示:

問題的提出及分析

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

編譯生成.obj文件

連接有關(guān)庫函數(shù)后生成可執(zhí)行文件運行程序并輸出正確的結(jié)果當前第16頁\共有57頁\編于星期六\12點161.2算法與流程圖什么是算法?算法是指解決問題所使用的一系列合乎邏輯的解題步驟.

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

當前第17頁\共有57頁\編于星期六\12點17(2).對操作的描述,操作步驟,即算法(algorithm).

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

數(shù)據(jù)結(jié)構(gòu)+算法=程序

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

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

流程圖中的符號含義如下所示:當前第20頁\共有57頁\編于星期六\12點20輸入輸出連接符控制流條件判斷加工、處理程序的入口和出口含義常用基本組件流程圖的符號及含義當前第21頁\共有57頁\編于星期六\12點21例1.1

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

輸入兩數(shù)

兩數(shù)相加

顯示結(jié)果結(jié)束定義兩個變量程序流程圖當前第22頁\共有57頁\編于星期六\12點221.3結(jié)構(gòu)化程序設(shè)計包含的三種結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計由三種結(jié)構(gòu)組成:

順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。

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

語句1

語句2

語句3當前第23頁\共有57頁\編于星期六\12點23例1.2編寫一個C語言程序,輸出顯示下列圖形。

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

這是一個典型的順序執(zhí)行的程序設(shè)計,輸出三個字符串,輸出字符串用函數(shù)printf()完成,具體的過程描述為:開始輸出:***************換行后再輸出:C語言的學習要努力!換行后再輸出:***************程序結(jié)束當前第24頁\共有57頁\編于星期六\12點24程序流程圖如圖所示:開始

輸出:**************結(jié)束

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

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

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

{

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

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

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

return0;

}

/*程序結(jié)束*/

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

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

{

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

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

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

return0;

}

/*程序結(jié)束*/

1.

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

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

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

函數(shù)體用大括

號{}括起來。當前第27頁\共有57頁\編于星期六\12點27

#include<stdio.h>

intmain()

{

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

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

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

return0;

}

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

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

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

;

。當前第28頁\共有57頁\編于星期六\12點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é)的學習,以及上機練習來加深理解.當前第29頁\共有57頁\編于星期六\12點29上機練習1(P5)步驟1:

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

如果出現(xiàn)每日提示,如圖所示,即點擊關(guān)閉按扭。當前第30頁\共有57頁\編于星期六\12點30步驟2:在引導出的C++集中開發(fā)環(huán)境中,點擊菜單:[文件]→[新建]當前第31頁\共有57頁\編于星期六\12點31在隨后出現(xiàn)的”新建”對話框中,點擊菜單:

[文件]→[C++SourseFile]

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

例如:D:\VC++當前第32頁\共有57頁\編于星期六\12點32步驟3:在編輯框內(nèi)輸入C源程序。當前第33頁\共有57頁\編于星期六\12點33步驟4:在VisualC++環(huán)境下點擊工具圖標:進行編譯(相當:Ctrl+F7),產(chǎn)生.obj文件.出現(xiàn)對話框(英文):

回答:是

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

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

語句塊2

語句塊1

假真條件當前第42頁\共有57頁\編于星期六\12點42

假如判斷從鍵盤輸入的兩個數(shù)的大小:

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

分支結(jié)構(gòu)形式

x>y?

輸出x小于y真假

輸出x大于y

下一步此時將會用到如下所示的流程圖:當前第43頁\共有57頁\編于星期六\12點43例1.3

從鍵盤輸入兩個數(shù),判斷兩個數(shù)的大小。分析:這是一個分支程序設(shè)計,具體的過程描述為:程序開始定義兩個變量:x,y輸入二個數(shù)給x,y如果x大于y輸出:x大于y否則輸出:x小于y程序結(jié)束當前第44頁\共有57頁\編于星期六\12點44開始給x,y輸入相應的值

定義兩個變量:x,y

結(jié)束x>y?x小于yx大于y兩數(shù)中求最大值流程圖真假當前第45頁\共有57頁\編于星期六\12點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ù)格式說明符。兩分支結(jié)構(gòu)當前第46頁\共有57頁\編于星期六\12點46上機練習

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

[C++SourseFile]輸入文件名1-2.c,點擊確定按扭。步驟3:在編輯框內(nèi)輸入C源程序1-2.c。當前第47頁\共有57頁\編于星期六\12點47步驟4:點擊圖標進行編譯源程序1-2.c,產(chǎn)生可執(zhí)行文件1-2.obj。步驟5:點擊連接圖標:進行連接,產(chǎn)生.exe文件.

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

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

循環(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)系上傳者。文件的所有權(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

提交評論