JAVA程序设计概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11
wenku.baidu.com2.1:求1×2×3×4×5
C语言编写的程序:
数据:1,2,3,4,5 数据结构:int 类型
算法: 步骤1:先求1×2,得到结果2 步骤2:将步骤1得到的乘积2再 乘以3,得到结果6; 步骤3:将6再乘以4,得24 步骤4:将24再乘以5,得120
#include <stdio.h> Void main( ) { int i,t; t=1; i=2; t=t*i; i=3; t=t*i; i=4; t=t*i; i=5; t=t*i; printf(“%d\n”,t); }
31
例2.8 求5!
开始 置t的初值为1 置i的初值为2 当i<=5,执行下面操作: 使t=t×i 使i=i+1 {循环体到此结束} 输出t的值 结束 注:可用中文、英文或中英文混 用书写
32
第三节 结构化程序设计
在结构化程序设计中,有三种基本结构, 可以作为表示一个良好算法的基本单元:
顺序结构
分析 问题 确定 算法 编程 运行 调试 总结
10
第二节 程序设计基本概念
进行程序设计应该掌握程序设计方法,本门课 的就是要学习用结构化程序设计方法编写C语 言程序; 一个程序必须是用某种计算机语言来编写的, 并有必要的环境支持; 因此,可以这么认为:
程序=算法+数据结构+程序设计方法+语言工具和环境
选择结构
循环结构
用这三种基本结构作为“建筑单元”, 通过组合和嵌套,就能解决任何复杂的 问题。
33
图例
顺序结构
选择结构
34
循环结构:while型
直到(until/do-while)型
35
36
三种基本结构的扩展结构
37
三种基本结构的共同特点
(1) 一个入口, 一个出口; (2) 结构内每一部分都有机会被执行; (3) 结构内不存在“死循环”;
1. 分析问题,建立数学模型 包括考虑输入、输出、具体处理步骤等操作 2. 选定算法,用适当工具描述算法 数学建模之后,为了有效地进行解题,不仅要 保证算法正确,还要考虑算法的质量。 3. 编程实现 将选定的算法从非计算机语言的描述形式转换 为计算机语句描述形式。 4. 测试及调试
42
第三节 结构化程序设计
8
计算机语言的发展 低 级 语 言
高 级 语 言 机器语言 汇编语言
用 0、1 表示 的机器代码
用助记符表示 的程序语言
非常接近于人类的自然 语言和数学语言,它的 一个语句往往对应几条 机器指令
9
第二节 程序设计基本概念
程序 程序是为了解决某一特定问题而编写的计算机 能够接受并运行的一系列指令。简言之,程序 就是指令序列。 程序设计 简单地说,程序设计就是用计算机语言编写程 序的过程。一般包括以下几个步骤:
——有效性
18
算法的表示
流程图
N-S图
伪代码
19
流程图
常用流程图符号
20
例2.4 求5!
步骤1:t=1
步骤2:i=2 步骤3:t×i => t 步骤4:i+1 => i 步骤5:如果i不大于5,返 回步骤3;否则结束。最后 得到t的值就是5!的值。
21
例2.5 判断素数
素数是指除了1和该数本身之外,不能被其它任何整数整 除的数。 判断一个数n是否素数的方法:将n作为被除数,将2到 n 各个整数轮流作为除数,如果都不能被整除,则n为素数。 S1:输入正整数=> n S2:i=2(i作为除数) S3:n被i除,得余数r S4:如果r=0,打印n“不是素数”,结束;否则执行S5 S5:i+1 => i S6:如果i≤ ,返回 S3;否则打印n“是素数”,结束。 n
1.第一级伪代码 begin Initialize number; //初始化变量n while (number<n) { If number是一个素数 then print number; number取下一个值; } end
47
2.细化“初始化number” “number是一个素数”及“number取下一个值”。 (1)细化“初始化number”: number=2; (2) 细化“number是一个素数”: 当number是一个素数时为true,否则为false。细化如下: prim=true; do{ k=2; lim=开方(number); if nubmer能被k整除 then prim=false ; else k=k+1; } while (prim==false) or (k达到lim); (3) 细化“number取下一个值”:number=number+1;
44
结构化程序设计
模块设计的方法 功能分解,逐步求精
把一个任务分为若干个简单的子任务; 根据功能将程序划分为若干个子模块; 子模块还再可以划分为更小的模块; 划分子模块时应注意模块的独立性: 高内聚,低耦合;
45
第三节 结构化程序设计
46
结构化设计实例
例2.9:求1到n之间的素数 程序要做的事是:从1开始依次找,判断是否是素数,是则 打印出来,否则继续往下找,直到n为止。
算法实例
例2.2 全班共30人,打印视力在0.8以上的学生姓名。
设g(i)代表第i个学生的视力,算法表示如下: S1:1 => i S2:如果g(i)≥0.8,则打印。 S3:i+1 => i S4:如果i≤30,返回S2;否则结束。
16
算法实例
例2.3 输入三个数,然后输出其中最大的数。
设a、b、c代表三个数,算法表示如下: S1:输入a、b、c。 S2:如果a>b, 则a=> MAX;否则b=> MAX 。 S3:如果c> MAX, c=> MAX 。 S4:输出MAX 。 单词作变量名易于理解:
控制器:从内存取出程序指令进行分析并对其它相关 部件发出操作控制信息。
50
第四节 程序的实现环境
软件环境
操作系统 编辑程序 编译程序 连接程序
51
C程序的执行过程
编辑程序 编译程序 连接程序
运行 结果
源程序 .c
目标程序 .obj
可执行程序
.exe
输入源程序、修改、保存等
52
源程序 用户用高级语言编写的程序,C源程序文件名字后缀一般为 “.c”,若在visual C++下编辑,也可为“.cpp”。 编译程序 主要功能是将高级语言程序翻译成机器语言程序(即目标 程序),另外它还包含查错的功能。在翻译过程中如果发 现源程序有错,则不生成目标程序,并向用户报告出错信 息。 目标程序 源程序经过编译程序转化成的机器语言程序 连接程序 将所有的目标程序和系统提供的库函数等连接在一起成为 一个整体,形成可执行程序。
结构化程序设计在总体设计阶段采用自 顶向下逐步求精的方法,可以把一个复杂问 题的解法分解和细化成一个由许多模块组成 的层次结构的软件系统。
自顶向下 逐步细化 模块化
43
结构化程序设计特点
按功能划分为若干个基本模块,形成树状 结构; 每一个模块内部都是由顺序、选择和循环 三种基本结构组成; 各模块间的关系尽可能简单;
第4章 函数(8学时)
第5章 构造数据类型(8学时) 第6章 指针(4学时)
第7章 动态数据结构(2学时)
第8章 文件(2学时)
5
教学目标
培养利用计算机处理问题的思维方式;
培养程序设计的基本方法; 主动将计算机引入到学习、生活中解决 实际问题,提高处理问题的效率。
6
第一章 程序设计概述
第一节 程序设计语言
2
课程学时安排
本课程计划 40+24 学时
理论教学(40学时):
采用电子教案授课,结合计算机的特点,边讲、边演示、 边操作;
实验教学( 12次实验, 24学时):
熟悉环境、顺序选择、循环、数组、函数、综合、指针、 文件综合。每次实验上交一个实验报告。
集成开发环境:VC++6.0;
3
考核方式
本门课按两门课来计算:
26
例2.6 求5!
27
伪代码
概念:伪代码(pseudo code)是用来描述算法的介 于自然语言和计算机语言之间的文字和符号。 特点:自上而下 每一行(或几行)表示一个基本操作; 不用图形符号,书写方便、格式紧凑; 便于向计算机语言算法(即程序)过渡。 用处:适用于设计过程中需要反复修改时的流程 描述。
48
3.第三步细化 “number能被k整除” 及 “k达到lim”
(1) 细化“number能被k整除”: number/k的余数=0; (2) 细化“k达到lim”: k<=lim;
4.补充完整程序。
49
第四节 程序的实现环境
硬件环境
–输入设备 –输出设备 –外存储器 –内存储器:存贮运行中的程序和数据 –中央处理器CPU:包括运算器和控制器 运算器:按控制器的控制信息取数、进行算术运算或 逻辑运算。
38
错误 原因:语句A没有出口
错误
原因:出现死循环
39
正确,符合基本结构 的特点
40
第三节 结构化程序设计
基本思路
把一个复杂问题的求解过程分阶段进 行,每个阶段处理的问题都控制在人们 容易理解和处理的范围内 结构化程序设计强调程序设计风格和程 序结构的规范化,提倡清晰的结构。
41
结构化程序设计步骤
22
S1:输入正整数=> n S2:i=2(i作为除数) S3:n被i除,得余数r S4:如果r=0, 打印n“不是素数”, 结束; 否则执行S5 S5:i+1 => i S6:如果i≤ , n 返回S3; 否则打印n“是素数”, 结束。
用流程图表示 算法要比用文 字描述算法逻 辑清晰、易于 理解。
太繁琐
12
设变量t为被乘数,i为乘数。 用循环算法来求结果, 算法可改写为:
步骤1:t=1
步骤2:i=2 步骤3:t×i => t 步骤4:i+1 => i 步骤5:如果i不大于5,返 回步骤3;否则结束。最后 得到t的值就是5!的值。 C语言编写的程序:
#include <stdio.h> Void main( ) { int i,t; t=1; i=2; while(i<=5) { t=t*i; i=i+1; } printf(“%d\n”,t); }
23
画流程图注意事项
开始时把注意力集中在问题的逻辑上,画出流 程图的主路径
完成主路径后,加上分支和循环 一个流程图只能含有一个起始点和一个结束点 没有必要在流程图中画出程序的每个步骤。
让其他编程人员或用户能够轻松看懂你的流程 图。
24
练习2.1 画流程 图:打印50个学 生中成绩在80分 以上者
思考:设 g i 代表第i个学生
的成绩,算法表示如下: S1:1 => i S2:如果 g i ≥80,则打印。 S3:i+1 => i S4:如果i≤50,返回S2;否 则结束。
25
N-S图
美国学者I.Nassi和B.Shneiderman提出的一 种新的流程图 全部算法写在一个矩形框内,由一些基本 的框组成一个大的框,称N-S图
C语言程序设计:平时成绩+期末考试成绩
平时成绩:占总成绩的30%。 课的出勤+作业的完成; 期末考试成绩:占总成绩的70%。 综合程序设计:
平时实验作业(40%) 综合程序设计实验考试(60%)。
4
理论教学主要内容
第1章 程序设计概述(4学时)
第2章 程序设计初步(4学时)
第3章 程序的控制结构(8学时)
第二节 程序设计基本概念
第三节 结构化程序设计
第四节 程序的实现环境
7
第一节 程序设计语言
什么是计算机语言?
语言:
用于传达信息的表示方法、约定和规则的 集合,是人们交流信息的媒介和工具。
计算机语言: 是指计算机能够接受和处理的具有一定格 式的语言,是程序设计最重要的工具。人与计 算机打交道时交流信息的媒介和工具。
简练
思考:如果求2×4×6×…×1000,如何设计算法?
13
算法概念
精确定义的一系列规则,这些规则指 定了一系列操作顺序,以便在有限的步 骤内得到所求问题的解答;
14
算法分类
数值运算:求数值解,如求方程的根、 求函数的定积分…
非数值运算:事务管理领域,如图书 检索、人事管理、行车调度管理
15
MAX表示最大的数(maximum) C语言中区分大小写
17
算法的特征
包含有限的操作步骤 ——有穷性 ——确定性
算法中每一个步骤都是确定的
从外界取得必要的信息 ——有零个或多个输入
算法的目的是为了求解,“解”就是输出 ——有一个或多个输出
算法中每个步骤仅有一个后续动作 ——连续性
每个步骤应能有效地执行,并得到确定的结果
C语言程序设计
1
建议教材及参考书
教材:
1.
《计算机程序设计基础》赵宏主编,清华大学出版社、 北京交通大学出版社
《计算机程序设计基础辅导与实验教程》赵宏主编
2.
参考书:
1.
《C语言程序设计》 楼永坚、吴鹏、徐恩友编著, 人民邮电出版社
2. 3.
《C程序设计》谭浩强编,清华大学出版社
等级考试习题集(上网查考试大纲)
wenku.baidu.com2.1:求1×2×3×4×5
C语言编写的程序:
数据:1,2,3,4,5 数据结构:int 类型
算法: 步骤1:先求1×2,得到结果2 步骤2:将步骤1得到的乘积2再 乘以3,得到结果6; 步骤3:将6再乘以4,得24 步骤4:将24再乘以5,得120
#include <stdio.h> Void main( ) { int i,t; t=1; i=2; t=t*i; i=3; t=t*i; i=4; t=t*i; i=5; t=t*i; printf(“%d\n”,t); }
31
例2.8 求5!
开始 置t的初值为1 置i的初值为2 当i<=5,执行下面操作: 使t=t×i 使i=i+1 {循环体到此结束} 输出t的值 结束 注:可用中文、英文或中英文混 用书写
32
第三节 结构化程序设计
在结构化程序设计中,有三种基本结构, 可以作为表示一个良好算法的基本单元:
顺序结构
分析 问题 确定 算法 编程 运行 调试 总结
10
第二节 程序设计基本概念
进行程序设计应该掌握程序设计方法,本门课 的就是要学习用结构化程序设计方法编写C语 言程序; 一个程序必须是用某种计算机语言来编写的, 并有必要的环境支持; 因此,可以这么认为:
程序=算法+数据结构+程序设计方法+语言工具和环境
选择结构
循环结构
用这三种基本结构作为“建筑单元”, 通过组合和嵌套,就能解决任何复杂的 问题。
33
图例
顺序结构
选择结构
34
循环结构:while型
直到(until/do-while)型
35
36
三种基本结构的扩展结构
37
三种基本结构的共同特点
(1) 一个入口, 一个出口; (2) 结构内每一部分都有机会被执行; (3) 结构内不存在“死循环”;
1. 分析问题,建立数学模型 包括考虑输入、输出、具体处理步骤等操作 2. 选定算法,用适当工具描述算法 数学建模之后,为了有效地进行解题,不仅要 保证算法正确,还要考虑算法的质量。 3. 编程实现 将选定的算法从非计算机语言的描述形式转换 为计算机语句描述形式。 4. 测试及调试
42
第三节 结构化程序设计
8
计算机语言的发展 低 级 语 言
高 级 语 言 机器语言 汇编语言
用 0、1 表示 的机器代码
用助记符表示 的程序语言
非常接近于人类的自然 语言和数学语言,它的 一个语句往往对应几条 机器指令
9
第二节 程序设计基本概念
程序 程序是为了解决某一特定问题而编写的计算机 能够接受并运行的一系列指令。简言之,程序 就是指令序列。 程序设计 简单地说,程序设计就是用计算机语言编写程 序的过程。一般包括以下几个步骤:
——有效性
18
算法的表示
流程图
N-S图
伪代码
19
流程图
常用流程图符号
20
例2.4 求5!
步骤1:t=1
步骤2:i=2 步骤3:t×i => t 步骤4:i+1 => i 步骤5:如果i不大于5,返 回步骤3;否则结束。最后 得到t的值就是5!的值。
21
例2.5 判断素数
素数是指除了1和该数本身之外,不能被其它任何整数整 除的数。 判断一个数n是否素数的方法:将n作为被除数,将2到 n 各个整数轮流作为除数,如果都不能被整除,则n为素数。 S1:输入正整数=> n S2:i=2(i作为除数) S3:n被i除,得余数r S4:如果r=0,打印n“不是素数”,结束;否则执行S5 S5:i+1 => i S6:如果i≤ ,返回 S3;否则打印n“是素数”,结束。 n
1.第一级伪代码 begin Initialize number; //初始化变量n while (number<n) { If number是一个素数 then print number; number取下一个值; } end
47
2.细化“初始化number” “number是一个素数”及“number取下一个值”。 (1)细化“初始化number”: number=2; (2) 细化“number是一个素数”: 当number是一个素数时为true,否则为false。细化如下: prim=true; do{ k=2; lim=开方(number); if nubmer能被k整除 then prim=false ; else k=k+1; } while (prim==false) or (k达到lim); (3) 细化“number取下一个值”:number=number+1;
44
结构化程序设计
模块设计的方法 功能分解,逐步求精
把一个任务分为若干个简单的子任务; 根据功能将程序划分为若干个子模块; 子模块还再可以划分为更小的模块; 划分子模块时应注意模块的独立性: 高内聚,低耦合;
45
第三节 结构化程序设计
46
结构化设计实例
例2.9:求1到n之间的素数 程序要做的事是:从1开始依次找,判断是否是素数,是则 打印出来,否则继续往下找,直到n为止。
算法实例
例2.2 全班共30人,打印视力在0.8以上的学生姓名。
设g(i)代表第i个学生的视力,算法表示如下: S1:1 => i S2:如果g(i)≥0.8,则打印。 S3:i+1 => i S4:如果i≤30,返回S2;否则结束。
16
算法实例
例2.3 输入三个数,然后输出其中最大的数。
设a、b、c代表三个数,算法表示如下: S1:输入a、b、c。 S2:如果a>b, 则a=> MAX;否则b=> MAX 。 S3:如果c> MAX, c=> MAX 。 S4:输出MAX 。 单词作变量名易于理解:
控制器:从内存取出程序指令进行分析并对其它相关 部件发出操作控制信息。
50
第四节 程序的实现环境
软件环境
操作系统 编辑程序 编译程序 连接程序
51
C程序的执行过程
编辑程序 编译程序 连接程序
运行 结果
源程序 .c
目标程序 .obj
可执行程序
.exe
输入源程序、修改、保存等
52
源程序 用户用高级语言编写的程序,C源程序文件名字后缀一般为 “.c”,若在visual C++下编辑,也可为“.cpp”。 编译程序 主要功能是将高级语言程序翻译成机器语言程序(即目标 程序),另外它还包含查错的功能。在翻译过程中如果发 现源程序有错,则不生成目标程序,并向用户报告出错信 息。 目标程序 源程序经过编译程序转化成的机器语言程序 连接程序 将所有的目标程序和系统提供的库函数等连接在一起成为 一个整体,形成可执行程序。
结构化程序设计在总体设计阶段采用自 顶向下逐步求精的方法,可以把一个复杂问 题的解法分解和细化成一个由许多模块组成 的层次结构的软件系统。
自顶向下 逐步细化 模块化
43
结构化程序设计特点
按功能划分为若干个基本模块,形成树状 结构; 每一个模块内部都是由顺序、选择和循环 三种基本结构组成; 各模块间的关系尽可能简单;
第4章 函数(8学时)
第5章 构造数据类型(8学时) 第6章 指针(4学时)
第7章 动态数据结构(2学时)
第8章 文件(2学时)
5
教学目标
培养利用计算机处理问题的思维方式;
培养程序设计的基本方法; 主动将计算机引入到学习、生活中解决 实际问题,提高处理问题的效率。
6
第一章 程序设计概述
第一节 程序设计语言
2
课程学时安排
本课程计划 40+24 学时
理论教学(40学时):
采用电子教案授课,结合计算机的特点,边讲、边演示、 边操作;
实验教学( 12次实验, 24学时):
熟悉环境、顺序选择、循环、数组、函数、综合、指针、 文件综合。每次实验上交一个实验报告。
集成开发环境:VC++6.0;
3
考核方式
本门课按两门课来计算:
26
例2.6 求5!
27
伪代码
概念:伪代码(pseudo code)是用来描述算法的介 于自然语言和计算机语言之间的文字和符号。 特点:自上而下 每一行(或几行)表示一个基本操作; 不用图形符号,书写方便、格式紧凑; 便于向计算机语言算法(即程序)过渡。 用处:适用于设计过程中需要反复修改时的流程 描述。
48
3.第三步细化 “number能被k整除” 及 “k达到lim”
(1) 细化“number能被k整除”: number/k的余数=0; (2) 细化“k达到lim”: k<=lim;
4.补充完整程序。
49
第四节 程序的实现环境
硬件环境
–输入设备 –输出设备 –外存储器 –内存储器:存贮运行中的程序和数据 –中央处理器CPU:包括运算器和控制器 运算器:按控制器的控制信息取数、进行算术运算或 逻辑运算。
38
错误 原因:语句A没有出口
错误
原因:出现死循环
39
正确,符合基本结构 的特点
40
第三节 结构化程序设计
基本思路
把一个复杂问题的求解过程分阶段进 行,每个阶段处理的问题都控制在人们 容易理解和处理的范围内 结构化程序设计强调程序设计风格和程 序结构的规范化,提倡清晰的结构。
41
结构化程序设计步骤
22
S1:输入正整数=> n S2:i=2(i作为除数) S3:n被i除,得余数r S4:如果r=0, 打印n“不是素数”, 结束; 否则执行S5 S5:i+1 => i S6:如果i≤ , n 返回S3; 否则打印n“是素数”, 结束。
用流程图表示 算法要比用文 字描述算法逻 辑清晰、易于 理解。
太繁琐
12
设变量t为被乘数,i为乘数。 用循环算法来求结果, 算法可改写为:
步骤1:t=1
步骤2:i=2 步骤3:t×i => t 步骤4:i+1 => i 步骤5:如果i不大于5,返 回步骤3;否则结束。最后 得到t的值就是5!的值。 C语言编写的程序:
#include <stdio.h> Void main( ) { int i,t; t=1; i=2; while(i<=5) { t=t*i; i=i+1; } printf(“%d\n”,t); }
23
画流程图注意事项
开始时把注意力集中在问题的逻辑上,画出流 程图的主路径
完成主路径后,加上分支和循环 一个流程图只能含有一个起始点和一个结束点 没有必要在流程图中画出程序的每个步骤。
让其他编程人员或用户能够轻松看懂你的流程 图。
24
练习2.1 画流程 图:打印50个学 生中成绩在80分 以上者
思考:设 g i 代表第i个学生
的成绩,算法表示如下: S1:1 => i S2:如果 g i ≥80,则打印。 S3:i+1 => i S4:如果i≤50,返回S2;否 则结束。
25
N-S图
美国学者I.Nassi和B.Shneiderman提出的一 种新的流程图 全部算法写在一个矩形框内,由一些基本 的框组成一个大的框,称N-S图
C语言程序设计:平时成绩+期末考试成绩
平时成绩:占总成绩的30%。 课的出勤+作业的完成; 期末考试成绩:占总成绩的70%。 综合程序设计:
平时实验作业(40%) 综合程序设计实验考试(60%)。
4
理论教学主要内容
第1章 程序设计概述(4学时)
第2章 程序设计初步(4学时)
第3章 程序的控制结构(8学时)
第二节 程序设计基本概念
第三节 结构化程序设计
第四节 程序的实现环境
7
第一节 程序设计语言
什么是计算机语言?
语言:
用于传达信息的表示方法、约定和规则的 集合,是人们交流信息的媒介和工具。
计算机语言: 是指计算机能够接受和处理的具有一定格 式的语言,是程序设计最重要的工具。人与计 算机打交道时交流信息的媒介和工具。
简练
思考:如果求2×4×6×…×1000,如何设计算法?
13
算法概念
精确定义的一系列规则,这些规则指 定了一系列操作顺序,以便在有限的步 骤内得到所求问题的解答;
14
算法分类
数值运算:求数值解,如求方程的根、 求函数的定积分…
非数值运算:事务管理领域,如图书 检索、人事管理、行车调度管理
15
MAX表示最大的数(maximum) C语言中区分大小写
17
算法的特征
包含有限的操作步骤 ——有穷性 ——确定性
算法中每一个步骤都是确定的
从外界取得必要的信息 ——有零个或多个输入
算法的目的是为了求解,“解”就是输出 ——有一个或多个输出
算法中每个步骤仅有一个后续动作 ——连续性
每个步骤应能有效地执行,并得到确定的结果
C语言程序设计
1
建议教材及参考书
教材:
1.
《计算机程序设计基础》赵宏主编,清华大学出版社、 北京交通大学出版社
《计算机程序设计基础辅导与实验教程》赵宏主编
2.
参考书:
1.
《C语言程序设计》 楼永坚、吴鹏、徐恩友编著, 人民邮电出版社
2. 3.
《C程序设计》谭浩强编,清华大学出版社
等级考试习题集(上网查考试大纲)