回顾:(程扇的结构 开始 #include #include void main( 编辑 源程序 子函数声明与变量定义 编译K 执行语句; 有 有错? 目标程序 无 返回值类型函数名1(参数表) 连接 执行 库函数 变量定义与函数声明 目标程序 和其他目 执行语句组 f. exe 执行 标程序 返回值类型函数名n(参数表 不正确 结果 变量定义与函数声明 正确 执行语句组 结束 结束上页下页末页节
结束 上页 下页 末页 节 #include #include void main( ) { 子函数声明与变量定义 执行语句; …; } 返回值类型 函数名1(参数表) { 变量定义与函数声明 执行语句组 }……. 返回值类型 函数名n(参数表) { 变量定义与函数声明 执行语句组 }
如何编程解决题? 简单的题目可直接根据问题写出程序,如习题 1.5;复杂问题需要先理清解题思路、描述清解题步 骤,之后根据步骤编程,如习题1.6 解决问题的具体方法和步骤称为算法 结束上页下页末页节
结束 上页 下页 末页 节 简单的题目可直接根据问题写出程序,如习题 1.5;复杂问题需要先理清解题思路、描述清解题步 骤,之后根据步骤编程,如习题1.6 解决问题的具体方法和步骤称为算法
第二章程府的灵魂一算选 算法的概念 法的炸性 单算法举例 ●算法的表示方法 ●结构化程序设计方法 结束上页下页末页节
结束 上页 下页 末页 节 ⚫ 算法的概念 ⚫ 算法的特性 ⚫ 简单算法举例 ⚫ 算法的表示方法 ⚫ 结构化程序设计方法
§2-1算法的概念 程序应该包含哪些内容? ≯算法:对操作的描述,确定对数据进行操作的步骤 数据结构:对数据的描述,确定数据的类型以及组织形式 沃斯程序=数据结构十算法 程序设计数据结袍十算法十设计方法十无具 结束上页下页末页节
结束 上页 下页 末页 节 §2-1算法的概念 ➢算法:对操作的描述,确定对数据进行操作的步骤 ➢数据结构:对数据的描述,确定数据的类型以及组织形式 程序设计=数据结构+算法+设计方法+工具 沃斯:程序=数据结构+算法 程序应该包含哪些内容?
52-2简单算法举例 i+1计数器 变量-存储空间 例1求1×2×3×4变量值-存储数值 p=px累乘器 方法(开始) 5x累加器 方法二 0 p×5→ 输出p p×2→p 输出p 结束 p×1→p p×3→p 结束 p×4→→1 结束上页下页末页节
结束 上页 下页 末页 节 §2-2 简单算法举例 例1 求12345,即5 方法一: 方法二: i=i+1 计数器 p=p*x 累乘器 t=t+x 累加器 变量--存储空间 变量值--存储数值 开始 1 p i=2 pi p i+1i i<=5 1 1 输出 p 结束 Y 1 p 开始 p×2p p3p p4p 1 1 p5p 输出p 结束
§2-2简单算法举例 流程图符号 起止框 判断框 处理框 输入输出框 注释框 流向线 连接点 结束上页下页末页节
结束 上页 下页 末页 节 §2-2 简单算法举例 流程图符号 起止框 判断框 处理框 输入/输出框 注释框 流向线 连接点
§2-2简单算法举例 例2:50个学生,输出成绩80分以上者。m表学号,g表成绩 自然语言表示 开始 流程图 sl:1→i S2:若g≥80则输出 n和gi,否则不输出 80 S3:i+1→i S4:若还50,返回S2 输出gi 继续执行;否则,算 法结束 +1=>i 结束 结束上页下页末页节
结束 上页 下页 末页 节 §2-2 简单算法举例 例2:50个学生,输出成绩80分以上者。ni表学号,gi表成绩 自然语言表示: 流程图: S1:1i S2:若gi 80则输出 ni和gi,否则不输出 S3:i+1 i S4: 若 i 50, 返回S2 继续执行;否则,算 法结束 开始 i=1 gi>=80 输出gi i+1=>i i>50 结束 Y N N
§2-2简单算法举例 例4:求1-1/2+1/3-1/4+..+1/99-1/100(不同与书) 自然语言表示 流程图:练习 sl:deno=1(1)思路清晰 S2: sum =1 (2)见名知意 S3: sign =1 S4: sign =(-1)sign S5: deno =deno+l s6:term=sign*(1/deno)/注意整除* S7: sum =sum+term s8:若deno<100返回S4;否则算法 结束 结束上页下页末页节
结束 上页 下页 末页 节 §2-2 简单算法举例 自然语言表示: S1:deno = 1 S2:sum = 1 S3:sign = 1 S4: sign =(-1)*sign S5: deno =deno+1 S6: term =sign*(1/deno) /*注意整除*/ S7: sum =sum+term S8: 若deno<100返回S4;否则算法 结束 例4:求1-1/2+1/3-1/4+...+1/99-1/100 (不同与书) (1)思路清晰 (2)见名知意 流程图:练习
§2-2简单算法举例 例5:判断某大于等于3的自然数是否素数 自然语言表示: 流程图:练习 S1:输入n 2 S3: r=n%i S4:若r=0,输出n非素数, 算法结束;否则转下一步; S5:i=i+1; S6:若i=n-1则返回S;否 则输出是素数,算法结東 注:s6中可改为i<= sgrt(m 结束上页下页末页节
结束 上页 下页 末页 节 §2-2 简单算法举例 例5:判断某大于等于3的自然数是否素数 自然语言表示: S1:输入n S2:i = 2 S3:r= n%i S4: 若r=0,输出n非素数, 算法结束;否则转下一步; S5: i=i+1; S6: 若i<=n-1则返回S3;否 则输出是素数,算法结束 注:s6中可改为i<=sqrt(n) 流程图:练习
§2-4算法的表示 1、自然语言:易歧义,适于非常简单的问题 2、流程图:直观形象,但由于箭头的使用没有限 制,算法复杂时难以阅读和修改,被称为BS(a bowl of spaghetti算法 3、三种基本结构与改进的流程图:限制箭头的滥用, 不允许流程的随意转向,为此提出了三种基本结构, 他们各自只有一个入口和出口 结束上页下页末页节
结束 上页 下页 末页 节 §2-4 算法的表示 1、自然语言:易歧义,适于非常简单的问题 2、流程图: 直观形象,但由于箭头的使用没有限 制,算法复杂时难以阅读和修改,被称为BS(a bowl of spaghetti)算法 3、三种基本结构与改进的流程图:限制箭头的滥用, 不允许流程的随意转向,为此提出了三种基本结构, 他们各自只有一个入口和出口