| 一、体验程序的运行过程及作用 |
| 请观看老师演示的画函数曲线程序,然后思考如下问题: |
| ①程序是什么? |
| ②程序文件里面有什么? |
| ③程序是怎样实现其功能的? |
| ④用计算机程序解决问题的过程是怎样的? |
|
|
回顾我们在数学课上学习过的二次函数图形的画法,是通过二次函数算出足够多的点坐标(x,y),并在直角坐标系上画出来,多个点连在一起就形成了函数的图形。 |
|
新建文件 |
| (2)输入程序。双击窗体空白处,打开窗体代码窗口,把“画函数图形.txt”文件中的程序文本复制粘贴到其中。 |
|
打开窗体代码窗口输入程序代码 |
(3)运行程序。单击工具栏上的启动程序按钮 运行程序,在程序界面中点击空白处,观看程序运行效果。 |
| (4)保存文件。从“文件”菜单中选择“保存form1”,输入文件名为“画函数图形01.frm”。 |
(5)修改程序。根据需要,我们可以将抛物线程序的图形修改为标准抛物线y=ax2+bx+c曲线图效果。并以“画函数图形02.frm”保存。 |
|
程序代码 |
| (6)生成可直接执行的exe文件。打开“画函数图形01.frm”程序,从“文件”菜单中选择“生成工程.exe”项,生成“画函数图形01.exe”文件,并直接双击运行这个程序,查看运行效果。 |
| 用VB系统编辑生成的frm窗体文件和vbp工程文件,运行时都要首先启动VB系统,不能独立运行,但这两类文件可以重新打开修改,适合在调试阶段使用。当输入的程序修改调试完成后,通常保存为EXE格式的文件,计算机可以直接执行,这类文件不可以重新打开修改。 |
交流 |
| 你认为VB与你使用过的应用程序(如Powerpoint、Word等)相比,不同之处在哪里?有相似的地方吗? |
| |
| 通过上面的演示我们知道程序可以看作是让计算机实现某一功能的一系列计算机能够识别的语句。人们可以通过编写程序告诉计算机每一步做什么,计算机则严格执行程序中规定的每个步骤来实现人们需要的功能,帮助人们解决问题。如果程序编得不对,计算机运行的时候就会出错或不能得到正确的结果。 |
| 程序设计语言是人们与计算机打交道的桥梁,通过它告诉计算机执行一系列操作,实现某种功能。程序的编写依赖于程序设计语言,程序设计语言有很多种,VB是其中的一种。 |
当问题简单时,可能编写一个或若干个程序就可以解决问题。当问题比较大或比较复杂时,就不仅仅是编写几个程序能解决的,此时则需要进行软件开发,编写程序是软件开发的重要环节。我们平时所使用的各种软件,实际上是软件开发人员按功能需要编写的程序的集合,如文字处理软件、图形图像制作软件等。
|
二、编制计算机程序解决问题的过程 |
| 当我们需要通过编制计算机程序来解决问题的时候,该如何着手呢?一般来说,可以包括以下这些过程: |
|
| 1、分析问题 |
| 对于任何一个实际问题,首先要分析该问题的需求情况及已知条件,来判断解决问题的可能性和目标要求,然后对需要解决的问题给出一个精确的描述。 |
交流
你对本节开头刘丽提出画抛物线的问题如何分析? |
| 上面的例子中,函数图像的表达可以通过多种方法来实现,编程作图是其中一种,对于二次函数的图像本身是一个二维坐标图像,二维坐标轴图像的基本元素是点,点的构成是位置坐标(包括纵坐标和横坐标)和色彩。对于二次函数图形里点的色彩,我们可以自己定义,而对于二次函数点的位置,我们就要通过二次函数本身求取,纵横坐标就是二次函数的Y,X值。要画出一个适合的二次函数需要多少个点才适合?其实要画一个图形当然是越多点数越好了,但是太多的点又会花费大量的时间,所以可以考虑在一定的范围内尽可能多的点。 |
| 画二维图像还需要考虑是否把坐标轴画出来,是否需要把坐标刻度画出来等等。这样根据问题的需求,我们便构造好一个问题的模型,也就是我们如何将函数转换为图像的一个架构。 |
| 2、设计算法 |
现在要找出解决问题的方法和步骤,这一过程称为设计算法。算法是程序编写的基础。描述算法的方法通常不止一种,可以用自然语言描述,也可以用流程图的形式描述,根据要求不同可以粗略描述,也可以详细描述。算法描述越详细,编写程序就越方便。下列是对画二次函数图形问题的三种算法描述:
本程序的算法如下: |
| 描述一:让二次函数方程y=x^2的x值由-5变化到5,每变化一次的变化量是0.001,然后求出y值,再将求出的x,y值作为坐标来画点。 |
描述二: |
| ①提示用户启动画图处理; |
| ②在画板上先画出笛卡儿坐标系; |
| ③通过函数y=x^2求取Y值; |
| ④在画板上的(x,y)坐标上画一个点; |
| ⑤x递增0.001; |
⑥重复③~⑤步,直到x的值由-5变化到5为止; |
| 描述三: |
|
| 3、编写程序 |
| 有了清晰的可操作的算法描述,就可以选择一种程序设计语言来编写程序,以实现算法。一般来说,只要算法确定,语言的选择就没有特别的限定,通常根据问题的特性和编程人员对语言的熟悉程度来选定。程序设计语言是人们编程时与计算机沟通的桥梁,熟悉了程序设计语言就可以更好地把算法转换为程序,让计算机执行程序来帮助人们解决问题。在本例子中我们是用Visual Basic语言来实现本算法的程序。构成程序的字符,通常称为代码。 |
| 4、调试运行 |
| 程序编写好以后,通过键盘输入计算机,然后运行程序,看看程序能否顺利执行。计算机只懂得程序设计语言所规定得语法规则,如果编写程序时违反了规则,哪怕是一个标点符号出错,也会令程序出错,不能执行下去。人们可根据计算机提示的出错信息修改程序,重新调试运行。 |
| 5、检测结果 |
| 当程序能够顺利运行以后,还需要对程序功能进行分析检测。因为如果程序符合规则,即使有逻辑错误或计算方法的错误,计算机也是检查不出来的。因此,如果结果不合理,还要回头对程序进行修改,直到确定程序的功能正确为止。 |
| 通过上述的学习我们知道,计算机是不会自己解决问题的,但它可以在人们编好的程序指示下帮助人们解决问题。要想利用计算机解决问题,人们可以使用现成工具软件,也可以根据实际问题的需要,通过设计解决问题的算法,选用适合的程序设计语言根据算法编写程序。程序一旦编写并调试通过,可以重复应用来解决同类的问题。 |
交流
在使用计算机程序解决问题方面,采用计算机编程的方法有何优势?又有何局限性?
|
|
| 三、课堂练习 |
(1)猜数游戏,写一个程序实现。计算机给出一个100内的整数,让用户猜,如果猜的数比计算机出的数要大就输出“猜大了”,如果猜的数比计算机的数要小就输出“猜小了”,直到猜出正确的数字为止,输出“猜对了,您总共猜了n次”。完善下面的算法分析和代码实现:
从后面的列表中将选项选出填在表中“算法分析”和“代码设计”的空白处: |
|
算法分析可供选项:
A)统计次数清零
B)输入一个数到x
C)统计次数a增加1
D)判断如果猜的数x比m大,提示“猜大了”要求重新输入
E)判断如果猜的数x比m小,提示“猜小了”要求重新输入
F)统计次数a增加1 |
代码设计可供选项:
A)Randomize
m = Int((100 * Rnd) + 1)
B)If x > m Then
x = Int(InputBox("您刚才猜的数大了,请重新猜一个数。"))
C)ElseIf x < m Then
x = Int(InputBox("您刚才猜的数小了,请重新猜一个数。"))
D)x = Int(InputBox("请输入一个1~100之间的整数"))
E)If x = m Then MsgBox ("恭喜你猜中了!答案就是" + Str(m) + ",您总共猜了" + Str(a + 1) + "次") endif
|
请将上面的猜数游戏在VB里实现。
·猜数游戏程序(半成品)·
|
(2)破译密码。“xlmw$mw$q}$fsso”是经过变换的一串字符,已知原文中每个字符的机内码被加上或减去同一个值(称为数值偏移),且这个值不超过5,例如“abcd…xyz”用差位为1的字母相代替,即:a用b表示、b用c表示、c用d表示…y用z表示,“good”就变成了“hppe”。你能破译这句英文吗?说说你的算法。
※ 参考资料:ASCII编码表
ASCII是英文American Standard Code for Information Interchange的缩写。ASCII码是目前计算机最通用的编码标准。
因为计算机只能接受数字信息,ASCII码将字符作为数字来表示,以便计算机能够接受和处理。比如大写字母M的ASCII码是77。
ASCII码中,第0~32号及第127号是控制字符,常用的有LF(换行)、CR(回车);第33~126号是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余的是一些标点符号、运算符号等。
以下是常用的ASCII码对照表(十进制):
| 9 |
TAB(制表符) |
| 10 |
换行 |
| 13 |
回车 |
| 32 |
空格 |
| 33 |
! |
| 34 |
" |
| 35 |
# |
| 36 |
$ |
| 37 |
% |
| 38 |
& |
| 39 |
' |
| 40 |
( |
| 41 |
) |
| 42 |
* |
| 43 |
+ |
| 44 |
, |
| 45 |
- |
| 46 |
. |
| 47 |
/ |
| 48 |
0 |
| 49 |
1 |
| 50 |
2 |
| 51 |
3 |
| 52 |
4 |
| 53 |
5 |
| 54 |
6 |
| 55 |
7 |
| 56 |
8 |
| 57 |
9 |
| 58 |
: |
| 59 |
; |
| 60 |
< |
| 61 |
= |
|
| 62 |
> |
| 63 |
? |
| 64 |
@ |
| 65 |
A |
| 66 |
B |
| 67 |
C |
| 68 |
D |
| 69 |
E |
| 70 |
F |
| 71 |
G |
| 72 |
H |
| 73 |
I |
| 74 |
J |
| 75 |
K |
| 76 |
L |
| 77 |
M |
| 78 |
N |
| 79 |
O |
| 80 |
P |
| 81 |
Q |
| 82 |
R |
| 83 |
S |
| 84 |
T |
| 85 |
U |
| 86 |
V |
| 87 |
W |
| 88 |
X |
| 89 |
Y |
| 90 |
Z |
| 91 |
[ |
| 92 |
\ |
| 93 |
] |
| 94 |
^ |
|
| 95 |
_ |
| 96 |
` |
| 97 |
a |
| 98 |
b |
| 99 |
c |
| 100 |
d |
| 101 |
e |
| 102 |
f |
| 103 |
g |
| 104 |
h |
| 105 |
i |
| 106 |
j |
| 107 |
k |
| 108 |
l |
| 109 |
m |
| 110 |
n |
| 111 |
o |
| 112 |
p |
| 113 |
q |
| 114 |
r |
| 115 |
s |
| 116 |
t |
| 117 |
u |
| 118 |
v |
| 119 |
w |
| 120 |
x |
| 121 |
y |
| 122 |
z |
| 123 |
{ |
| 124 |
| |
| 125 |
} |
| 126 |
~ |
|
从这个例子可以看出,用固定数值的加密方法是很容易被破译的。想一想,如何设计另一个算法,使每一个字符串偏移值各不相同。 |
|
四、自由发问。遇到困难可以请教周围同学或老师。
* 友情提示:本文档只供本校师生上课时辅助使用,不是正规的教学设计或教案。 |