《计算机应用基础》 第9章 程序设计基础(一).

Slides:



Advertisements
Similar presentations
3 的倍数特征 抢三十
Advertisements

数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
练一练: 在数轴上画出表示下列各数的点, 并指出这些点相互间的关系: -6 , 6 , -3 , 3 , -1.5, 1.5.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
第一章 C语言概述.
清仓处理 跳楼价 满200返160 5折酬宾.
第3章 简单算法设计 3.1 结构化程序的算法设计 3.2 结构化算法的性质及结构 3.3 结构化算法的描述方法 自然语言 流程图 伪码
1.1.3四种命题的相互关系 高二数学 选修2-1 第一章 常用逻辑用语.
常用逻辑用语复习课 李娟.
小学生游戏.
Oracle数据库 Oracle 子程序.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
C语言实验 第一课 标题:学号+姓名.
数学建模与MATLAB 第五讲:循环结构(1) 2017/9/12.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
计算机基础知识 丁家营镇九年制学校 徐中先.
第一章 如何用计算机解决问题 第二节 算法描述与设计.
第7章:文件共享 与远程控制——回顾 第8章:bash脚本编程 本章教学目标: 了解shell程序的基本结构 网络文件系统NFS的概念
学习前的准备工作 讲师:burning.
第13、14讲 程序设计基础.
SOA – Experiment 3: Web Services Composition Challenge
第5章 Visual Basic控制结构 郭清溥.
走进编程 程序的顺序结构(二).
第2讲 绪论(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第2章 算法—程序的灵魂.
第二章 Java语言基础.
动态规划(Dynamic Programming)
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第一章 函数与极限.
专题作业.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第8章 VBA程序设计基础.
顺序表的删除.
C语言程序设计 第二章 程序的灵魂 -- 算法.
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
VisComposer 2019/4/17.
特定消耗品說明 (指碳粉匣、墨水匣) 國立清華大學 保管組製作.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
C程序设计.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
《计算机应用基础》 第9章 程序设计基础(二).
第4章 Excel电子表格制作软件 4.4 函数(一).
定理21.9(可满足性定理)设A是P(Y)的协调子集,则存在P(Y)的解释域U和项解释,使得赋值函数v(A){1}。
第九节 赋值运算符和赋值表达式.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
3.16 枚举算法及其程序实现 ——数组的作用.
算法初步 §1.1.2 程序框图.
Chapter 18 使用GRASP的对象设计示例.
College of Computer Science & Technology
第4课时 绝对值.
1.2基本算法语句 1.2.3循环语句.
输入语句 输出语句 赋值语句 条件语句 循环语句
第二章 Java基本语法 讲师:复凡.
临界区问题的硬件指令解决方案 (Synchronization Hardware)
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
初三VB 复习一.
第二节 C语言的特点.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
鸡兔同笼(续) ——选择结构.
顺序结构程序设计 ——关于“字符串”和数值.
最小生成树 最优二叉树.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
Presentation transcript:

《计算机应用基础》 第9章 程序设计基础(一)

教学内容 程序设计相关概念 日常生活中的程序 计算机程序 程序设计过程 算法的概念 什么是算法 算法的表示 信息管理学院

1.日常生活中的程序 例如: 这些程序: 有目标, 有明确步骤, 有开始, 有结束 完成某项活动的一种既定方式和过程. 食谱——做菜的程序 选举全国人大代表程序 图书馆借书的程序 这些程序: 有目标, 有明确步骤, 有开始, 有结束 信息管理学院

红烧肉菜谱 准备: 烧热油,放两勺白糖和二两姜片(鲜姜一块切成)进去翻炒片刻 放入块状五花肉一道翻炒,直至颜色变黄,油也煸出不少 上好五花肉,沸水焯去污物,切麻将块大小 调料:白糖、姜片、油盐醋、丁香、胡萝卜 烧热油,放两勺白糖和二两姜片(鲜姜一块切成)进去翻炒片刻 放入块状五花肉一道翻炒,直至颜色变黄,油也煸出不少 加水至漫过肉块,加酱油少许、盐、二两中国醋、丁香四、五枚 起锅前十分钟加胡萝卜块 水收干后起锅 信息管理学院

2.计算机程序 计算机程序是为完成某个计算任务而设计的指令序列。 程序包含了任务中要处理的对象和处理规则。 计算任务: 指以计算机为处理工具的任务 数值计算 非数值计算(…) 程序包含了任务中要处理的对象和处理规则。 处理对象: 各类数据 —— (数据结构) 处理规则: 如何操作和加工数据 —— (算法) 算法的描述 程序的实现:计算机语言(即编程) 信息管理学院

3.程序设计 程序设计是以问题为目标,设计解决问题的方法与步骤,并通过某种语言,将机器指令组合在一起解决问题的过程。 分析问题 解决问题——设计 数据结构 算法 程序实现——编码与调试 信息管理学院

程序设计的基本步骤 否 是 有错误? 分析问题 编码 设计 调试 语言错误? 结束 修改 数据结构 算法 计算机语言 信息管理学院

确定x(i)使,x(i)≥x(j),j=1,2,…,N 在N个正整数:x(1),x(2),…,x(N)中 确定x(i)使,x(i)≥x(j),j=1,2,…,N 分析问题 将这N个数顺序存储 设计求最大值的算法 解决问题 编码 用C语言实现算法得到源程序 用C语言编译器编译和调试源程序 得到可执行文件 调试 信息管理学院

算法 4.什么是算法 算法特征 算法评价 5.算法的表示 自然语言表示 伪代码表示 流程图表示(ANSI流程图) 信息管理学院

简单说:计算机程序中为解决问题而采取的方法和步骤 ——称为“算法” 4.什么是算法(1) 程序的设计过程,核心问题是设计一个合理、有效的算法。 算法  程序的质量 一般认为,算法就是根据明确规定的运算规则,在在有限的时间内就可得出确切结果的有效运算步骤。 简单说:计算机程序中为解决问题而采取的方法和步骤 ——称为“算法” 信息管理学院

算法示例:求最大值 问题描述: 给定一正整数序列,求值最大者 12 8 13 9 11 ——表示存储空间 L 设计运算步骤如下 12 8 S2 S3 S4 S5 S1 Si表示第i步 L代表一个存储空间 被称为变量 信息管理学院

算法示例:求最大值 求最大值的过程—用语言描述 S2:设L=第一个数 S3:若第二个数比L大, 则设L=第二个数 信息管理学院

S1: 输入5个正整数,并按序编号为:1,2,3,4,5;准备变量L和P 算法示例:求最大值 求最大值过程—改进 S2:设L =0,P=1(P的值表示当前数的编号) S3:若当前数比L大, 则令L等于当前数 S4:如果P≤5则令P的值增大1,返回执行S3 ,否则继续执行下一步S5 S5: 输出L,程序结束。 S1: 输入5个正整数,并按序编号为:1,2,3,4,5;准备变量L和P 初始值比5个数都小 信息管理学院

算法示例:求最大值 求最大值过程—改进 12 8 13 9 11 P= 1 L= S2 3 S4 S4 4 5 S4 2 S4 12 L= … 5 12 8 13 9 11 P= 1 L= S2 3 S4 S4 4 5 S4 2 S4 12 L= S3 12 L= S3 13 L= S3 13 L= S3 13 L= S3 P<5 不成立 S4 输出L S5 信息管理学院

求最大值算法 从N个正整数中求最大值的算法: S1: 输入N个正整数,并按序编号:1,2,…,N S2:设L =0, 当前数位置P=1 S3:若当前数比L大, 则设L=当前数 S4:若p <N, 则P 值增大1, 返回执行S3;否则输出L,程序结束。 P指示了当前数在列表中的序号 信息管理学院

4.什么是算法(2) 算法的5个特性: (1)有穷性(finiteness),即解题步骤是有限的,无穷的步骤意味问题无解。 (2)确定性(definiteness),每一解题步骤都是明确的,无二义性。 (3)有效性(effectiveness),每一步骤都是可行的,可实现的。 (4)有输入(input)。有明确的输入。但输入有多种形式 (5)有输出(output)。有明确的输出结果。输出有多种形式 信息管理学院

4.什么是算法 .vs. 算法的评价 首要是正确性 时间效率 空间效率 时间复杂度 空间复杂度 指运算消耗的时间(时间复杂度) 运行过程中占用的存储空间(空间复杂度) .vs. 时间复杂度 空间复杂度 信息管理学院

5.算法的表示: 自然语言 伪代码 流程图: ANSI流程图 N-S图 为便于理解算法, 需要有效的算法描述手段 信息管理学院

算法描述示例——自然语言 自然语言就是用人们日常生活中使用的文字符号和语言习惯来描述算法 从N个正整数中求最大值的算法: S1: 输入N个正整数x(1),x(2),…,x(N) S2:设L =0, 当前数序号P=1 S3:若x(P)比L大, 则设L=x(P) S4:若p <N, 则P 值增大1, 返回执行S3;否则输出L,程序结束。 信息管理学院

算法描述示例——从N个正整数中寻找最大值的算法 类C伪代码 input N postive integer to x(1),x(2),…,x(N) L =0 p =1 if x(p)>L then L=x(p) if p<N, then p=p+1, goto 4 else print L 伪代码:介于自然语言和编程语言之间的算法描述语言,目的是用以编程语言的风格描述算法。但伪代码与具体编程语言无关,也没有统一标准。 信息管理学院

算法描述示例——从N个正整数中寻找最大值的算法 F S1 S2 P<N PP+1 Print L S3 T start stop 以特定的图形符号加上说明,表示算法的图,称为程序流程图 程序 流程图 S1: 输入N个正整数,并按序编号:1,2,…,N S2:设L =0, 当前数位置P=1 S3:若当前数比L大, 则设L=当前数 S4:若p <N, 则P 值增大1, 返回执行S3;否则输出L,程序结束。 信息管理学院

N个正整数中求最大值的通用算法 完整的程序流程图 开始 L=0, P=1 L<X(P)? 是 否 L=X(P) P<N 是 输入x(1),x(2), …,x(N) L=0, P=1 完整的程序流程图 L<X(P)? 是 否 L=X(P) P<N 是 P=P+1 否 输出L 信息管理学院 结束

算法的表示—ANSI流程图 流程图是人们对解决问题的方法、思路或算法的一种描述。 程序流程图的优点: (a)采用简单规范的符号,画法简单; (b)结构清晰,逻辑性强; (c)便于描述,容易理解。 信息管理学院

ANSI流程图-基本构件 起止框:表示程序的开始或结束 处理框:表示对数据进行赋值或加工 输入/输出框:表示数据输入、输出操作 判断框 起止框:表示程序的开始或结束 处理框:表示对数据进行赋值或加工 输入/输出框:表示数据输入、输出操作 过程:表示该部分是一个过程 判断框:表示根据条件决定程序走向 连接点:表示图标之间相互连接关系 箭头:表示程序流向 信息管理学院

ANSI流程图:流程控制基本结构 结构化程序设计观点: 三种基本结构: 自顶向下、逐步求精 使用三种基本控制结构可以构造任意程序 顺序结构 分支结构 单分支、多重分支 循环结构 当型循环结构、直到型循环结构 信息管理学院

ANSI流程图:流程控制基本结构 顺序结构 顺序结构是程序设计中最基本的结构。 顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。 B C 信息管理学院

ANSI流程图:流程控制基本结构 分支结构 分支结构又称作选择结构 按给定的选择条件成立与否来确定程序的走向。分支结构可分为双重分支选择和多重分支选择。在任何条件下,无论分支多少,只能也只会选择其一执行。 双分支 三分支 F T 条件 A B F T 条件1 A B 条件2 C 信息管理学院

ANSI流程图:流程控制基本结构 循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。 循环结构的基本形式有两种:当型循环和直到型循环。 F T 条件 循环体 当型循环结构 当型循环:先判断条件,当条件满足时执行循环体,循环体执行后再返回到循环结构入口;如果条件不满足,则退出循环结构。先判断后执行。 F—表式条件不满足 T—表示条件满足 信息管理学院

ANSI流程图:流程控制基本结构 在循环结构中最主要的是: 什么情况下执行循环? (即循环条件) 哪些操作需要循环执行?(即循环体) 什么情况下执行循环? (即循环条件) 哪些操作需要循环执行?(即循环体) 循环体本身可以是另一个基本控制结构 循环结构= 循环体+循环条件 条件 F T 循环体 直到型循环结构 直到型循环:先执行循环体,循环体执行后判断条件,如果条件不满足,返回入口继续执行循环体,直到条件为真时退出循环。先执行后判断 信息管理学院

求1+2+…+100的和。算法描述 S1:将1存入变量x。 S2:将2存入变量y。 S3:将x和y相加,结果存入x。 S4:将y加1,结果存入y。 S5:若y不超过100,转到S3执行,否则输出结果x,运算结束。 自然语言描述 S1: x1 S2: y2 S3: xx+y S4: yy+1 S5: If y<=100, then go to S3; else print x. 伪代码 信息管理学院

ANSI流程图示例1 求1+2+…+100的和。算法描述 S2: x1 S3: y2 S3: xx+y S4: yy+1 start stop X1, y2 Xx+y Y<=100 yy+1 F T Print x 求1+2+…+100的和。算法描述 S2: x1 S3: y2 S3: xx+y S4: yy+1 S5: If y<=100, then go to S3; else print x 伪代码 信息管理学院

练习:用ANSI流程图描述算法 求两个正整数m,n(假设m>=n)的最大公因子 方法一 方法二,用辗转相除法 朴素解法——逐个测试 gcd(m,n)=gcd(n,m%n) %表示求余数运算 见例9.2 信息管理学院

例9.2-算法 start Input m, n rm/n的余数 mn, nr r=0 F T Print n stop 信息管理学院

练习:用ANSI流程图描述判断闰年算法 判断闰年算法,闰年是指 被4整除且不能被100整除的年份; 或 能被400整除的年份 信息管理学院

判断闰年算法 start input Y 400整除Y? F 4整除Y? T 100整除Y? F T F T Y是闰年 Y不是闰年 Y是闰年 end 信息管理学院

了解N-S图 顺序结构 条件分支结构 A B C A B 条件 T F 注:这里P表示条件, T表 示真,F表示假 信息管理学院

了解N-S图 循环结构 当P满足时 循环体 循环体 直到P不满足 当型循环结构 直到型循环结构 信息管理学院

N-S图表示算法 求1+2+…+100的和。算法描述 S1: x1,y2 S2: xx+y S3: yy+1 start S1: x1,y2 S2: xx+y S3: yy+1 S4: If y<=100, then go to S2; else go to S5 S5: print x X1, y2 X1, y2 Xx+y Y<=100 Xx+y yy+1 yy+1 T Y<=100 Print x F 自然语言描述 Print x 信息管理学院 stop

求最大值算法—C语言实现 #include <stdio.h> #include <stdlib.h> #define N 10 main() { unsigned int x[N]; int L,k,p; for(k=0;k<10;k++) scanf(“%d”,&x[k]); L=0; p=0; do{ if(L<x[p]) L=x[p]; p++; } while(p<N); printf(“Maximum = %d \n”, L); getch(); } 信息管理学院

求最大值算法—编译调试(基于Win-TC) 信息管理学院