《程序設(shè)計(jì)基礎(chǔ)知識(shí)》PPT課件.ppt_第1頁(yè)
《程序設(shè)計(jì)基礎(chǔ)知識(shí)》PPT課件.ppt_第2頁(yè)
《程序設(shè)計(jì)基礎(chǔ)知識(shí)》PPT課件.ppt_第3頁(yè)
《程序設(shè)計(jì)基礎(chǔ)知識(shí)》PPT課件.ppt_第4頁(yè)
《程序設(shè)計(jì)基礎(chǔ)知識(shí)》PPT課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩89頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言程序設(shè)計(jì),計(jì)算機(jī)學(xué)院軟件工程教研室,預(yù)備知識(shí)與參考書,計(jì)算機(jī)文化基礎(chǔ) 參考書 C語(yǔ)言程序設(shè)計(jì) 清華大學(xué)出版社 譚浩強(qiáng)編 C語(yǔ)言程序設(shè)計(jì)教程習(xí)題與上機(jī)指導(dǎo) 北京理工大學(xué)出版社 王樹武編 最好的參考資料是網(wǎng)絡(luò)資料!,本課程總的教學(xué)要求,教學(xué)內(nèi)容: 理論講解+上機(jī)實(shí)踐,使學(xué)生了解面向過(guò)程程序設(shè)計(jì)的思想,掌握基本的程序設(shè)計(jì)方法(三種程序設(shè)計(jì)結(jié)構(gòu))。 教學(xué)目標(biāo): 掌握C語(yǔ)言的基本語(yǔ)法和規(guī)定 掌握程序設(shè)計(jì)基本算法和思路 提高上機(jī)操作能力 培養(yǎng)自學(xué)能力,開拓思路 養(yǎng)成良好的程序設(shè)計(jì)習(xí)慣,如何學(xué),要求: 課堂學(xué)和課下學(xué)并重。出席并認(rèn)真聽每節(jié)課,完成作業(yè)和參加上機(jī)實(shí)習(xí)。 如何學(xué): 以課堂為主,重視課下自學(xué)

2、。重視開始,掌握主線和學(xué)習(xí)方法,強(qiáng)調(diào)實(shí)踐,閱讀參考書,多動(dòng)手編程。有問(wèn)題要及時(shí)解決。 目標(biāo): 1.通過(guò)考試; 2.掌握C語(yǔ)言的的基本知識(shí),精通C語(yǔ)言程序設(shè)計(jì); 3.了解不同的程序設(shè)計(jì)方法的基本概念,學(xué)習(xí)過(guò)程中可能出現(xiàn)的問(wèn)題,注重理論學(xué)習(xí),忽視上機(jī)編程實(shí)踐 入門時(shí)自以為難度大,產(chǎn)生畏難情緒 太注重學(xué)習(xí)語(yǔ)句的語(yǔ)法規(guī)定,忽視了對(duì)編程的思路和方法的訓(xùn)練 急于求成,總想編寫綜合性的程序,忽視基本概念,忽視基本功的訓(xùn)練和練習(xí),學(xué)習(xí)方法,認(rèn)真聽講,積極思考,提高上課效率; 上機(jī)編程是學(xué)好C語(yǔ)言的關(guān)鍵環(huán)節(jié),多上機(jī),多練習(xí),提高動(dòng)手能力; 加強(qiáng)交流,多討論,多請(qǐng)教,多提問(wèn),及時(shí)答疑解惑; 開闊眼界,打開思路,多

3、看幾本參考書; 初學(xué)時(shí)重點(diǎn)是掌握C語(yǔ)言的語(yǔ)法和規(guī)定; 后期應(yīng)重點(diǎn)掌握編程思路和基本算法。,要求,上課請(qǐng)不要遲到 課上不要影響其他同學(xué) 請(qǐng)按時(shí)交作業(yè) 上機(jī)要事先編好程序,提高上機(jī)效率 努力加強(qiáng)自學(xué),提高自學(xué)能力,考核與成績(jī)?cè)u(píng)定,考核性質(zhì):考試課,百分制 考試方法:閉卷、筆試 考試用時(shí):期末120分鐘 成績(jī)?cè)u(píng)定: 期末總評(píng)成績(jī)=平時(shí)成績(jī)* 20%(出勤成績(jī)*10%+作業(yè)成績(jī)*10%)+實(shí)驗(yàn)成績(jī)20%+卷面成績(jī)60% 補(bǔ)考方法: 期末總評(píng)成績(jī)低于60分的學(xué)生,須參加學(xué)校統(tǒng)一組織的補(bǔ)考。 補(bǔ)考總成績(jī)平時(shí)成績(jī)*20+補(bǔ)考卷面成績(jī)*80,課程結(jié)構(gòu)與課時(shí)安排:總共48學(xué)時(shí)(32+16),第1章:程序設(shè)計(jì)基礎(chǔ)

4、知識(shí) 2學(xué)時(shí) 第2章:C語(yǔ)言概述 2學(xué)時(shí) 第3章:數(shù)據(jù)類型與運(yùn)算規(guī)則 4學(xué)時(shí) 第4章:順序結(jié)構(gòu)的程序設(shè)計(jì)2學(xué)時(shí) 第5章:選擇結(jié)構(gòu)的程序設(shè)計(jì)2學(xué)時(shí) 第6章:循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)6學(xué)時(shí) 第7章:數(shù)組8學(xué)時(shí) 第8章:函數(shù)6學(xué)時(shí),第1章 程序設(shè)計(jì)基礎(chǔ)知識(shí),1.程序與程序語(yǔ)言 2.算法和算法的表示 3.結(jié)構(gòu)化程序設(shè)計(jì)方法,1.程序與程序語(yǔ)言 1.1 什么是計(jì)算機(jī) 1.2 什么是計(jì)算機(jī)程序 1.3 什么是計(jì)算機(jī)語(yǔ)言 1.4 C語(yǔ)言的發(fā)展及其特點(diǎn),目前的PC機(jī)可每秒執(zhí)行十億次加法 人用計(jì)算器一生也完不成PC機(jī)1秒鐘完成的計(jì)算量,1.1 什么是計(jì)算機(jī),硬件(hardware) 鍵盤、鼠標(biāo)、顯示器、硬盤、DVDs

5、、內(nèi)存、CPU 硬件成本下降很快 摩爾定律 每過(guò)18個(gè)月微芯片的集成度翻一番,而芯片價(jià)格保持不變 軟件(software) 運(yùn)行于計(jì)算機(jī)之上的程序(Program) 如何降低軟件開發(fā)成本?,1.1 什么是計(jì)算機(jī),計(jì)算機(jī)行業(yè)的夢(mèng)想,計(jì)算機(jī)行業(yè)的夢(mèng)想 與人自然交流,像人一樣地思考 人工智能(Artificial Intelligence) 圖靈測(cè)試 1950年,英國(guó)數(shù)學(xué)家A.M.Turing在思想(mind)雜志上發(fā)表“計(jì)算機(jī)與人工智能”一文,提出判定機(jī)器是否具有智能的測(cè)試方法,計(jì)算機(jī)行業(yè)的夢(mèng)想,博弈被認(rèn)為是智能活動(dòng),AI之初主要研究下棋程序 1997年,IBM公司研制的深藍(lán)超級(jí)計(jì)算機(jī)在一場(chǎng)“人機(jī)

6、大戰(zhàn)”中打敗了國(guó)際象棋大師卡斯帕羅夫 被譽(yù)為“人工智能的一大勝利” 世界排名第二的棋手印度人阿南得說(shuō): 這是一個(gè)像人的機(jī)器和一個(gè)像機(jī)器的人之間的戰(zhàn)斗 深藍(lán)的主要研制者之一許峰雄博士: 勝利靠的只是不知疲倦地高速運(yùn)算,并不是什么智能 深藍(lán)中輸入了近200萬(wàn)棋譜,1.2 什么是計(jì)算機(jī)程序,程序:一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令 只要讓計(jì)算機(jī)執(zhí)行這個(gè)程序,計(jì)算機(jī)就會(huì)自動(dòng)地、有條不紊地進(jìn)行工作 計(jì)算機(jī)的一切操作都是由程序控制的,離開程序,計(jì)算機(jī)將一事無(wú)成,編寫程序源代碼(Source Code)的人 程序員(Programmer) 計(jì)算機(jī)、程序員、程序之間的關(guān)系 如果計(jì)算機(jī)是樂(lè)隊(duì),那么程序員就是指揮家,程

7、序就是樂(lè)譜。 如果計(jì)算機(jī)是軍隊(duì),那么程序員就是總司令,程序就是作戰(zhàn)計(jì)劃。,1.2 什么是計(jì)算機(jī)程序,1.3 什么是計(jì)算機(jī)語(yǔ)言,計(jì)算機(jī)語(yǔ)言:人和計(jì)算機(jī)交流信息的、計(jì)算機(jī)和人都能識(shí)別的語(yǔ)言,1.3 什么是計(jì)算機(jī)語(yǔ)言,計(jì)算機(jī)語(yǔ)言發(fā)展階段: 機(jī)器語(yǔ)言(由0和1組成的指令) 符號(hào)語(yǔ)言(用英文字母和數(shù)字表示指令) 高級(jí)語(yǔ)言(接近于人的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言) 面向過(guò)程的語(yǔ)言 (非結(jié)構(gòu)化的語(yǔ)言、結(jié)構(gòu)化語(yǔ)言) 面向?qū)ο蟮恼Z(yǔ)言,低級(jí)語(yǔ)言,很像廚師的菜譜,定義了執(zhí)行某個(gè)任務(wù)所需的步驟 但不幸和不同的是,你不能使用你自己的母語(yǔ)來(lái)寫Code,1.3 什么是計(jì)算機(jī)語(yǔ)言,計(jì)算機(jī)語(yǔ)言與自然語(yǔ)言比較,;,計(jì)算機(jī)能讀懂的語(yǔ)言 機(jī)器

8、語(yǔ)言(Machine Language) 由一系列二進(jìn)制0和1組成 機(jī)器語(yǔ)言編寫的1+1程序 低級(jí)語(yǔ)言,10111000 00000001 00000000 00000101 00000001 00000000,像不像天書?,1.3 什么是計(jì)算機(jī)語(yǔ)言,程序設(shè)計(jì)語(yǔ)言(programming language) BASIC語(yǔ)言編寫的1+1程序 C語(yǔ)言編寫的1+1程序 既不是英語(yǔ),也非機(jī)器語(yǔ)言 但更像英語(yǔ) 高級(jí)語(yǔ)言 比寫機(jī)器語(yǔ)言程序容易,但比使用英語(yǔ)難,PRINT 1+1,結(jié)果顯示在屏幕上,#include main() printf(%dn, 1+1); ,1.3 什么是計(jì)算機(jī)語(yǔ)言,怎樣讓計(jì)算機(jī)讀

9、懂高級(jí)語(yǔ)言?,編譯器(Compiler) 把源代碼轉(zhuǎn)換為可被計(jì)算機(jī)理解的機(jī)器代碼 把機(jī)器代碼以可執(zhí)行文件(Executable File)的形式保存在磁盤上 一種程序設(shè)計(jì)語(yǔ)言對(duì)應(yīng)一種編譯器,程序員按照該語(yǔ)言的語(yǔ)法編寫程序源代碼 把自己的意圖寫入源代碼中 編譯器讀入源代碼 把程序員的意圖轉(zhuǎn)換成可執(zhí)行程序,供他人使用,C語(yǔ)言,可執(zhí)行程序,編譯器,怎樣讓計(jì)算機(jī)讀懂高級(jí)語(yǔ)言?,程序設(shè)計(jì)語(yǔ)言是人與計(jì)算機(jī)進(jìn)行交流的語(yǔ)言 有很多種,分別適合做不同的事情 現(xiàn)在人還只能主動(dòng)學(xué)計(jì)算機(jī)的語(yǔ)言 做不到計(jì)算機(jī)學(xué)會(huì)人的語(yǔ)言 當(dāng)計(jì)算機(jī)懂了人的自然語(yǔ)言,就幾乎不再需要編程,想讓計(jì)算機(jī)干什么,盡管對(duì)著它說(shuō)好了,那時(shí)程序員可能也

10、就失業(yè)了。,怎樣讓計(jì)算機(jī)讀懂高級(jí)語(yǔ)言?,程序是如何運(yùn)行的?,計(jì)算機(jī)把機(jī)器代碼讀入到內(nèi)存(Memory) 由CPU運(yùn)行這些代碼 讀取輸入(Input) 產(chǎn)生輸出(Output) 完成程序員預(yù)定的功能 計(jì)算機(jī)專業(yè)后續(xù)課程 計(jì)算機(jī)原理 編譯原理 操作系統(tǒng),程序開發(fā)步驟,分析 設(shè)計(jì) 編碼 鏈接 編譯 編輯 運(yùn)行 調(diào)試,計(jì)算機(jī)為什么用二進(jìn)制呢?,為什么不用我們?nèi)粘J煜さ氖M(jìn)制呢? 二進(jìn)制在在電器元件中容易實(shí)現(xiàn) 計(jì)算機(jī)進(jìn)行二進(jìn)制運(yùn)算比進(jìn)行十進(jìn)制運(yùn)算簡(jiǎn)單 1946年,馮.諾伊曼在計(jì)算機(jī)中引入二進(jìn)制,提出著名的馮.諾伊曼結(jié)構(gòu),至今仍被采用,被譽(yù)為“計(jì)算機(jī)之父”,“馮諾依曼機(jī)”結(jié)構(gòu),大腦,記憶裝置,眼睛和耳朵,

11、計(jì)算機(jī)語(yǔ)言的發(fā)展,機(jī)器語(yǔ)言,匯編語(yǔ)言,高級(jí)語(yǔ)言,面向過(guò)程,面向?qū)ο?智能語(yǔ)言,第四代語(yǔ)言,CPU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成 如:10000000 加 10010000 減,用助記符號(hào)描述的指令系統(tǒng) 如 ADD A, B,面向機(jī)器的語(yǔ)言,程序設(shè)計(jì)是數(shù)據(jù)被加工的過(guò)程,客觀世界可以分類,對(duì)象是類的實(shí)例對(duì)象是數(shù)據(jù)和方法的封裝 對(duì)象間通過(guò)發(fā)送和接受消息發(fā)生聯(lián)系,程序設(shè)計(jì)關(guān)鍵是定義類,并由類派生對(duì)象,告知計(jì)算做什么,無(wú)須告知怎么做,人工智能,接近自然語(yǔ)言,高級(jí)語(yǔ)言的魅力,易學(xué)、易用、易讀、易懂、強(qiáng)大、可移植 百家爭(zhēng)鳴,據(jù)不完全統(tǒng)計(jì)2500種,絕大多數(shù)是高級(jí)語(yǔ)言 http:/people.ku.

12、edu/nkinners/LangList/Extras/langlist.htm可看到其列表和簡(jiǎn)介 影響最大、壽命最長(zhǎng)的是C語(yǔ)言 程序設(shè)計(jì)語(yǔ)言數(shù)以千計(jì),能廣為流傳的不過(guò)幾十種,能夠風(fēng)光20年的更是屈指可數(shù),C程序設(shè)計(jì)語(yǔ)言,C語(yǔ)言被分類為高級(jí)語(yǔ)言,但實(shí)際上它是一種介于高級(jí)語(yǔ)言和低級(jí)語(yǔ)言之間的語(yǔ)言。 很多流行語(yǔ)言、新生語(yǔ)言都借鑒了它的思想、語(yǔ)法 從C+,到Java,再到C# 正確地學(xué)好C語(yǔ)言,是學(xué)習(xí)這些流行語(yǔ)言的基礎(chǔ)。,C程序設(shè)計(jì)語(yǔ)言的地盤,硬件(Hardware),操作系統(tǒng)(OS),應(yīng)用程序(Application),應(yīng)用平臺(tái),基于平臺(tái)的應(yīng)用程序,低級(jí)語(yǔ)言的地盤,高級(jí)語(yǔ)言的地盤,C語(yǔ)言的地盤,

13、1.4 C語(yǔ)言的發(fā)展及其特點(diǎn),C語(yǔ)言是國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)語(yǔ)言。 C語(yǔ)言的發(fā)展:,BCPL語(yǔ)言,B語(yǔ)言,C語(yǔ)言,精練、接近硬件,但 過(guò)于簡(jiǎn)單, 無(wú)數(shù)據(jù)類型,具有多種數(shù)據(jù)類型,2.算法和算法的表示 2.1 什么是算法 2.2 簡(jiǎn)單的算法舉例 2.3 算法的特性 2.4 怎樣表示一個(gè)算法,一個(gè)程序主要包括以下兩方面的信息: (1) 對(duì)數(shù)據(jù)的描述。在程序中要指定用到哪些數(shù)據(jù)以及這些數(shù)據(jù)的類型和數(shù)據(jù)的組織形式 這就是數(shù)據(jù)結(jié)構(gòu)(data structure) (2) 對(duì)操作的描述。即要求計(jì)算機(jī)進(jìn)行操作的步驟 也就是算法(algorithm),程序設(shè)計(jì),數(shù)據(jù)是操作的對(duì)象 操作的目的是對(duì)數(shù)據(jù)進(jìn)行加工處

14、理,以得到期望的結(jié)果 著名計(jì)算機(jī)科學(xué)家沃思(Nikiklaus Wirth)提出一個(gè)公式: 算法 + 數(shù)據(jù)結(jié)構(gòu) = 程序,程序設(shè)計(jì),一個(gè)程序除了算法和數(shù)據(jù)結(jié)構(gòu)這主要要素外,還應(yīng)當(dāng)采用結(jié)構(gòu)化程序設(shè)計(jì)方法進(jìn)行程序設(shè)計(jì),并且用某一種計(jì)算機(jī)語(yǔ)言表示 算法、數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)方法和語(yǔ)言工具是一個(gè)程序設(shè)計(jì)人員應(yīng)具備的知識(shí),程序設(shè)計(jì),算法是解決“做什么”和“怎么做”的問(wèn)題 程序中的操作語(yǔ)句,是算法的體現(xiàn) 不了解算法就談不上程序設(shè)計(jì),程序設(shè)計(jì),1.分析問(wèn)題,建立數(shù)學(xué)模型; 2.確定數(shù)據(jù)結(jié)構(gòu)和算法; 3.編制程序; 4.調(diào)試程序。,如何進(jìn)行程序設(shè)計(jì)?,2.1 什么是算法,廣義地說(shuō),為解決一個(gè)問(wèn)題而采取的方法和步

15、驟,就稱為“算法” 對(duì)同一個(gè)問(wèn)題,可以有不同的解題方法和步驟 為了有效地進(jìn)行解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇合適的算法,計(jì)算機(jī)算法可分為兩大類別: 數(shù)值運(yùn)算算法 非數(shù)值運(yùn)算算法 數(shù)值運(yùn)算的目的是求數(shù)值解 非數(shù)值運(yùn)算包括的面十分廣泛,最常見的是用于事務(wù)管理領(lǐng)域,2.1 什么是算法,2.2簡(jiǎn)單的算法舉例,例2.1 求12345 可以用最原始的方法進(jìn)行: 步驟1:先求1*2,得到結(jié)果2。 步驟2:將步驟1得到的乘積2再乘以3,得到結(jié)果6。 步驟3:將6再乘以4,得24。 步驟4:將24再乘以5,得120。這就是最后的結(jié)果。(X1000?),太繁瑣,改進(jìn)的算法: 設(shè)變量p為被乘數(shù)

16、變量i為乘數(shù) 用循環(huán)算法求結(jié)果,2.2簡(jiǎn)單的算法舉例,S1:使p=1,或?qū)懗?p S2:使i=2,或?qū)懗?i S3:使p與i相乘,乘積仍放在變量p中,可表示為:p*ip S4:使i的值加1,即i+1 i S5:如果i不大于5,返回重新執(zhí)行S3;否則,算法結(jié)束 最后得到p的值就是 5!的值,2.2簡(jiǎn)單的算法舉例,S1:使p=1,或?qū)懗?p S2:使i=2,或?qū)懗?i S3:使p與i相乘,乘積仍放在變量p中,可表示為:p*ip S4:使i的值加1,即i+1 i S5:如果i不大于5,返回重新執(zhí)行S3;否則,算法結(jié)束 最后得到p的值就是 5!的值 if i11返回S3?,若求1357911,3,3,

17、2,2,11,相當(dāng)于i 11,2.2簡(jiǎn)單的算法舉例,例2.2 有50個(gè)學(xué)生,要求將成績(jī)?cè)?0分以上的學(xué)生的學(xué)號(hào)和成績(jī)輸出。 用ni代表第i個(gè)學(xué)生學(xué)號(hào),gi表示第i個(gè)學(xué)生成績(jī) S1:1i S2:如果gi80, 則輸出ni和gi,否則不輸出 S3:i+1i S4:如果i50,返回到步驟S2,繼續(xù)執(zhí)行,否則,算法結(jié)束,例2.3 判定20002500年中的每一年是否閏年,并將結(jié)果輸出。 閏年的條件: (1)能被4整除,但不能被100整除的年份都是閏年,如2008、2012、2048年 (2)能被400整除的年份是閏年,如2000年 不符合這兩個(gè)條件的年份不是閏年 例如2009、2100年,設(shè)year為

18、被檢測(cè)的年份。算法表示如下: S1:2000year S2:若year不能被4整除,則輸出year 的值和“不是閏年”。然后轉(zhuǎn)到S6 S3:若year能被4整除,不能被100整除,則輸出year的值和“是閏年”。然后轉(zhuǎn)到S6 S4:若year能被400整除,則輸出year的值和“是閏年” ,然后轉(zhuǎn)到S6 S5: 其他情況輸出year的值和“不是閏年” S6:year+1year S7:當(dāng)year2500時(shí),轉(zhuǎn)S2,否則停止,year不能被4整除,非閏年,year被4整除,但不能被100整除,閏年,year被100整除,又能被400整除,閏年,其他,非閏年,逐漸縮小判斷的范圍,例2.4 給出一個(gè)

19、大于或等于3的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。 所謂素?cái)?shù)(prime),是指除了1和該數(shù)本身之外,不能被其他任何整數(shù)整除的數(shù) 例如,13是素?cái)?shù),因?yàn)樗荒鼙?,3,4,12整除。,判斷一個(gè)數(shù)n(n3)是否素?cái)?shù):將n作為被除數(shù),將2到(n-1)各個(gè)整數(shù)先后作為除數(shù),如果都不能被整除,則n為素?cái)?shù) S1:輸入n的值 S2:i=2 (i作為除數(shù)) S3:n被i除,得余數(shù)r S4:如果r=0,表示n能被i整除,則輸出n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5 S5:i+1i S6:如果in-1,返回S3;否則輸出n “是素?cái)?shù)”,然后結(jié)束。,可改為n/2,2.3算法的特性,一個(gè)有效算法應(yīng)該具有以下特點(diǎn): (1)

20、 有窮性。一個(gè)算法應(yīng)包含有限的操作步驟,而不能是無(wú)限的。 (2) 確定性。算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的、模棱兩可的。,一個(gè)有效算法應(yīng)該具有以下特點(diǎn): (3) 有零個(gè)或多個(gè)輸入。所謂輸入是指在執(zhí)行算法時(shí)需要從外界取得必要的信息。 (4) 有一個(gè)或多個(gè)輸出。算法的目的是為了求解,“解” 就是輸出。 沒(méi)有輸出的算法是沒(méi)有意義的。 (5) 有效性。算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。,2.3算法的特性,2.3 算法的特性,對(duì)于一般最終用戶來(lái)說(shuō): 他們并不需要在處理每一個(gè)問(wèn)題時(shí)都要自己設(shè)計(jì)算法和編寫程序 可以使用別人已設(shè)計(jì)好的現(xiàn)成算法和程序 只需根據(jù)已知算法的要

21、求給予必要的輸入,就能得到輸出的結(jié)果,輸入3個(gè)數(shù),黑箱子,3個(gè)數(shù)中最大數(shù),求3個(gè)數(shù)的最大數(shù),2.4怎樣表示一個(gè)算法,常用的方法有: 自然語(yǔ)言 傳統(tǒng)流程圖 結(jié)構(gòu)化流程圖 偽代碼 ,2.4.1 用自然語(yǔ)言表示算法,2.2節(jié)介紹的算法是用自然語(yǔ)言表示的 用自然語(yǔ)言表示通俗易懂,但文字冗長(zhǎng),容易出現(xiàn)歧義性 用自然語(yǔ)言描述包含分支和循環(huán)的算法,不很方便 除了很簡(jiǎn)單的問(wèn)題外,一般不用自然語(yǔ)言,2.4.2用流程圖表示算法,流程圖是用一些圖框來(lái)表示各種操作 用圖形表示算法,直觀形象,易于理解,起止框,輸入輸出框,處理框,判斷框,流程線,連接點(diǎn),注釋框,x0,Y,N,一個(gè)入口,兩個(gè)出口,2.4.2用流程圖表示算

22、法,流程圖是用一些圖框來(lái)表示各種操作 用圖形表示算法,直觀形象,易于理解,起止框,輸入輸出框,處理框,判斷框,流程線,連接點(diǎn),注釋框,位置不夠,防止交叉,例2.6 將例2.1的算法用流程圖表示。 求12345 如果需要將最后結(jié)果輸出:,1t,i5,開始,2i,t*it,i+1i,結(jié)束,N,Y,例2.6 將例2.1的算法用流程圖表示。 求12345 如果需要將最后結(jié)果輸出:,1t,輸出t,i5,開始,2i,t*it,i+1i,結(jié)束,N,Y,例2.7 例2.2的算法用流程圖表示。有50個(gè)學(xué)生,要求將成績(jī)?cè)?0分以上的學(xué)生的學(xué)號(hào)和成績(jī)輸出。,1i,i50,開始,i+1i,結(jié)束,N,Y,輸入ni、gi

23、,1i,開始,gi80,輸出ni、gi,i+1i,i50,N,Y,Y,N,如果包括輸入數(shù)據(jù)部分,1i,i50,開始,i+1i,結(jié)束,N,Y,輸入ni、gi,1i,gi80,輸出ni、gi,i+1i,i50,N,Y,Y,N,如果包括輸入數(shù)據(jù)部分,例2.8 例2.3判定閏年的算法用流程圖表示。判定20002500年中的每一年是否閏年,將結(jié)果輸出。,N,Y,N,Y,Y,N,Y,N,例2.9 例2.4判斷素?cái)?shù)的算法用流程圖表示。對(duì)一個(gè)大于或等于3的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。,N,Y,2i,n%ir,i+1i,Y,N,通過(guò)以上幾個(gè)例子可以看出流程圖是表示算法的較好的工具 一個(gè)流程圖包括以下幾部分:

24、(1) 表示相應(yīng)操作的框 (2) 帶箭頭的流程線 (3) 框內(nèi)外必要的文字說(shuō)明 流程線不要忘記畫箭頭,否則難以判定各框的執(zhí)行次序,2.4.3 三種基本結(jié)構(gòu)和改進(jìn)的流程圖,1.傳統(tǒng)流程圖的弊端 傳統(tǒng)的流程圖用流程線指出各框的執(zhí)行順序,對(duì)流程線的使用沒(méi)有嚴(yán)格限制 使用者可以毫不受限制地使流程隨意地轉(zhuǎn)來(lái)轉(zhuǎn)去,使人難以理解算法的邏輯,2.4.3 三種基本結(jié)構(gòu)和改進(jìn)的流程圖,2.三種基本結(jié)構(gòu) (1) 順序結(jié)構(gòu),A,B,2.4.3 三種基本結(jié)構(gòu)和改進(jìn)的流程圖,2.三種基本結(jié)構(gòu) (2) 選擇結(jié)構(gòu),A,B,Y,N,A,Y,N,2.4.3 三種基本結(jié)構(gòu)和改進(jìn)的流程圖,2.三種基本結(jié)構(gòu) (3) 循環(huán)結(jié)構(gòu) 當(dāng)型循環(huán)

25、結(jié)構(gòu),A,Y,N,Y,N,0 x,x+1x,輸出1,2,3,4,5,2.4.3 三種基本結(jié)構(gòu)和改進(jìn)的流程圖,2.三種基本結(jié)構(gòu) (3) 循環(huán)結(jié)構(gòu) 直到型循環(huán)結(jié)構(gòu),A,Y,N,Y,N,0 x,x+1x,輸出1,2,3,4,5,以上三種基本結(jié)構(gòu),有以下共同特點(diǎn): (1) 只有一個(gè)入口 (2) 只有一個(gè)出口 一個(gè)判斷框有兩個(gè)出口 一個(gè)選擇結(jié)構(gòu)只有一個(gè)出口 (3) 結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到。也就是說(shuō),對(duì)每一個(gè)框來(lái)說(shuō),都應(yīng)當(dāng)有一條從入口到出口的路徑通過(guò)它 (4) 結(jié)構(gòu)內(nèi)不存在“死循環(huán)”,由三種基本結(jié)構(gòu)派生出來(lái)的結(jié)構(gòu):,A,N,Y,B,根據(jù)表達(dá)式p 的值進(jìn)行選擇,A,B,p=p1,p=p2,M,N,

26、p=pm,p=pn,2.4.4 用N-S流程圖表示算法,N-S流程圖用以下的流程圖符號(hào):,順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu) (當(dāng)型),循環(huán)結(jié)構(gòu)(直到型),例2.10將例2.1的求5!算法用N-S圖表示。,直到i5,1t,輸出t,2i,t*it,i+1i,例2.11 將例2.2的算法用N-S圖表示。將50名學(xué)生中成績(jī)高于80分者的學(xué)號(hào)和成績(jī)輸出。,直到i50,1t,1i,i+1i,輸入ni、gi,i+1i,直到i50,gi80,否,是,輸出ni,gi,例2.12 將例2.3判定閏年的算法用N-S圖表示,直到y(tǒng)ear2500,2000year,year+1year,否,是,year%4為0,否,是,輸出 year 非閏年,year%100不為0,year%400為0,是,否,輸出year 非閏年,輸出year 閏年,輸出 year 閏年,例2.13 將例2.4判別素?cái)?shù)的算法用N-S流程圖表示。 例2.9的流程圖不是由三種基本結(jié)構(gòu)組成的 循環(huán)有兩

溫馨提示

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

評(píng)論

0/150

提交評(píng)論