计算机软件技术基础第2讲程序设计

Download Report

Transcript 计算机软件技术基础第2讲程序设计

计算机软件技术基础
第2讲 程序设计
董鸿晔
[email protected]
内容概要





软件工程
编写计算机程序
调试和文档
编程语言的特点
选择编程语言
2015/4/13
怎样让
计算机
运行?
SPUCC Donghy
2
引子
2015/4/13
SPUCC Donghy
3
2.1软件工程


软件工程是指软件的开发、运作、维护和最
终消亡的整个系统过程。软件工程师负责信
息系统所用软件的编写工作。
系统分析师和软件工程师的工作是交织在一
起的,但也有所不同。一个系统分析师要计
划整个信息系统,包括硬件、软件、员工和
数据。而软件工程师则致力于软件设计、编
程和调试这些信息系统的软件组件上。
2015/4/13
SPUCC Donghy
4
2.1.1计算机程序


就是告诉计算机如何解决问题的一系列指令
的集合。但“写程序”不同于“写信”。写
信时,只要能表达你的思想,可以不管其结
构和效率,写程序则不然。写程序也要比写
信难得多,但软件开发过程中有一些原则可
以帮你理出一些头绪。
计算机程序设计首先从问题的描述开始,它
是算法的基础,而算法则是程序的基础。
2015/4/13
SPUCC Donghy
5
2.1.2问题描述




问题描述就是要说明一些能用来解决问题的
要素。一个表达清晰的问题描述应该具备以
下三个特征:
• 能说明描述问题范畴的任何假设。
• 罗列出已知的所有条件。
• 具体说明需要解决什么问题。
2015/4/13
SPUCC Donghy
6
具体分析



在一个问题描述中,假设就是为了方便设计
而假定的认为是正确的陈述。
问题描述中的已知信息就是你要计算机帮你
解决问题时提供给它的信息。
说明了已知条件后,应该说明问题解决后该
如何做决定,也就是想让程序输出什么信息。
2015/4/13
SPUCC Donghy
7
第
有相同多的奶油层,一 一
种
种方的,一种圆的;
描
 已知价钱、形状和大小;
述
 比较两种比萨饼,它们
 计算机计算两种比萨饼
每平方英寸的价钱并输
出哪种单价价格低。
2015/4/13
SPUCC Donghy
8
假设:
 两类比萨饼,P1、P2;
 奶油层相等;
 一种方的,一种圆的,都不是长方形;
 单位面积价钱低的为最好。
已知:
 pP1=**;pP2=** (pPi为饼的价钱)
 P1 , P2的形状
 P1 , P2的大小(以英寸为单位)
求:
 每平方英寸饼的价钱( pP1 , pP2 )
输出:
 若pP1 < pP2 ,打印“P1店更实惠”
 若p P1 > pP2 ,打印“P2店更实惠”
 若p P1 = pP2 ,打印“两店一样”
2015/4/13
SPUCC Donghy
第
二
种
描
述
9
2.1.3算法设计


算法就是解决问题的步骤。算法是一个抽象
的思想,但它是可表达的且是可执行的。
算法是根据问题描述中给定的信息得出的。
算法一开始并不写成规则的程序语言,这样
软件工程师就可以不管程序语法方面的问题,
而致力于计算方法的设计。
2015/4/13
SPUCC Donghy
10
比萨饼问题算法










————————————————————————————
算法实现的任务
实
例
———————————————————————————
赋值
Size = 10
列出公式
SquareInchPrice = Price / SquareInches
等待输入数据 Enter the Price of a pizza
显示计算结果 Display the SquareInchPrice
得出结论
If the pizza is square, calculate SquareInches by
multiplying the Size*Size
重复某些操作 Repeat the price calculations for as many pizzas as
the user wants
————————————————————————————
2015/4/13
SPUCC Donghy
11
1. 计算正方形比 2. 计算圆形比萨饼的面积,
萨饼的面积,用 使用计算圆形面积的公式
一条边长乘以另 πr2, π约等于3.142,r2 是圆
一种更为恰当的写法
一条边长。由于 半径的平方。比萨饼的大小
正方形边长相等, 是用直径来表示的,所以需
要将直径除以2 得到半径。
可以用公式
Size1* Size1 计 使用Size1/2。然后,求半径
算。
的平方(^2)。
2015/4/13
SPUCC Donghy
3. 求出比
萨饼的面
积后,再
乘以每平
方英寸的
单价可即
可。
12
第二块比萨饼的算法:








Ask the user for the shape of the second pizza and hold
it in RAM as Shape2
Ask the user for the price of the second pizza and hold it
in RAM as Price2
Ask the user for the size of the second pizza and hold it
in RAM as Size2
If Shape2 is square then calculate the square inches
using the formula:
Squareinches2 = Size2 * Size2
If Shape2 is round then calculate the square inches
using the formula:
Squareinches2=3.142*(Size2/2)^2
SquareinchPrice2 = Price2 / Squareinches2
2015/4/13
SPUCC Donghy
13
输出算法




if SquareinchPrice1<SquareinchPrice2 then
display the message “Pizza 1 is the best deal.”
if SquareinchPrice2>SquareInchPrice1 then
display the message “Pizza 2 is the best deal.”
不要忘记若两种单价相等程序该输出什么:
if SquareinchPrice1=SquareinchPrice2 then
display the message “Both pizzas are the same
deal.”
2015/4/13
SPUCC Donghy
14
2.1.4算法表达




结构化英语 -- 英语的一个子集,用简短的
句型反映过程的进行。
伪代码 -- 算法的注释系统,由英语和编程语
言混合而成。
流程图 -- 描述计算机一步一步完成任务的图
表。例如比萨饼问题流程图
对象定义 -- 并定义操纵每个对象的方法。
2015/4/13
SPUCC Donghy
15
思考题




1.写一个计算机程序之前,必须写 ____
来定义一些运行中要用到的元素。
2. _______ 是完成任务或解决问题的步骤的
有机集合。
3. 英语和程序设计语言混合使用称之为____
____。
4. ________ 是描述计算机一步一步解决问
题的图形表示方法。
2015/4/13
SPUCC Donghy
16
2.2编写计算机程序



程序的编写就是用程序设计语言把算法程序
化。
编写程序的人称为程序员。
对于老的程序设计语言来说,编程就是输入
命令;新的语言只需你选择对象和属性或编
写对象的脚本即可。
2015/4/13
SPUCC Donghy
17
2.2.1程序顺序

所谓顺序
执行,就
是计算机
按照程序
员指定的
顺序执行
每一条指
令。
2015/4/13
Begin
Print
Print
End
SPUCC Donghy
18
Begin
2.2.2选择结构
Input a number


选择控制结构也
称为分支,告诉
计算机根据所列
条件的正确与否
选择执行路径。
比较简单的选择
结构是I F语句和
SELECT语句
2015/4/13
No
Yes
End
SPUCC Donghy
19
2.2.3重复控制
重复控制结构又称为循环结构或迭代结构,
可以重复执行一条或多条指令直到满足退出
条件。
FOR N=1 TO 3
PRINT “There’s no place like home.”
NEXT N
 还有DO…LOOP

2015/4/13
SPUCC Donghy
20
2.2.4过程调用


自定义过程
Sub y()
………
End Sub
自定义函数
Function f()
………
End Function
2015/4/13
SPUCC Donghy
调用
Call y()
引用
y=f(x)
21
思考题




1. ________是用计算机语言描述一个算法
的过程。
2. ________控制能把执行顺序从这条语句
转到另一条语句。
3. ________结构使计算机按照所给条件的
正确与否选择执行路径。
4. ________结构能重复执行一段程序直到
某一条件为真。
2015/4/13
SPUCC Donghy
22
2.3调试和文档


编制程序时,必须对其进行测试代码的每一
段来确定其可以正确地工作。这一过程称为
调试(debugging),因为这一过程就是查错,
以避免程序运行时出错。
编码时,应当编制文档, 以作为永久性的记
录来解释程序的工作过程。
斯坦福大学学生于1967年拍摄的一个镜头,记录了
一个程序员编程、测试和调试过程中的沮丧状
2015/4/13
SPUCC Donghy
23
2.3.1测试程序



测试经常包括输入测试数据来看看程序是否
能够产生正确结果。
如果程序没有产生正确结果,程序员必须查
找程序中的错误、修改错误、再测试程序。
这个过程可能需要相当长的时间,但是,测
试却是程序设计中的关键一步。
2015/4/13
SPUCC Donghy
24
测试策略




测试一组值不够。每次最少应当测试一个状
态,并且应当测试每条分支。
当在程序中发现了一个错误时,可能是语法
错,也可能是运行时错误。
运行时错误是运行程序时出的错。这类错误
可以是由类型错误造成,语法正确但不能产
生所需的结果。
逻辑错误是一种程序设计或逻辑中的错误。
2015/4/13
SPUCC Donghy
25
2.3.2程序文档


如果程序文档编制的好,修改程序就比较容
易。
程序文档有两种形式:插入到程序代码中的
注释和专门制作的文档(包含程序手册和用
户参考手册)。
2015/4/13
SPUCC Donghy
26
谁来写文档




程序员一般负责编排代码并整理程序手册,但用户
参考手册现在一般由专业的科技作家去编写。
科技作家专门解释科技概念和程序,把复杂的概念
简化供非技术人员阅读。
许多大学开设科技写作课程,甚至有的大学设有科
技写作学位。
在计算机工业中有经验的科技作家被聘为业余的或
专业的雇员。
2015/4/13
SPUCC Donghy
27
思考题







1. 输入已知数据来验证程序是否输出正确结果是________过
程的一部分。
2. 如果忽略了编程语言的规则和语法,可能会犯________错
误。
3. 假设运行比萨饼程序时,输出结果为 Pizza2 价钱便宜。但
实验数据说明 Pizza1 价钱便宜。如果运行程序时出现了这种
错误,所以应归为________错误。
4. ________错误识别起来最困难而且费时。
5. ________解释程序如何工作和及如何使用它。
6. 为了解释程序如何工作,而且使其他修改程序的程序员容易
读懂,程序员往往在程序中插入________。
7. ________是为程序员编写的文档,而________是为用户使
用软件设计的文档。
2015/4/13
SPUCC Donghy
28
2.4编程语言的特点


在过去的几十年里出现了上百种编程语言。
一些语言的开发是为了提高编程效率,降低
出错率。而另一些则是为专门的编程提供高
效的指令集,例如商业程序和科技程序。其
他的是用于教学的。
这些语言在描述如何工作和如何给合适任务
类型提供信息时各具特色。
2015/4/13
SPUCC Donghy
29
2.4.1过程性语言


用过程性语言编写的程序包含一系列的描述,
告诉计算机如何执行这些过程来完成特定的
工作。带有过程性特征的语言称为过程性语
言。
过程性的编程语言适合于那些顺序执行结束
的算法。用过程性语言编写的程序有一个起
点和一个终点。程序从起点到终点执行的流
程是直线型的,即计算机从起点开始执行写
好的指令序列,直到终点。
2015/4/13
SPUCC Donghy
30
2.4.2说明性语言


说明性语言只需程序员具体说明问题的规则
并定义一些条件即可。
语言自身内置了方法把这些规则解释为一些
解决问题的步骤,这就把编程的重心转移到
描述问题和其规则上,而不再是数学公式。
因此说明性的语言更适合于思想概念清晰但
数学概念复杂的编程工作。
2015/4/13
SPUCC Donghy
31
2.4.3面向对象语言



面向对象的程序设计语言是建立在用对象编
程的方法基础之上的。
对象就是程序中使用的实体或“事物”,例
如按钮—屏幕上的一种长方形图标—就是一
个对象。对象属于一个具有一定特性的类或
组。
同一对象可用在不同的程序中,这无形中就
扩大了程序员的生产率。
2015/4/13
SPUCC Donghy
32
2.4.4事件驱动语言

程序事件是指程序必须做出响应的动作或表
现,比如按键和点击鼠标。

程序员用事件驱动语言编程可以使程序随时
检测并响应事件。

使用图形界面的程序大部分都是事件驱动的,
它们在屏幕上显示诸如菜单这样的控件,并
在用户作用控件时采取某一动作。
2015/4/13
SPUCC Donghy
33
思考题

1. 用________语言写的程序由一系列语句组成,它告诉计算机完成特殊任
务所执行步骤。

2. ________语言由定义解决问题的条件的一系列规则组成。

3. ________ 语言需要程序员在最低水平上写指令,这里特指硬件元素如处
理器、内存、寄存器等。

4. 在编译语言中,________代码被编译、翻译成可执行的目标代码。

5. 一些编程语言用________在程序执行时一次将每一条语句转换为可执行
的机器指令。

6. 在________编程中,代码和对象相联系,对象有动作时程序才被执行。

7. ________是事先写好的对象被设计为专用并可添加到程序中。

8. ________是程序必须响应的动作,如按键和点击鼠标。
2015/4/13
SPUCC Donghy
34
2.5选择编程语言



• 这种编程语言是否适合手中的任务?
• 这种语言在其他的应用程序中是否也经常
使用?
• 小组中的人是否都精通这门语言?
微软公司于1991年开发出了Visual Basic语言,它大
体上还是从老版本的BASIC语言中继承过来的。而随
后十几年中,微软公司接连发布了多个版本的Visual
Basic产品,最新版本是2005。
2015/4/13
SPUCC Donghy
35
复习





1. 回答本章开头所列出的问题。
2. 列出本章用到的一些概念,并用自己的话给它们
下一个简短的定义。
3. 描述一下系统分析师和软件工程师在工作上的不
同之处。
4. 算法和计算机程序之间有区别吗?为什么?
5. 各举出一个顺序结构、选择结构和循环结构的程
序的例子。
2015/4/13
SPUCC Donghy
36

6. 下面程序的哪些行包含有分支结构和循环结构。
INPUT "Employee Name:" ;EmpName5
WHILE EmpName$<>“EOF”
INPUT "Hours Worked"; HoursWk
INPUT "PayRate "; PayRate
GrossPay = HoursWk * PayRate
IF GrossPay >50 THEN
Tax = GrossPay * .12
ELSE
Tax = 0
END IF
NetPay = GrossPay - Ta x
PRINT "Gross Pay"; GrossPay
INPUT "Employee Name"; EmpName$
WEND
PRINT "Payroll complete.“
2015/4/13
SPUCC Donghy
37
7. 解释一下语法错误和逻辑错误的区别。
 8. 解释一下程序注释和文档的区别。
 9. 总结一下当今流行的程序设计语言的特点。
BASIC ,Visual Basic, COBOL,
FORTRAN,Pascal ,C++,
LISP / PROLOG, SQL,
assembly language,
Java / J++, HTML,
JavaScript,C#,
Dephi, Prel, ……
 10. 复习上面涉及的关键定义。

2015/4/13
SPUCC Donghy
38
问
题?
谢谢
再见