第二章算法一程序的灵魂 ●程序的几个要素 ●算法的概念 ●简单算法举例 ●算法的特性 ●算法的表示 ●结构化程序设计方法 ●算法的实现
第二章 算法—程序的灵魂 ⚫ 程序的几个要素 ⚫ 算法的概念 ⚫ 简单算法举例 ⚫ 算法的特性 ⚫ 算法的表示 ⚫ 结构化程序设计方法 ⚫ 算法的实现
程序的几个要素 程序=算法+数据结构+程序设计方法+语言工 具和环境 算法是灵魂,对操作的描述 程序语句是算法的体现 数据结构是加工对象,即对数据的描述 语言是工具 编程需要采用合适的方法--结构化的程序设计
程序的几个要素 ⚫ 程序=算法+数据结构+程序设计方法+语言工 具和环境 • 算法是灵魂,对操作的描述 程序语句是算法的体现 • 数据结构是加工对象,即对数据的描述 • 语言是工具 • 编程需要采用合适的方法----结构化的程序设计 方法
算法的概念 ●广义的算法 做任何事情的步骤都可叫做算法 ●计算机算法(能执行的) 数值运算的算法(根、定积分) 非数值运算的算法(图书检索、人 事管理)
算法的概念 ⚫广义的算法 做任何事情的步骤都可叫做算法 ⚫计算机算法(能执行的) • 数值运算的算法(根、定积分) • 非数值运算的算法(图书检索、人 事管理)
例一:求5! step1: p=1 step2: i=2 step3: p=px i step4: i=i+1 step5:如果≤5则返回Step3,否 则结束
例一:求5! step1: p=1 step2: i=2 step3: p=p x i step4: i=i+1 step5: 如果i≤5则返回Step3,否 则结束
例二:将50个学生中成绩在80分以上者 打印出来 用n1代表第个学生的 用g代表第个学生的成绩 S1:j=1 S2:g≥80则打印n;和g,否则不打印 s3:i=i+1 s4:若i≤50,返回S2,否则结束
例二:将50个学生中成绩在80分以上者 打印出来 用ni代表第i个学生的学号 用gi代表第i个学生的成绩 S1: i=1 S2: gi≥80则打印ni和gi,否则不打印 S3: i=i+1 S4: 若i≤50,返回S2,否则结束
例三:判2000~2500年某年是否为闰年 s1:y=2000 S2:若y/4的余数为0且y/100的余数不为0,则输 出y是闰年,转S5 s3:若(y/4的余数为0且)y/400的余数为0,则 输出y是闰年,转S5 S4:输出y不是闰年 S5:y=y+1 S6:当y≤2500时,转S2,若y≥2500结束
例三: 判2000~2500年某年是否为闰年 S1: y=2000 S2: 若y/4的余数为0且y/100的余数不为0 ,则输 出y是闰年,转S5 S3: 若(y/4的余数为0且)y/400的余数为0 ,则 输出y是闰年,转S5 S4: 输出y不是闰年 S5: y=y+1 S6: 当y≤2500时,转S2,若y≥2500结束
1例四:求1-1+ 十一十...十 2345 Oo 100 S1: sign=1 S2: sum=1 s3: deno=2 S4: sign =(-1)x sign S5: term=sign x(1/deno) S6:sum=sum+term S7: deno=deno+1 s8:若deno≤100返回S4;否则结束
◼例四:求 S1: sign=1 S2: sum=1 S3: deno=2 S4: sign=(-1) x sign S5: term=sign x(1/deno) S6: sum=sum+term S7: deno=deno+1 S8: 若deno≤100返回S4;否则结束 100 1 99 1 .... 5 1 4 1 3 1 2 1 1− + − + + + −
例五:判断一个大于或等于3的整数是否 为素数 S1:输入n s2:i=2 S3:n/i的余数送r S4:若r=0,则打印n不是素数”,算 法结束,否则继续 s5:i=i+1 S6:若i≤n-1,返回S3;否则打印n是素 数”,结束
例五:判断一个大于或等于3的整数是否 为素数 S1: 输入n S2: i=2 S3: n/i的余数送r S4: 若r=0,则打印n “不是素数”,算 法结束,否则继续 S5: i=i+1 S6: 若i≤n-1,返回S3;否则打印n“是素 数”,结束
算法的特性 有穷性 包含有限个操作步骤 ●确定性 含义是唯一的,不应当产生“歧义性” ●有零或多个输入 ●有一个或多个输出 ●有效性 每步有确定的结果,如例四分母不能为零
算法的特性 ⚫有穷性 包含有限个操作步骤 ⚫确定性 含义是唯一的,不应当产生“歧义性” ⚫有零或多个输入 ⚫有一个或多个输出 ⚫有效性 每步有确定的结果,如例四分母不能为零
算法的表示 ●用自然语言表示 所谓自然语言即人们日常使用的语言,可以 是汉语、英语或其他语言。 优点:通俗易懂,容易掌握。 缺点:容易出现歧义性,且表达的算法与计算 机的具体高级语言形式差距较大,通常在很简单 的问题中使用
算法的表示 ⚫ 用自然语言表示 所谓自然语言即人们日常使用的语言,可以 是汉语、英语或其他语言。 优点:通俗易懂,容易掌握。 缺点:容易出现歧义性,且表达的算法与计算 机的具体高级语言形式差距较大,通常在很简单 的问题中使用