📄 sec2-1.htm
字号:
<p class=MsoNormal align=center style='margin-top:15.6pt;margin-right:0cm;
margin-bottom:15.6pt;margin-left:0cm;mso-para-margin-top:1.0gd;mso-para-margin-right:
0cm;mso-para-margin-bottom:1.0gd;mso-para-margin-left:0cm;text-align:center'><a
name="第2_1_1"><span lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:12.0pt;
mso-fareast-font-family:楷体_GB2312'>2.1.1</span></a><span style='mso-bookmark:
第2_1_1'></span><span lang=ZH-CN style='font-size:16.0pt;mso-bidi-font-size:
12.0pt;font-family:楷体_GB2312;mso-ascii-font-family:"Times New Roman";
color:red'>算法</span><b><span lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:
12.0pt;mso-fareast-font-family:楷体_GB2312'><o:p></o:p></span></b></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>计算机语言只是一种工具。光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法。有了正确而有效的算法,可以利用任何一种计算机高级语言编写程序,使计算机进行工作。因此,设计算法是程序设计的核心。</span><span
lang=EN-US style='mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>并非只有“计算”的问题才有算法。广义地说,为解决一个问题而采取的方法和步骤,称为“算法”。不要把“<span
style='color:fuchsia'>计算方法</span>”(</span><span lang=EN-US>computational method</span><span
lang=ZH-CN>)和“<span style='color:fuchsia'>算法</span>”(</span><span lang=EN-US>algorithm</span><span
lang=ZH-CN>)这两个词混淆。前者指的是求数值解的近似方法,后者是指解决问题的一步一步的过程。在解一个数值计算问题时,除了要选择合适的计算方法外,还要根据这个计算方法写出如何让计算机一步一步执行以求解的算法。对于计算机外行来说,他们可以只使用别人已设计好的现成算法,只需根据算法的要求给以必要的输入,就能得到输出的结果。对他们来说,算法如同一个“黑箱子”一样,他们可以不了解“黑箱子”中的结构,只是从外部特性上了解算法的作用,即可方便地使用算法。但对于程序设计人员来说,必须会设计算法,并且根据算法编写程序。</span><span
lang=EN-US style='mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>对同一个问题,可以有不同的解题方法和步骤。例如,求</span><span lang=EN-US>1+2+3+</span><span
lang=ZH-CN>…</span><span lang=EN-US>+100</span><span lang=ZH-CN>,可以先进行</span><span
lang=EN-US>1+2</span><span lang=ZH-CN>,再加</span><span lang=EN-US>3</span><span
lang=ZH-CN>,再加</span><span lang=EN-US>4</span><span lang=ZH-CN>,一直加到</span><span
lang=EN-US>100</span><span lang=ZH-CN>,也可采取</span><span lang=EN-US>100+(1+99)+(2+98)+</span><span
lang=ZH-CN>…</span><span lang=EN-US>+(49+51)+50</span><span lang=ZH-CN>=</span><span
lang=EN-US>100+50+49</span><span lang=ZH-CN>×</span><span lang=EN-US>100</span><span
lang=ZH-CN>=</span><span lang=EN-US>5050</span><span lang=ZH-CN>。还可以有其它的方法。当然,方法有优劣之分。有的方法只需进行很少的步骤,而有些方法则需要较多的步骤。一般说,希望采用方法简单,运算步骤少的方法。因此,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><!--[if gte vml 1]><v:shapetype id="_x0000_t202" coordsize="21600,21600"
o:spt="202" path="m,l,21600r21600,l21600,xe">
<v:stroke joinstyle="miter"/>
<v:path gradientshapeok="t" o:connecttype="rect"/>
</v:shapetype><v:shape id="_x0000_s1078" type="#_x0000_t202" style='position:absolute;
left:0;text-align:left;margin-left:1212.4pt;margin-top:0;width:127.2pt;
height:389.75pt;text-indent:0;z-index:1;mso-wrap-style:none;
mso-position-horizontal:right;mso-position-vertical:top;
mso-position-vertical-relative:line' o:allowoverlap="f" stroked="f">
<v:textbox style='layout-flow:vertical-ideographic;mso-next-textbox:#_x0000_s1078;
mso-fit-shape-to-text:t' inset="1mm,3mm,1mm,3mm">
<![if RotText]><![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal style='margin-top:15.6pt;margin-right:0cm;margin-bottom:
15.6pt;margin-left:0cm;mso-para-margin-top:1.0gd;mso-para-margin-right:
0cm;mso-para-margin-bottom:1.0gd;mso-para-margin-left:0cm'><span
lang=EN-US style='font-size:10.0pt;mso-fareast-font-family:PMingLiU;
mso-font-kerning:0pt;mso-fareast-language:ZH-TW'><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:87pt;
height:372.75pt'>
<v:imagedata src="Sec2-1.files/image004.wmz" o:title="" cropbottom="-476f"/>
</v:shape></span></p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]><![endif]></v:textbox>
<w:wrap type="square"/>
</v:shape><![endif]--><![if !RotText]><img width=173 height=523
src="Sec2-1.files/image006.gif" align=right hspace=12 alt="文本框: " v:shapes="_x0000_s1078"
class=shape v:dpi="96"><![endif]><span lang=ZH-CN>一个计算问题的解决过程通常包含下面几步</span><span
lang=EN-US>:</span></p>
<p class=MsoNormal style='margin-left:48.0pt;text-indent:-24.0pt;line-height:
17.0pt;mso-line-height-rule:exactly;mso-list:l0 level1 lfo2;tab-stops:list 48.0pt'><![if !supportLists]><span
lang=EN-US style='font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
Symbol;mso-bidi-font-family:Symbol;mso-font-kerning:0pt'><span
style='mso-list:Ignore'><img width=13 height=13 src="Sec2-1.files/image001.gif"
alt="*"><span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>确立所需解决的问题以及最后应达到的要求。必须保证在任务一开始就对它有详细而确切的了解,避免模棱两可和含混不清之处。</span><span
lang=EN-US style='font-size:12.0pt;mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:48.0pt;text-indent:-24.0pt;line-height:
17.0pt;mso-line-height-rule:exactly;mso-list:l2 level1 lfo4;tab-stops:list 48.0pt'><![if !supportLists]><span
lang=EN-US style='font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'><img
width=13 height=13 src="Sec2-1.files/image001.gif" alt="*"><span
style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>分析问题构造模型。在得到一个基本的物理模型后,用数学语言描述它,例如列出解题的数学公式或联立方程式,即建立数学模型。</span><span
lang=EN-US style='font-size:12.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:48.0pt;text-indent:-24.0pt;line-height:
17.0pt;mso-line-height-rule:exactly;mso-list:l2 level1 lfo4;tab-stops:list 48.0pt'><![if !supportLists]><span
lang=EN-US style='font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'><img
width=13 height=13 src="Sec2-1.files/image001.gif" alt="*"><span
style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>选择计算方法。如定积分求值问题,可以用矩形法、梯形法或辛普生法等不同的方法。因此用计算机解题应当先确定用哪一种方法来计算。专门有一门学科</span><span
lang=EN-US style='font-size:12.0pt'>“</span><span lang=ZH-CN style='font-size:
12.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>计算方法</span><span lang=EN-US style='font-size:12.0pt'>”</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>,就是研究用什么方法最有效、最近似地实现各种数值计算的,换句话说,计算方法是研究数值计算的近似方法的。</span><span
lang=EN-US style='font-size:12.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:48.0pt;text-indent:-24.0pt;line-height:
17.0pt;mso-line-height-rule:exactly;mso-list:l2 level1 lfo4;tab-stops:list 48.0pt'><![if !supportLists]><span
lang=EN-US style='font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'><img
width=13 height=13 src="Sec2-1.files/image001.gif" alt="*"><span
style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>确定算法和画流程图。在编写程序之前,应当整理好思路,设想好一步一步怎样运算或处理,即为</span><span
lang=EN-US style='font-size:12.0pt'>“</span><span lang=ZH-CN style='font-size:
12.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>算法</span><span lang=EN-US style='font-size:12.0pt'>”</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>。把它用框图画出来,用一个框表示要完成的一个或几个步骤,它表示工作的流程,称为流程图。它能使人们思路清楚,减少编写程序中的错误。</span><span
lang=EN-US style='font-size:12.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:48.0pt;text-indent:-24.0pt;line-height:
17.0pt;mso-line-height-rule:exactly;mso-list:l2 level1 lfo4;tab-stops:list 48.0pt'><![if !supportLists]><span
lang=EN-US style='font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'><img
width=13 height=13 src="Sec2-1.files/image001.gif" alt="*"><span
style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>编写程序。</span><span lang=EN-US style='font-size:12.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:48.0pt;text-indent:-24.0pt;line-height:
17.0pt;mso-line-height-rule:exactly;mso-list:l2 level1 lfo4;tab-stops:list 48.0pt'><![if !supportLists]><span
lang=EN-US style='font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'><img
width=13 height=13 src="Sec2-1.files/image001.gif" alt="*"><span
style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>程序调试,即试算。一个复杂的程序往往不是一次上机就能通过并得到正确的结果的,需要反复试算修改,才得到正确的可供正式运行的程序。</span><span
lang=EN-US style='font-size:12.0pt'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:48.0pt;text-indent:-24.0pt;line-height:
17.0pt;mso-line-height-rule:exactly;mso-list:l2 level1 lfo4;tab-stops:list 48.0pt'><![if !supportLists]><span
lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol'><span style='mso-list:Ignore'><img width=11 height=11
src="Sec2-1.files/image001.gif" alt="*"><span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>正式运行得到必要的运算结果。</span><span
lang=EN-US style='font-family:宋体'><o:p></o:p></span></p>
<p class=MsoNormal align=center style='margin-top:15.6pt;margin-right:0cm;
margin-bottom:15.6pt;margin-left:0cm;mso-para-margin-top:1.0gd;mso-para-margin-right:
0cm;mso-para-margin-bottom:1.0gd;mso-para-margin-left:0cm;text-align:center;
tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:12.0pt;mso-fareast-font-family:
楷体_GB2312'>2.1.2</span><span lang=ZH-CN style='font-size:16.0pt;mso-bidi-font-size:
12.0pt;font-family:楷体_GB2312;mso-ascii-font-family:"Times New Roman";
color:red'>流程图</span><span lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:
12.0pt;mso-fareast-font-family:楷体_GB2312;color:red'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>为了表示一个算法,可以用不同的方法。常用的有:自然语言;传统流程图;结构化流程图;伪代码;</span><span
lang=EN-US>PAD</span><span lang=ZH-CN>图等。这里我们主要介绍流程图。</span></p>
<p style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;
tab-stops:list 18.0pt'><a name="第2_1_2a"></a><![if !supportLists]><span
lang=EN-US style='font-family:宋体;mso-bidi-font-family:宋体;color:red'><span
style='mso-list:Ignore'>a)<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-family:宋体;
color:red'>传统流程图</span><span lang=EN-US style='font-family:宋体;color:red'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN style='mso-font-kerning:0pt'>用图表示的算法就是流程图。流程图是用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序。用图形表示算法,直观形象,易于理解。</span><span
lang=EN-US style='mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><!--[if gte vml 1]><v:shape id="_x0000_s1105" type="#_x0000_t202"
style='position:absolute;left:0;text-align:left;margin-left:1199.05pt;
margin-top:0;width:125pt;height:312.5pt;text-indent:0;z-index:2;
mso-position-horizontal:right;mso-position-vertical:top;
mso-position-vertical-relative:line' o:allowoverlap="f" stroked="f">
<v:textbox style='layout-flow:vertical-ideographic;mso-next-textbox:#_x0000_s1105'
inset="3mm,3mm,3mm,3mm">
<![if RotText]><![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;mso-font-kerning:
0pt'><v:shape id="_x0000_i1029" type="#_x0000_t75" style='width:93pt;
height:329.25pt' o:ole="">
<v:imagedata src="Sec2-1.files/image023.wmz" o:title=""/>
</v:shape><![if gte mso 9]><o:OLEObject Type="Embed" ProgID="Word.Picture.8"
ShapeID="_x0000_i1029" DrawAspect="Content" ObjectID="_1069676435">
</o:OLEObject>
<![endif]></span></p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]><![endif]></v:textbox>
<w:wrap type="square"/>
</v:shape><![endif]--><![if !RotText]><img width=171 height=420
src="Sec2-1.files/image024.gif" align=right hspace=12 alt="文本框: " v:shapes="_x0000_s1105"
class=shape v:dpi="96"><![endif]><span lang=ZH-CN style='mso-font-kerning:0pt'>美国国家标准化协会</span><span
lang=EN-US style='mso-font-kerning:0pt'>ANSI</span><span lang=ZH-CN
style='mso-font-kerning:0pt'>曾规定了一些常用的流程图符号,为世界各国程序工作者普遍采用。最常用的流程图符号见图。</span><span
lang=EN-US style='mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='margin-left:48.0pt;text-indent:-24.0pt;
mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-list:l5 level1 lfo8;tab-stops:45.8pt list 48.0pt left 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
mso-char-indent-size:0cm'><![if !supportLists]><span lang=EN-US
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;mso-font-kerning:0pt'><span style='mso-list:Ignore'><img width=13
height=13 src="Sec2-1.files/image002.gif" alt="*"><span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='color:#FF6600;
mso-font-kerning:0pt'>处理框</span><span lang=ZH-CN style='mso-font-kerning:0pt'>(矩形框),表示一般的处理功能。</span><span
lang=EN-US style='mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='margin-left:48.0pt;text-indent:-24.0pt;
mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-list:l6 level1 lfo10;tab-stops:45.8pt list 48.0pt left 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
mso-char-indent-size:0cm'><![if !supportLists]><span lang=EN-US
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;mso-font-kerning:0pt'><span style='mso-list:Ignore'><img width=13
height=13 src="Sec2-1.files/image002.gif" alt="*"><span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='color:#FF6600;
mso-font-kerning:0pt'>判断框</span><span lang=ZH-CN style='mso-font-kerning:0pt'>(菱形框),表示对一个给定的条件进行判断,根据给定的条件是否成立决定如何执行其后的操作。它有一个入口,二个出口。</span><span
lang=EN-US style='mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='margin-left:48.0pt;text-indent:-24.0pt;
mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-list:l6 level1 lfo10;tab-stops:45.8pt list 48.0pt left 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
mso-char-indent-size:0cm'><![if !supportLists]><span lang=EN-US
style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
Symbol;mso-font-kerning:0pt'><span style='mso-list:Ignore'><img width=13
height=13 src="Sec2-1.files/image002.gif" alt="*"><span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='color:#FF6600;
mso-font-kerning:0pt'>输入输出框</span><span lang=ZH-CN style='mso-font-kerning:
0pt'>(平行四边形框)。</span><span lang=EN-US style='mso-font-kerning:0pt'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='margin-left:48.0pt;text-indent:-24.0pt;
mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-list:l6 level1 lfo10;tab-stops:45.8pt list 48.0pt left 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -