第2章 程序的灵魂——算法 2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5结构化程序设计方法 习题
2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法 习题 第2章 程序的灵魂——算法
2.1算法的概念 从事各种工作和活动,都必须事先想好进行的步骤, 然后按部就班地进行,才能避免产生错乱。 不要认为只有“计算”的问题才有算法。广义地说, 为解决一个问题而采取的方法和步骤,就称为 “算法”。 对同一个问题,可以有不同的解题方法和步骤。方 法有优劣之分。有的方法只需进行很少的步骤, 而有些方法则需要较多的步骤。一般说,希望采 用简单的和运算步骤少的方法。因此,为了有效 地进行解题,不仅需要保证算法正确,还要考虑 算法的质量,选择合适的算法
2.1 算 法 的 概 念 从事各种工作和活动,都必须事先想好进行的步骤, 然后按部就班地进行,才能避免产生错乱。 不要认为只有“计算”的问题才有算法。广义地说, 为解决一个问题而采取的方法和步骤,就称为 “算法”。 对同一个问题,可以有不同的解题方法和步骤。方 法有优劣之分。有的方法只需进行很少的步骤, 而有些方法则需要较多的步骤。一般说,希望采 用简单的和运算步骤少的方法。因此 ,为了有效 地进行解题,不仅需要保证算法正确,还要考虑 算法的质量,选择合适的算法
2.2简单算法举例 例2.3判定2000一2500年中的每一年是否闰年,将结 果输出。 闰年的条件是:①能被4整除,但不能被100整除的 年份都是闰年,如1996年,2004年是闰年;②能 被100整除,又能被400整除的年份是闰年。如 1600年、2000年是闰年。不符合这两个条件的年 份不是闰年。 算法可表示如下: 设y为被检测的年份。可采取以下步骤: S1:2000=>y S2:y不能被4整除,则输出y“不是闰年”。然后转 到S6
例2.3 判定2000—2500年中的每一年是否闰年,将结 果输出。 闰年的条件是: ①能被4整除,但不能被100整除的 年份都是闰年,如1996年,2004年是闰年;②能 被100整除,又能被400整除的年份是闰年。如 1600年、2000年是闰年。不符合这两个条件的年 份不是闰年。 算法可表示如下: 设y 为被检测的年份。可采取以下步骤: S1:2000=>y S2: y不能被4整除,则输出y “不是闰年”。然后转 到S6 2.2 简单算法举例
S3:若y能被4整除,不能被100整除,则输出y“是 闰年”。然后转到S6 S4:若y能被100整除,又能被400整除,输出y“是闰 年”;否则输出“不是闰年”。然后转到S6 S5:输出y“不是闰年” S6:y+1=>y S7:当y≤2500时,转S2继续执行,如y>2500,算法 停止
S3:若y能被4整除,不能被100整除,则输出y “是 闰年”。然后转到S6 S4:若y能被100整除,又能被400整除,输出y“是闰 年”;否则输出“不是闰年”。 然后转到S6 S5:输出y “不是闰年” S6:y+1=>y S7:当y≤2500时,转S2继续执行,如y>2500,算法 停止
例2.4求1-1/2+1/3-1/4+.+1/99-1/100。 算法可以表示如下: S1:1=>sign S2:1=>sum S3:2=>deno S4:(-1)X sign=>sign S5:signX(1/deno)=>term S6:sum+term=>sum S7:deno+l=>deno S8:若deno≤100返回S4;否则算法结束
例2.4 求1-1/2+1/3-1/4+.+1/99-1/100。 算法可以表示如下: S1:1=>sign S2:1=>sum S3:2=>deno S4:(-1)×sign=>sign S5:sign×(1/deno)=>term S6:sum+term=>sum S7:deno+1=>deno S8:若deno≤100返回S4;否则算法结束