打字猴:1.700414514e+09
1700414514 计算机是怎样跑起来的 [:1700412650]
1700414515 计算机是怎样跑起来的 4.5 画流程图来思考算法
1700414516
1700414517 为了充分体现流程图的用途,下面稍微涉及一些有关算法的内容。所谓算法(Algorithm)就是解决既定问题的步骤。想让计算机解决问题,就需要把问题的解法转换成程序的流程
1700414518
1700414519 仅用一条语句就能实现“石头剪刀布游戏”的编程语言是不存在的。如果眼下待解决的问题是如何编写“石头剪刀布游戏”,那么就必须考虑如何把若干条指令组合起来并形成一个解决问题的流程。如果能够想出可以巧妙实现“石头剪刀布游戏”的流程,那么这个问题也就解决了,换言之算法也就实现了。要是诸位被前辈问到:“这个程序的算法是怎样的呢?”那么只要回答清楚程序的流程就可以了。或者画出流程图也是可以的,因为表示程序流程的流程图本身就能解释算法
1700414520
1700414521 思考算法时的要点是要分两步走,先从整体上考虑程序的粗略流程,再考虑程序各个部分细节的流程。有关细节上的流程将在下一章介绍,在这里笔者先介绍粗略的流程。这是一种相当简单的流程,虽然或多或少会有例外,但几乎所有的程序从整体来看都具有一个一成不变的流程,那就是“初始化处理”→“循环处理”→“收尾处理”
1700414522
1700414523 试想,用户是怎样使用程序的呢?首先,用户启动程序(程序执行初始化处理)。接下来用户根据自己的需求操作程序(程序进入循环处理阶段)。最后用户关闭程序(程序执行收尾处理)。这样的使用方法就可以直接作为程序的整体流程。还是以“剪刀石头布游戏”为例,分出初始化处理、循环处理、收尾处理之后,就可以画出如图4.12那样的粗略流程图。图中把5次循环处理看作是一个整体,当成是一次处理(用矩形 表示)
1700414524
1700414525 图4.12 “石头剪刀布游戏”的粗略流程图
1700414526
1700414527
1700414528
1700414529
1700414530 反映程序整体流程的粗略流程图还可以用来描述笔者写作本书时的流程(如图4.13所示)。首先,启动文字处理机,加载已经写到一半的稿件(初始化处理)。接下来,不断地输入文字(循环处理)。最后,保存稿件(收尾处理)
1700414531
1700414532 图4.13 使用“文字处理机”的粗略流程图
1700414533
1700414534
1700414535
1700414536
1700414537 我建议那些因为程序没有按照自己的想法来工作而烦恼的人,不妨试试从勾画反映程序整体流程的粗略流程图下手。只要在此之上慢慢地细化流程,就能得到详细的流程图。接下来再按照流程图所示的流程编写程序就轻松了
1700414538
1700414539
1700414540
1700414541
1700414542 计算机是怎样跑起来的 [:1700412651]
1700414543 计算机是怎样跑起来的 4.6 特殊的程序流程–中断处理
1700414544
1700414545 最后稍微介绍一下两种特殊的程序流程–中断处理和事件驱动(Event Driven)。首先说明中断处理
1700414546
1700414547 中断处理是指计算机使程序的流程突然跳转到程序中的特定地方,这样的地方被称为中断处理例程(Rountine)或是中断处理程序(Handler),而这种跳转是通过CPU所具备的硬件功能实现的。人们通常把中断处理比作是接听电话。假设正坐在书桌前处理文件,这时突然来电话了,不得不停下手头的工作接听电话,接完电话再回到之前的工作。像这样由于外部的原因使正常的流程中断,中断后再返回之前流程的过程就是中断处理流程
1700414548
1700414549
1700414550
1700414551
1700414552
1700414553 在第2章微型计算机的电路图中已经展示过,在Z80 CPU中有和两个引脚,它们可以接收从I/O设备发出的中断请求信号(引脚用于处理一般的中断请求。引脚则用于即使CPU屏蔽了中断,也可在执行中的指令结束后立即响应中断请求的情况)。以硬件形式连接到CPU上的I/O模块会发出中断请求信号,CPU根据该信号执行相应的中断处理程序。在诸位使用的个人计算机上,中断请求信号是由连接到周边设备上的I/O模块发出的。例如每当用户按下键盘上的按键,键盘上的I/O模块就会把中断请求信号发送给CPU。CPU通过这种方式就可以知道有按钮被按下,于是就会从I/O设备读入数据(如图4.14所示)。CPU并不会时刻监控键盘是否有按键被按下
1700414554
1700414555 图4.14 中断请求信号由连接到周边设备上的I/O发出
1700414556
1700414557
1700414558
1700414559
1700414560 中断处理以从硬件发出的请求为条件,使程序的流程产生分支,因此可以说它是一种特殊的条件分支。可是,在编写的程序中并不需要编写有关中断代理的代码。因为处理中断请求的程序,或是内置于被烧录在计算机ROM中的BIOS系统(Basic Input Output System,基本输入输出系统)中,或是内置于Windows等操作系统中。诸位只需先记住以下两点即可:计算机具有硬件上处理中断的能力;中断一词的英文是Interrupt。
1700414561
1700414562
1700414563
[ 上一页 ]  [ :1.700414514e+09 ]  [ 下一页 ]