1、第2章 程序设计与算法,2.1 程序的基本组成:输入、处理与输出,2.1.1 计算机解题示例 例:根据三角形的三个边长求面积。 输入:三条边a、b和c 处理: 判断能否围成三角形,若能则计算面积S 输出:面积S的值 例:求一元二次方程的根。ax2+bx+c=0 输入:系数a、b和c 处理: b2-4ac0:求x1、x2 b2-4ac=0:求x1 输出:两个不同的根或相等的根,2.1 程序的基本组成:输入、处理与输出,2.1.2 程序设计的一般步骤: 分析 设计 选择与创建界面 编码 测试与调试 完成文档,2.2 算法与编程工具,算法的定义: 算法是解决某个问题或处理某个事件的方法和步骤。 算法
2、的分类: 数值计算算法 非数值计算算法 同一问题可有各种不同算法 评价算法好坏: 是否正确 运行效率 占用资源,算法示例2-1 求两个自然数的最大公约数,欧几里德算法 S1. 输入两个自然数M、N S2. 求M除以N的余数R S3. 使M=N,即用N代替M S4. 使N=R,即用R代替N S5. 若R0,则重复S2、S3、S4,否则转S6 S6. 输出M,算法示例2-2 在N个字符中查找某字符S是否存在,S1. 输入N、S S2. 使I=1,用于计数 S3. 读取第I个字符X S4. 若X=S,输出“找到S”后结束,否则转S5 S5. 使I=I+1 S6. 若I=N,则重复S3、S4、S5,否
3、则转S7 S7. 输出“找不到S”后结束,算法的特征、描述和结构,算法特征 确定性 可行性 有穷性 输入性 输出性,算法描述 自然语言 代码符号 流程图,算法结构 顺序结构 分支结构 循环结构,P15习题2-1,S1:输入x、y S2:使 t=x,即x的值赋给t S3:使 x=y,即y的值赋给x S4:使 y=t,即t的值赋给y S5:输出x、y,1. 设x与y是同一类型变量,设计一个算法,把x与y中的数据相互交换。,P15习题2-2,S1:输入变量a,b,c的值 S2:若ab,则转S3;否则ab、ba再转S3 S3:若ac,则转S4,否则转S5 S4:若bc,则转S6,否则bc、cb再转S6
4、 S5: ca、ab、bc S6:输出变量a,b,c的值,2. 设a、b、c是同一类型变量,并分别被赋予不同大小的数据,设计一个算法,使得执行的结果为abc。,P15习题2-3,S1: 输入正整数N S2: 使k=2 S3: 若k=N-1,则转S4,否则转S6 S4: 若N除以k的余数为0,则转S6,否则转S5 S5: 使k=k+1,转S3 S6: 若k= N-1,则输出“不是素数”,否则输出“是素数”,3. 设计一个可以判断某数是否是素数的算法。,P15习题2-4,S1: 输入正整数N,并转换成字符串S S2: 使k=1 S3: 若kch2,则转S7,否则转S6 S6: 使k=k+1,转S3 S7: 若k= S长度的一半,则输出“不是回文”,否则输出“是回文”,4. 设计一个判断某正整数是否是回文数的算法。,P15习题2-5,S1:输入a S2:使k=1 S3:若k=a,转S4,否则转S7 S4:若a除以k的余数为0,则转S5,否则转S6 S5:输出因子k,转S6 S6:使k=k+1,转S3 S7:程序结束,5. 设计一个算法,求出给定的自然数a的所有因子,