《第1讲程序和程序设计算法结构化程序设计方法.ppt》由会员分享,可在线阅读,更多相关《第1讲程序和程序设计算法结构化程序设计方法.ppt(26页珍藏版)》请在优知文库上搜索。
1、第1讲程序和程序设计 算法、结构化程序设计方法 第一章 程序设计基本概念1.1 程序与程序设计1. 机器语言 例如某种类型的计算机规定以例如某种类型的计算机规定以“10000000”10000000”表示一个表示一个“加法加法”操作,以操作,以“10010000”10010000”表示一个表示一个“减法减法”操作。操作。2. 汇编语言如用如用“ADD”ADD”表示加法操作,用表示加法操作,用“SUB”SUB”表示减法操作。表示减法操作。3. 高级语言4. 程序运行过程5. 语言处理语言处理程序一般可分为:程序程序程序这三种类型5. 语言处理语言处理(续)6. 程序设计基本原则7.用计算机解决问
2、题的基本步骤1.2 算法有穷性有穷性确定性确定性有效性有效性有零个或多个输入有零个或多个输入有一个或多个输出有一个或多个输出1 1简单算法举例简单算法举例算法分析:算法分析:(1 1)手工计算步骤为:)手工计算步骤为: 求求x1x1与与x2x2的和,得到两个数之和;的和,得到两个数之和; 将上一步的和与将上一步的和与x3x3相加,得到三个数之和;相加,得到三个数之和; 将上一步的和与将上一步的和与x4x4相加,得到四个数之和;相加,得到四个数之和; 将上一步的和与将上一步的和与x5x5相加,得到五个数之和。相加,得到五个数之和。从手工计算过程中可知:其运算方法类似于用算盘计算该题从手工计算过程
3、中可知:其运算方法类似于用算盘计算该题的过程,每次仅求出两个数之和,其中一个加数为上一步所的过程,每次仅求出两个数之和,其中一个加数为上一步所得的结果,另一加数为多项式中的一项,重复这个过程,直得的结果,另一加数为多项式中的一项,重复这个过程,直到加到最后一项为此。到加到最后一项为此。 该算法能更加简洁地表达上述解题过程,并具有通用性。该算法能更加简洁地表达上述解题过程,并具有通用性。先定义几个变量:设置变量先定义几个变量:设置变量s s表示多项式之和,其初值为零;表示多项式之和,其初值为零;设置变量设置变量a a表示多项式中的一项,它的值可以为表示多项式中的一项,它的值可以为x1x1,x2x
4、2,x5x5;用;用i i记录被加了几次,其初值为记录被加了几次,其初值为1 1。解题步骤为:。解题步骤为: s s 0 0; i i 1 1; a a xi xi; (使(使a a等于多项式中的第等于多项式中的第i i项)项) s s s+a s+a; (求和,并将结果保留在(求和,并将结果保留在s s中)中) i i i+1 i+1; (计数增值)(计数增值) 若若i 5i 5,则重复,则重复、各步;否则,计算结束;各步;否则,计算结束; 输出输出s s。 (2)适合计算机处理的算法。2. 算法描述传统流程图常用的符号传统流程图常用的符号例1.2 输入一个整数,将它倒过来输出n用自然语言描
5、述: 输入一个整数送给x; 求x除以10的余数,结果送给d,并输出d ; 求x除以10的整数商,结果送给x; 重复 ,步,直到x变为零时终止。n用伪代码描述: 输入一个整数送x; while(x 0)do d=x%10; 输出d; x=x/10; 定义变量X输入一个数给Xx0?d=x%10;输出d;x=x/10;程序结束否是例1.3 求出这求出这100100个数的累加和、最大值和最小值个数的累加和、最大值和最小值试用传统流程图描述解决试用传统流程图描述解决这个问题的算法。这个问题的算法。ABCABC1.3 结构化程序设计方法1. 三种基本结构n(1)只有一个入口。n(2)只有一个出口。n(3)
6、结构内的每一部分都有机会被执行到。n(4)结构内不存在“死循环”(无终止的循环)。处理1处理2(a) 顺序结构顺序结构条件处理(c) 循环结构循环结构满足不满足条件处理1处理2(b) 选择结构选择结构满足不满足2. NS流程图处理1处理2(a) 顺序结构顺序结构条件处理1 处理2成立不成立(b) 选择结构选择结构当条件成立时处理直到条件成立为止处理(c) 循环结构循环结构例1.4 从键盘输入一个整数,判别该数是否为素数从键盘输入一个整数,判别该数是否为素数 素数,也称为质素数,也称为质数,是指只能被数,是指只能被1 1及及其自身整除且大于其自身整除且大于1 1的正整数,如的正整数,如2 2、3 3、5 5、7 7等都是素数。等都是素数。用用N-SN-S流程图描述解流程图描述解决这个问题的算法决这个问题的算法如图如图1.111.11所示。所示。 例1.5 编程打印出35000之间的所有质数。 分析:我们采用自上向下、逐步细化的方法来处理这分析:我们采用自上向下、逐步细化的方法来处理这个问题。即先把这个问题分解为二个相对较小的问题:个问题。即先把这个问题分解为二个相对较小的问题: 判别某数判别某数i i是否为质数;是否为质数; 利用循环判别利用循环判别3 350005000之间的所有的数是否为质数,若之间的所有的数是否为质数,若是就把它打印出来;是就把它打印出来;End