




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VisualBasic程序設(shè)計(jì)
第八講
補(bǔ)充內(nèi)容:算法
2011-7-101
2011-7-10>12
一、算法的概念
要利用計(jì)算機(jī)處理問題,需要編寫出使計(jì)
算機(jī)按人們意愿工作的程序。而程序?qū)嵸|(zhì)上就
是一組計(jì)算機(jī)指令。每一條指令使計(jì)算機(jī)執(zhí)行
特定的操作。因此,每個(gè)學(xué)習(xí)計(jì)算機(jī)知識(shí)以及
希望利用計(jì)算機(jī)進(jìn)行某項(xiàng)工作的人都應(yīng)學(xué)習(xí)如
何進(jìn)行程序設(shè)計(jì)。
為了有效地進(jìn)行程序設(shè)計(jì),應(yīng)當(dāng)至少具有
兩方面的知識(shí)。即:
1、掌握一門高級(jí)語言的語法規(guī)則;
2、掌握解題的方法和步驟一算法。
有了正確有效的算法,可以利用任何一種
計(jì)算機(jī)高級(jí)語言編寫程序。
1、什么是算法
?為解決一個(gè)問題而采用的方法和步驟稱為算法。
做任何事情都有一定方法和步驟,例如,打
太極拳有描述太極拳動(dòng)作的圖解,它是“太極拳
的算法”。解決某一問題的計(jì)算機(jī)算法,應(yīng)該是
一系列的操作步驟。
A對(duì)同一個(gè)問題,可以有不同的算法,但算法有優(yōu)
劣之分,有的算法步驟少,有的算法步驟多。我
們希望得到方法正確,步驟少的算法。
A算法語言只是一種工具,為實(shí)際問題設(shè)計(jì)算法才
是程序設(shè)計(jì)的核心。
A因此,為了有效地進(jìn)行解題,不僅需要保證算法
正確,還要考慮算法的質(zhì)量,選擇合適的算法。
2011-7-104
2、算法的特點(diǎn)
A有窮性。一個(gè)算法應(yīng)包含有限的操作步驟,不能
出現(xiàn)死循環(huán)。
?確定性。算法中的每一個(gè)操作步驟都應(yīng)當(dāng)是確定
的,而不應(yīng)當(dāng)是含糊不清的。
A可以沒有輸入,也可以有多個(gè)輸入。執(zhí)行算法有
時(shí)需要從外界得到信息,這時(shí)必須有輸入語句。
A有一個(gè)或多個(gè)輸出。算法的目的是為了求解,
“解”一定要通過輸出,才能看到結(jié)果。
A有效性。算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效的執(zhí)
行。并得到確定的結(jié)果。
2011-7-105
口算法常用的幾種表示方法
A用傳統(tǒng)流程表示算法
A用N?S結(jié)構(gòu)化流程表示算法
A用偽代碼表示算法
2011-7-106
二、算法常用的幾種表示方法
1、用傳統(tǒng)流程圖表示算法
?傳統(tǒng)流程圖常用的符號(hào)
-起止框[]
-輸入輸出框//
-判斷框
-處理框
-流程線
-連接點(diǎn)
-注釋框
2011-7-107
1、用傳統(tǒng)流程圖表示算法
一傳統(tǒng)流程圖表示算法的三種結(jié)構(gòu)
?順序結(jié)構(gòu)
?分支結(jié)構(gòu)
2011-7-10
8
1、用傳統(tǒng)流程圖表示算法
—傳統(tǒng)流程圖表示算法的幾種結(jié)構(gòu)
■循環(huán)結(jié)構(gòu)
-當(dāng)型循環(huán)
-直到型循環(huán)
Y
終端語句的下一語句佟端語句的下一語句
當(dāng)型循環(huán)||直到型循環(huán)
2011-7.
1、用傳統(tǒng)流程圖表示算法
例1用流程圖表示求5!的算法
解:該問題是求從1到5的連乘積,用變量
T來存放被乘數(shù);用變量I來存放乘數(shù)其值
從1到5,使用公式:T=T*I,用循環(huán)結(jié)構(gòu)來設(shè)
計(jì)算法。變量T既存放被乘數(shù)又存放乘積。
變量T初值設(shè)為1,變量I初值為2每循
環(huán)一次,就把它乘到T上,然后變量I再增
加1,直到變量I的值大于5,循環(huán)就結(jié)束。
此時(shí)變量T的值就是所求的值。
流程圖如圖4“(見下頁)
2011-7-1010
圖4-1
用變量T存
放乘積,用
變量I代表
第二個(gè)乘
數(shù)J從2變
到5。
1、用傳統(tǒng)流程圖表示算法
例2用流程圖表示判斷2000年~2500年是
否閏年的算法。
解:閏年的條件是:
?能被4整除,但不能被100整除的年份都是
閏年;
?能被100整除,又能被400整除的年份是閏
年。
2011-7-1012
?由于要判斷2000?2500年哪年是否閏年,
所以該問題須用循環(huán)結(jié)構(gòu)來設(shè)計(jì)。
?用變量Y表示年份,變量Y的初值賦為
2000,然后判斷是否滿足閏年給出的條件。
滿足條件的,打印是閏年,不滿足條件的,
打印非閏年。
?判斷完后,變量Y加1,再繼續(xù)判斷,直
到變量Y的值大于2500。流程圖見圖4-2
(轉(zhuǎn)下頁)
2011-7-1013
1、用傳統(tǒng)流程圖表示算法
例3用傳統(tǒng)流程圖表示判斷N是否為素?cái)?shù)的算法。
解:所謂素?cái)?shù),是指除1和它本身之外,不能被其它
任何整數(shù)整除的數(shù)。例如:13是一個(gè)素?cái)?shù)。
判斷某個(gè)數(shù)N(N大于等于3)是否為素?cái)?shù)的方
法是渭N作為被除數(shù),用2至U(N?1)各個(gè)整數(shù)輪流
作除數(shù),如果都不能被整除,則N為素?cái)?shù)。
實(shí)際上,N不必被2到(N?1)的整數(shù)除,只需
被2到N/2間整數(shù)除即可,甚至只需被2到K之間
的整數(shù)除即可。流程圖見圖4?3
2011-7-1015
圖4-3
判斷N是否為素
數(shù)??捎米兞縄
去除N,I從2變
到而,用變量
R來存放余數(shù)!
/打印N
“不是素?cái)?shù)
1,
16
1、用傳統(tǒng)流程表示算法
-一傳統(tǒng)流程的弊端
?可讀性差。由于算法中允許使用流程線
讓程序轉(zhuǎn)來轉(zhuǎn)去,從而使流程圖變得毫
無規(guī)律,讀起來要化很大的精力。也使
人難以理解算法的邏輯。
?算法的可靠性和可維護(hù)性差。流程線的
使用使算法變成一團(tuán)亂麻,毫無規(guī)律,
使其可靠性和可維護(hù)性差,因而因此流
程圖中必須限制箭頭的使用。
2011-7-1017
出口出口
2011-7-1018
?循環(huán)結(jié)構(gòu)
入口
出口
2011-7-10
1、用傳統(tǒng)流程圖表示算法
一三種基本結(jié)構(gòu)的特點(diǎn)
?只有一個(gè)入口。
?只有一個(gè)出口。
?結(jié)構(gòu)中每一部分都有機(jī)會(huì)被執(zhí)行。
?結(jié)構(gòu)中不存在“死循環(huán)”。
2011-7-1020
2、用N?S結(jié)構(gòu)流程圖表示算法
?流程符號(hào):
□順序結(jié)構(gòu)
?:?先執(zhí)行A框,
再執(zhí)行B框。
口選擇結(jié)構(gòu)
?:?當(dāng)條件P成立時(shí)執(zhí)行A操作。
?:?當(dāng)條件P不成立時(shí)執(zhí)行B操作。
2011-7-1021
2、用N-S結(jié)構(gòu)流程圖表示算法
□.循環(huán)結(jié)構(gòu)
?:?當(dāng)型循環(huán):當(dāng)P1
?當(dāng)P1條件成立時(shí),
反復(fù)執(zhí)行A操作A
?當(dāng)P1條件不成立時(shí),
不再執(zhí)行A操作
?:?直到型循環(huán):
?反復(fù)執(zhí)行A操作,
A
?直到P2條件成
立時(shí)。退出循環(huán)。
直到P2
2011-7-1022
2、用N?S結(jié)構(gòu)流程圖表示算法
■舉例
圖4-4
例1、將50名學(xué)生中成
績高于80分的學(xué)生的i=>i
學(xué)號(hào)和成績打印出來。輸入電Gi
解:N-S結(jié)構(gòu)化_______i+I琦i
i>50
流程圖如圖4-4:
其中:
全量i用來統(tǒng)計(jì)學(xué)生
人數(shù)。
變量Ni,Gi用來表示
學(xué)生的學(xué)號(hào)和分?jǐn)?shù)。
i>50
2011-7-10
2、用N-S結(jié)構(gòu)流程圖表示算法
-舉例
1111
例2用N-S圖表示求[———I—-—H-
的算法。23……99100
解:本例是求多項(xiàng)式的利,用變量sum存放累加
和,由于每項(xiàng)中的符號(hào)不一樣,須用一個(gè)變量
sign來薦放符號(hào);用變量term來吞放某一項(xiàng)。
用變量deno來存放某一項(xiàng)的分母。算法開始,
將變量sum和sign賦值為1,然后分別求sign
和deno得到某一項(xiàng)的值,接著加到和土,毒
求另一項(xiàng)的值,再加到和上,直到deno大于100.
流程圖如圖4-5所示:
2011-7-1024
1=>sum
2二》dexto
圖4-5
1=>sign
用變量sum
存放和,用(-1)*sign=>sign
變量deno存
sign*(1/derto)二)term
放分母,用
Sign存放符
號(hào)用term存sum+term=>sum
放每一項(xiàng)。
deno+l=>deno
deno>100
sum
2011-7-10ZJ
2、用N?S結(jié)構(gòu)流程圖表示算法
--舉例
例3用N?S結(jié)構(gòu)化流程圖表示判斷2000
年~2500年是否閏年的算法。
(見下頁圖4-6)
2011-7-1026
2011-7-10
例4用N?S結(jié)構(gòu)化流程圖表示判斷N是
否為素?cái)?shù)的算法。(見下頁圖4-7)
為了使程序能符合結(jié)構(gòu)化程序設(shè)計(jì),
這里設(shè)計(jì)了一個(gè)開關(guān)W,使初值為0,若N
能被某一個(gè)整數(shù)整除,則使W值為1,否則
W值不變。最后根據(jù)W的值來確定N是否
為素?cái)?shù),若W值為0,則N為素?cái)?shù),否則N
為非素?cái)?shù)。
2011-7-1028
圖4-7
這里設(shè)計(jì)
了一個(gè)開關(guān)w,
使初值為0,
若N能被某一
個(gè)整數(shù)整除,
則使W值為1,
否則W值不變。
2011-7-10
3、用偽代碼表示算法
■一什么是偽代碼
偽代碼是用介于自然語言和計(jì)算機(jī)
語言之間的文字和符號(hào)來描述算法。它
如同一篇文章一樣,自下而上地寫下來。
每一行(或幾行)表示一個(gè)基本操作。
它不用圖形符號(hào),因此書寫方便、格式
緊湊,易學(xué)好懂,便于修改,也便于向
計(jì)算機(jī)語言(即程序)過渡。
2011-7-1030
3、用偽代碼表示算法
偽代碼表示算法的幾種結(jié)構(gòu)
?分支選擇結(jié)構(gòu)
IF(條件)THEN
語句組1
ELSE
語句組2
ENDIF
?循環(huán)結(jié)構(gòu)
DOWHILE(條件)
循環(huán)體
2?!昂驨DDO31
3、用偽代碼表示算法
-一舉例
例1.用偽代碼設(shè)計(jì)算法判斷N是否為素?cái)?shù)。
解:判斷某個(gè)數(shù)N是否為素?cái)?shù)的方法是潸N作為被
除數(shù),用2到仄各個(gè)整數(shù)輪流作除數(shù),如果
都不能被整除,則N為素?cái)?shù)。
為了使程序能符合結(jié)構(gòu)化程序設(shè)計(jì),這里設(shè)計(jì)
了一個(gè)開關(guān)W,使初值為0,若N能被某一個(gè)整
數(shù)整除,則使W值為1,否則W值不變。最后
根據(jù)W的值來確定N是否為素?cái)?shù),若W值為0,
則N為素?cái)?shù),否則N為非素?cái)?shù)。
2011-7-10
Y<A>1設(shè)
3、用偽代碼表示算法
-一舉例
解:用偽代碼設(shè)計(jì)算法如下:
BEGIN(算法開始)
inputN
0=>W
2=>l
DOWHILEI<4NANDW=0
N/l余數(shù)=>R
IFR=0THEN1=>W
ELSEl+1=>l(轉(zhuǎn)下頁)
2011-7-1033
ENDIF
ENDDO
IFW=0THENp?rintN,“是素
數(shù)”
ELSEprintN,“不是素?cái)?shù)”
ENDIF
END(算法結(jié)束)衿
2011-7-1034
3用偽代碼表示算法
一一舉例
例2用偽代碼設(shè)計(jì)算法用下面公式求sinx的值。
X4?-1X4/7+1
sinx=x--------1--------——+...-----------------1--------------
3!5!7!(4〃一1)!(4〃+1)!
解:
該多項(xiàng)式可以寫成下列形式:
3572n-1
?XXX1X
sinx=x--------1--------------\~...+(—1).
3!5!7!(2〃—1)!
2011-7-1035
該問題是求多項(xiàng)式的和。
?用變量SUM來存放和,初值賦為X。
?用變量S來存放符號(hào),初值賦為1。
?用變量D來存放每一項(xiàng)的分母,初值賦為L
?用變量T來存放每一項(xiàng)的分子,初值賦為1。
?用變量TERM來存放每一項(xiàng)。
?用變量K控制內(nèi)循環(huán)次數(shù),初值賦為1。
?用變量i控制外循環(huán)次數(shù),初值賦為2。
算法使用了雙重循環(huán),外層循環(huán)用來求
出每一項(xiàng),并把它加到和上。內(nèi)循環(huán)是分別
求出每一項(xiàng)的分子和分母。
2011-7-1036
求第I項(xiàng)的程序段為:i從2變化到N
內(nèi)循環(huán)是分別求出第i項(xiàng)的分子和分母。
WHILEK<2*i-1DO
D=D*K一D用來存放分母(2*i?1)!
T=T*X一T用來存放分子(X)⑵⑴
K=K+1
ENDDO
用下列算法求第i項(xiàng)的值:
S=(-1)*S
TERM=S*T/D
把求出第i項(xiàng)加到和中
SUM=SUM+TERM
完整的算法如下頁所示:
2011-7-1037
解:用偽代碼設(shè)計(jì)算法如下:
法一.BEGIN(算法開始)
輸入N,X
X=>SUM
1=>S
2=>i
WHILEi<NDO
D=1
T=1
K=1
WHILEK<2*i-1DO
D=D*K
T=T*X
K=K+1
ENDDO
2011-7-1038
S=(-1)*S
TERM=S*T/D
SUM=SUM+TERM
1=1+1
ENDDO
PRINTSUM
END(算法結(jié)束)
2011-7-10
法二:
BEGIN(算法開始)/-----------------------\
輸入X,N當(dāng)當(dāng)2時(shí),D=2*3
X=>SUM當(dāng)1=4時(shí),D=4*5
X=>TERM當(dāng)1=6時(shí),0=6*7
T=X**2當(dāng)1=8時(shí),D=8*9
i=2
D=1
DOWHILEi<=2*N-1
D=i*(i+1)
TERM=TREM*T/D
TERM=TERM*(-1)
SUM=SUM+TERM
i=i+2
ENDDO
PRINTSUM
END(算法結(jié)束)
2011-7-10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度帶車司機(jī)勞務(wù)合同與車輛智能監(jiān)控系統(tǒng)協(xié)議
- 2025年度高新技術(shù)企業(yè)單位試用期勞動(dòng)合同
- 二零二五年度美容店客戶資源及經(jīng)營權(quán)益轉(zhuǎn)讓合同
- 2025年度鋪面出租與商業(yè)品牌提升合同
- 人工智能與趨勢(shì)分析的結(jié)合
- 二零二五年度單位訂餐質(zhì)量保證與提升協(xié)議
- 二零二五年度城市規(guī)劃中相鄰宅基地邊界調(diào)整合同
- 二零二五年度房屋拆遷補(bǔ)償安置及安置房產(chǎn)權(quán)拍賣協(xié)議書
- 2025年度荒山承包經(jīng)營權(quán)轉(zhuǎn)讓與林業(yè)產(chǎn)業(yè)發(fā)展規(guī)劃合同
- 二零二五年度企業(yè)員工出差住宿補(bǔ)貼及費(fèi)用結(jié)算協(xié)議書
- CSCCP宮頸細(xì)胞病理學(xué)理論考試題
- 臨床試驗(yàn)嚴(yán)重不良事件報(bào)告表(SAE)
- 統(tǒng)編版五年級(jí)語文下冊(cè)第二單元習(xí)作:寫讀后感課件
- 2023年9月新《醫(yī)療器械分類目錄》-自2023年8月1日起施行
- 使用磷化鋁進(jìn)行常規(guī)熏蒸作業(yè)
- 天然氣培訓(xùn)課件
- 教學(xué)課件:《新能源材料技術(shù)》朱繼平
- 人教版部編七年級(jí)下冊(cè)語文必背古詩文言文
- 2022年七年級(jí)初一數(shù)學(xué)希望杯競賽模擬真題含答案27屆
- 自動(dòng)駕駛數(shù)據(jù)安全白皮書
- 工期定額-民用建筑
評(píng)論
0/150
提交評(píng)論