第3章银行常用程序设计语言.docx

上传人:b****4 文档编号:4883793 上传时间:2022-12-11 格式:DOCX 页数:31 大小:59.03KB
下载 相关 举报
第3章银行常用程序设计语言.docx_第1页
第1页 / 共31页
第3章银行常用程序设计语言.docx_第2页
第2页 / 共31页
第3章银行常用程序设计语言.docx_第3页
第3页 / 共31页
第3章银行常用程序设计语言.docx_第4页
第4页 / 共31页
第3章银行常用程序设计语言.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

第3章银行常用程序设计语言.docx

《第3章银行常用程序设计语言.docx》由会员分享,可在线阅读,更多相关《第3章银行常用程序设计语言.docx(31页珍藏版)》请在冰豆网上搜索。

第3章银行常用程序设计语言.docx

第3章银行常用程序设计语言

第3章银行常用程序设计语言

3.1结构化程序设计基本原理

结构化程序设计,是著名学者E.W.戴文斯特拉和C.A.R.霍尔于60年代后期提出的一种开创性的程序设计方法,它已成为当今计算机程序设计的重要基石和先进工具之一。

在计算机科学中,“计算机程序设计=算法+数据结构+程序设计方法学+计算机语言”,其核心和基础是算法。

从根本上讲,计算机程序只不过是算法的具体表述形式之一,即用计算机语言描述的算法;而程序编码,即用计算机语言编写出程序,也无非是算法构造(即算法设计)的最终表现形态而已。

简而言之,离开了算法及其构造这个计算机程序设计的基础和关键,程序及其编码就成了无木之林、无源之水。

3.1.1程序设计基本要素

1.解题的基本模式

人解题的基本模式,可概括成图3.1,电子计算机解题的基本模式可概述为图3.2,图3.1与图3.2清楚地表明,电子计算机只是部分地取代了人脑解题的功能。

因此,应用计算机解决各种不问的实际问题,没有人的积极参与是不行的。

人无疑是“计算机应用与应用计算机”的最活跃、最能动、最根本的首要因素。

从计算机科学来讲,真正客观地把“人”与“计算机”有机地统一起来,组成能充分发挥作为主导的人与作为主体的计算机各自特长与效能的强大而完整的现代信息处理高级系统“人—计算机系统”,则是计算机程序设计(computerprogramdcsign)。

图3.1人解题的基本模式示意图图3.2电子计算机解题的基本模式

计算机程序设计的实施,总是从问题分析开始的。

借助计算机解决具体问题的基本过程,实际上就是人们根据给定问题的性质和要求,考虑计算机系统的性能和特点,采用计算机科学的方法和技术,实现“以人为主导、以计算机为主体”,解决给定问题的辨证统一过程。

通常可概略地分为问题分析、算法设计、程序编码、分析调试、运行维护五个基本阶段。

前二个基本阶段是人充分发挥其主导作用,而后两个基本阶段则是计算机充分显示其主体作用。

2.问题分析

问题分析基本阶段、可进一次分解成如下诸环节:

精确描述问题,识别数据输入,判定信息输出,正确设置变量,建立数学模型,决定处理方式,选择计算方法等。

其中,建立数学模型与选择计算方法尤其重要

1)精确描述问题

精确描述问题,是指必须准确无误地认清所给问题,并精密无差地明确解决它的系统目标。

即切实做到对其内容、含义、性质、条件、需求、关系、目的等所有情况心中有数。

这一环节倘若有疏谬,则将“差之毫厘、失之千里”。

显然,在精确描述问题时,应力求考虑周密、分析详尽、描述精确,而避免草率行事、似是而非、描述失当。

同时,还应当防止错误化、简单化、复杂化这三种不良倾向。

例1错误化的问题描述:

如果把求解一元二次方程错误地当成求解二元一次方程组或一元一次方程来处理,必然一无所获;同样,假若把建立职工工资表的问题混同于学生成绩表问题,同样于事无益。

例2简单化的问题描述:

在运动员运动成绩名次处理中,最容易发生的不完备问题描述是:

忽视“同成绩者必须并列同一名次”的原则,而误将名次排列问题简单地等同于成绩排序问题(尽管后者总是前者的基础)。

显然,这种不完备的名次问题描述,使得一旦某些运动员具有相同运动成绩时,就会出现“成绩相同而名次各异”的怪事。

例3复杂化的问题描述:

求一元二次方程实根问题,如果误被扩大为还要考虑求其虚根,这当然是画蛇添足。

一般说来,成功的问题描述,除较简易者外。

通常是给定问题领域的终端用户专家与计

算机的应用开发专家互相取长补短、共同切磋、通力合作的产物。

并且前者应当比后者(如果计算机应用开发专家不是给定问题领域的行家)更能发挥自己的作用,而后者则应该虚心向前者请教有关此课题的各种问题,以便使自己尽快从外行转变为内行(或准内行),同时促使该问题领域的终端用户专家尽早与自己步调一致,对给定问题尽可能考虑周详、表达准确、描述完整。

显而易见,如果计算机应用开发专家在所给定问题领域内具有丰富的知识,将极有益于该问题的精确描述;而如果计算机应用开发专家同时又是给定问题领域的行家,就更能使对所论问题的描述工作合理而和谐地统一于一人。

正因为如此,从事计算机应用与开发者,应当自觉养成善于学习、勤于总结、擅长积累、长于合作、精于描述的良好风尚。

2)识别数据输入

识别数据输入,是指在对解决给定问题所要涉及到的若干数据及其处理过程中,识别哪些数据是需要从外部提供(即输入)给计算机系统,并决定如何提供。

计算机系统处理的数据,按其产生的方式,可分为输入性数据与非输入性数据。

前者实质上应从计算机系统的外部环境获得,故具有灵活性而稍欠高效率;而后者则实际上应该由计算机系统本身自动生成,故具有高效率而略逊灵活性。

因此,正确辨别输入性数据与非输入性数据,对提高计算机解题的工作效率与适应能力意义重大。

例4求任意给定的一元二次方程ax2+bx+c=0的根。

需要输入它的系数a、b、c的值(因为它们均为输入性数据),并以采用键盘人工输入的方式为宜;而其根x1和x2的值就不得

采用输入方式来获取(因为它们都是非输入性数据),可用求根公式和韦达定理由计算机自动计算来求得。

例5建立职工工资表,应根据每个职工输入其基本数据:

代号、姓名、各项应得工资基础数据(如:

基本工资、工龄工资、物价补贴、奖金、……)、各项应扣工资基础数据(如:

房租费、水电费、互助储金、罚款、……)等输入性数据,且以采用由磁盘文件输入的方式为妥;而非输人性数据如应得工资、应扣工资与实发工资不用输入方式来获得,而用求和或求差的运算公式由计算机计算生成。

3)判定信息输出

判定信息输出,是指在解决给定问题过程中,必须使人们(终端用户)得到所关心的信息,即把人们真正所需的信息从计算机系统内传送(即输出)给人们,并决定怎样传送。

在这一阶段,应当正确判定真正为解决给定问题所必需的信息输出及其适度的输出总量。

同时,还应当防止信息输出量不足与过剩两种不良倾向。

因为信息输出量不足不能完整地给出符合要求的正确答案;而信息输出量过剩所输出的信息超过了解决给定问题所需程度,造成计算机资源的严重浪费。

例6在输出发给职工个人的工资信息时,若只输出职工实发工资数而没有同时输出其各项应得与应扣工资基础信息,那就会因其信息输出量不足而使人们不知自己为什么会得此实发工资数,从而增加财务人员不必要的解释工作量,造成工资发放工作的被动。

如果在输出职工工资各信息的同时,再累赘地给出诸如婚否、年龄、性别、学历、履历之类与工资发放无关的人事管理信息,当然毫无意义。

4)正确设置变量

正确设置变量,是指对所论问题的数据输入、加工处理、信息输出等主要操作中所涉及到的数据(包括原始数据、常数变数、中间结果、最终结果等),必须采用适当的变量形式来描述和处理。

正确、合理、经济地设置所需各变量,是计算机应用技术的基本功之一。

例7在求解一元二次方程ax2+bx+c=0的实根时,通常可选用变量a、b、c、x1、x2,以分别表示所给一元二次方程的二次项系数、一次项系数、常数项、实根1、实根2。

显然,如果只选用a、b、c等三个变量,则将不便于求根处理;而若再增加x、x3、x4等无关的变量,则既无必要又不经济。

5)建立数学模型

建立数学模型,是指在对给定问题进行了科学的定性分析基础上,进一步抽象出对此问题的定量化数学描述形式(但应注意它未必是解析表达式)。

一般说来,通过数学模型来处理并解决给定问题,比直接对原始形态下的非数学模型的朴素形式更为深刻、简明、有效。

因此,建立数学模型是问题分析阶段的核心工作,它是借助计算机解决给定问题的基本前提。

当然,许多问题常常可以表述为有关数学解析表达式(例如:

求解一元二次方程,解线性方程组,投入产出等问题);但是必须指出,相当多的问题未必总能抽象为相应的数学解析表达式(例如:

职工工资表处理,银行业务处理,图书资料检索等问题)。

因此,数学解析表达式仅仅是数学模型的主要形式之一,而切不可误以为“数学模型就是数学解析表达式”。

由于描述同一问题的数学模型未必唯一,因而努力挑选出能更恰当地反映和更简捷地解决给定问题的优化(或满意)数学模型至关重要。

例8在求解一元二次方程实根时,若已求得一个实根x1,则另一实根可用如下两种数学模型之一求得:

一是利用求根公式;二是利用韦达定理。

显然,第二个数学模型比第一个数学模型更为简易、精确。

应当指出,数值领域问题通常易于建立其数学模型(例如,数值积分、数值微分、线性规划、动态规划、线性方程、存储问题、排队问题等都有较成熟的数学模型);而非数值领域问题(例如:

排序、查找、分类、索引等)则常常难于建立其数学模型。

因此实际应用中,如果所论问题已有其相应的较成熟的数学模型,则应优先考虑借用或改进现有数学模型;否则,就应当由设计者利用解析法,或数值法、直观法、试探法、类推法等方法,自行构造相应的数学模型。

6)决定处理方式

决定处理方式,是指对给定问题究竟是采用人工处理方式,还是采用计算机处理方式。

应视所论问题的实际情况而权衡利弊后慎重决定,因为并非总是以计算机处理方式为上策。

计算机应用,实际是当今历史条件下一种新的社会经济活动;因而,应当用现代社会经济的一般尺度—社会效益与经济效益,来衡量和决定是否宜于应用计算机解决给定问题。

通常,是否采用计算机处理方式的判定条件如下:

⑴当人工处理方式所需时间和费用比计算机处理方式代价高时;

⑵当解决所给定问题的数值计算或数据处理工作量非常大,以至于难于用人工处理方式来进行时;

⑶当同一性质的给定问题重复出现率高,要求多次作类似处理,而且每次解决有关问题的处理过程基本上大向小异(即只是某些数据有所不同而已);

⑷当要求解决所给问题的响应速度快、信息可靠性好、数据精度高、自动化程度高时。

显然,若解决的给定问题并不具备上述任何一个条件,则表明该问题的处理不必采取计算机处理方式,而应当考虑采用人工处理方式,并同时终止以下各阶段的计算机处理过程。

例9按照上述第⑴个条件,对某年某月某职工工资表的一次性特殊处理,不宜采用计算机处理方式,因为计算机仅一次性地处理这一特定工资表的代价高于人工处理同一问题的代价。

但是,如果希望每年每月都能尽快建立某单位的当月职工工资表,则采用计算机处理方式,因为它符合上述第⑶、⑷两条件。

例10对任给n(≤10)个实数,要找出其中最大者与最小者,自然用人工处理最为简便;但是对任给n(≥1010)个实数,同样也要找出其中最大者与最小者,那就不是任何一个人毕生所能完成的(因为以每秒处理1个数据的速度估算,要处理完1010个数据竟要300年以上),因此只能采用计算机处理方式。

7)选择计算方法

选择计算方法,是指必须精心挑选适合所论问题的最优计算方法,因为计算方法得当与否,其效果往往差别很大。

一般来说,描述给定问题的数学模型不一定是便于计算机处理的数学表述形式,因而通常还必须精心选择能将指定数学模型转化为适于计算机处理的计算方法(因为表述同一数学模型的计算方法常常不是唯一的)。

必须强调指出,计算方法选择得当与否关系极为重大,它不仅直接影响到解决所给问题的效率、精度和费用,而且关系到整个工作的成功与失败。

例11求一元五次方程x5+7x-6=0的实根(绝对误差精确到0.000001)的计算方法,可有如下两种迭代法,但其结果却截然不同。

先看计算方法1:

x2=

,其迭代计算过程及结果如下:

迭代次数x1x2绝对误差|x1-x2|

10.0000001.4309701.430970

21.430970-1.3206102.751580

3-1.3206101.7243303.044940

41.724330-1.4343103.158640

5-1.4343101.7419703.176280

61.741970-1.4401003.182070

7-1.4401001.7428503.182950

81.742850-1.4403803.183230

9-1.4403801.7429003.183280

101.742900-1.4404003.183300

11-1.4404001.7429003.183300

……

显然,计算方法1无论迭代计算多少次,永远不可能求得合乎要求的原方程的实根,但是与此相反,计算方法2却可以很快求得合乎要求的原方程的实根。

再看计算方法2:

x2=6/(x14+7),其迭代计算过程及结果如下:

迭代次数x1x2绝对误差|x1-x2|

10.0000000.8571430.857143

20.8571430.7957800.061363

30.7957800.8106990.014919

40.8106990.8073250.003374

50.8073250.8081020.000777

60.8081020.8079230.000175

70.8079230.8079640.000041

80.8079640.8079550.000009

90.8079550.8079570.000002

100.8079570.8079570.000000

至此已经求得原方程的实根x≈0.807957(其绝对误差不超过0.000001)。

比较计算方法1与计算方法2及其结果,便可得出如下结论,对该数学模型x5+7x-6=0而言,计算方法1是发散的,为失败的计算方法;而计算方法2则是收敛的,为成功的计算方法。

由此可见,搞好问题分析诸环节的确事关重大,而那种轻视甚至忽视问题分忻,对所论问题—知半解或者不甚了解,便贸然急于仓促编写程序的不良习惯,应当坚决戒除。

3.1.2算法设计初步

继问题分析阶段之后,就进入应用计算机解决问题的关键性基本阶段—算法设计(algorithmdesign),即设计算法的全过程。

算法是计算机程序设计的核心,是计算机科学中最基本的重要概念之一。

正确学习、理解、掌握这一基本概念,是非常重要的。

1.系统与算法

系统(system),可分为可控系统(controllablesystem)与非控系统(Uncontrollablesystem)。

显然,与人类关系密切的不是非控系统(例如:

彗星运动系统、雷电生成系统、台风形成系统、……),而是可控系统(例如:

车队作战系统、电力调度系统、电器自控系统、……)。

可控系统可分为施控子系统(controllingsubsystem)与受控子系统(controlledsubsystem)。

可控系统的根本特性,是通过其施控子系统对受控子系统的调控作用来对整个系统实行控制。

可控系统的行为方式,即系统运行全过程中施控子系统与受控子系统彼此响应、协同工作的行为方式。

其根本模式可抽象为系统算法(systema1gorithm),简称算法,即:

可控系统为实现系统目标,要求其操作执行者对操作对象,遵照系统所认定的操作方式,遵从系统所设定的控制方式,并一步一步具体施行的有穷操作过程的描述。

因此,如下事实显然成立并且十分重要:

1)系统目标不同,则其算法必不同;

2)系统目标相同,而操作执行者不同,则其算法必不同;

3)系统目标、操作执行者相同,而操作对象不同,则其算法必不同;

4)系统目标、操作执行者、操作对象相同,而操作方式不同,则其算法必不同;

5)系统目标、操作执行者、操作对象、操作方式相同,而控制方式不同,则其算法必不同。

当且仅当系统目标、操作执行者、操作对象、操作方式、控制方式都相同的算法,才是相同的算法。

例如:

提供淡水的水井、汲取卤水的卤井、抽取石油的油井虽然都是“井”,但由于其系统目标各异,故它们的勘测打井算法不同;有人驾驶侦察机与无人驾驶侦察机,其系统目标都是“侦察敌方、获取情报”,但由于其操作执行者各异,故它们的侦察飞行算法必不同;由某人等分一根长为35cm的线段,其系统目标、操作执行者、操作别象均无区别,但若认定不同的操作方式(如:

仅用圆规和直尺作图寻找线段中点的几何操作;与采用对折等长线条或细线决定线段中点的模拟操作;或利用量具测算线段中点的测算操作等),则他的等分线段算法必不同;四川都江堰水利工程系统的系统目标、操作执行者、操作对象、操作方式都不变,但若设定不同的控制方式(如:

正常水位时的灌溉水量调度控制方式,警戒水位时抗洪水量调度控制方式),则其河水调度算法必不同。

由此可见,算法是一切可控系统固有的重要本质特征与统一的基本行为模式,算法的系统目标、操作执行者、操作对象、操作方式、控制方式五大基本要素,对任何可控系统都是司等至关重要,它们之间互相依存、相互协同、共成算法的天然联系,可概括成如下算法公式:

算法=系统目标+操作执行者+操作对象+操作方式+控制方式

2.计算机与算法

以人为操作执行主导者、计算机为操作执行主体者的系统算法,称为计算机算法(computeralgorithm),简称算法。

但是,它绝不是天然自生的,而是由人在问题分析基础上专门为用计算机解决给定问题而设计产生的一类待殊算法。

所谓计算机算法,是指:

“人—计算机”系统力解决给定问题,需要以“人为主导、计算机为主体”,对所论问题的数据,采取所设定的顺序结构、选择结构、循环结构、并行结构、子算法结构(必要时方可辅以捷径结构)及其结构化组合的控制方式,来组织和控制所认定的操作方式,并一步一步具体实施的有穷操作过程的描述。

事实上,人的主导作用主要体现在:

首先是算法设计,即如何针对计算机的特点和要求,来科学地设计解决给定问题的算法;其次是程序编码(或称编写程序,简称编程),即如何按照给定计算机语言的要求和特点,正确地把所设计的算法编写(翻译)成该计算机语言下的程序;最后是结果分析,即如何依据客观规律与问题要求,慎重地甄别计算机执行给定程序后所得执行结果的正确性、科学性与合理性。

而计算机的主体作用主要体现在:

一旦人设计好解决给定问题的算法,编写好该算法所决定的计算机语言程序,并把该程序交给计算机执行之后,计算机将精确、及时、有效地自动(必要时可由人辅以适当的配合操作)执行该程序,并输出人们所希望的执行结果。

显然,借助计算机来解决给定的问题,其热点、重点、难点都是算法设汁,而绝不是人们常常误认为的程序编码(即用计算机语言来编写程序)。

因此,循着“对→好→巧→妙→绝”的算法设计发展轨迹,去努力探索和追求解决同一问题的算法族中佼佼者—最优算法,是每一个算法设计人员应有的宝贵品质和良好习惯。

例12一个最简单的算法

算法注释

第1步开始{算法自此开始}

第2步行输出“您好!

”{在某行原样输出该字符串,且每个汉字占2格}

第3步结束{算法到此结束}

3.算法的系统及其目标

算法的可控系统是现代高级信息处理“人—计算机”系统,其系统目标是解决给定问题。

这表明,在解决给定问题全过程中,算法必须同时为人和计算机两方面都提供及时、可靠、方便、友好的“人—机”工作界面,使人和计算机能得以充分发挥各自特长与效能。

其必须如此的原因在于:

算法之所以特别重要和有用,并不是算法本身,而是算法被执行(即其操作被一步一步具体施行)后所输出的信息—执行结果。

因为执行结果不仅是算法的系统目标的具体实现,尤其是人们所关心结果的具体兑现。

因此,凡能正确实现系统目标的算法,即能向人们提供正确及时、清晰直观、简明易懂、信息完备的执行结果的算法,都是应当提倡的良好算法;反之,则是应该防止的病态算法甚至错误算法。

例13试设计并比较“求最小1、2、3位数的算术平均数”的良态算法和病态算法。

问题分析:

显然,最小1、2、3位数必为1、10、100。

若设x为用以描述所求算术平均数的变量,并考虑到为人和计算机提供良好界面,则良态算法可用自然语言描述如下:

算法注释(良态算法)

第1步开始{算法自此开始}

第2步x←(1+10+100)/3{求算术平均值x的赋值操作}

第3步行输出“最小1、2、3位数的{在某行展示最终结果的性质}

算术平均数为”

第4步行输出x{在下一行展示所得算术平均值}

第5步结束{算法到此结束}

该算法中,赋值操作“x←(1+10+100)/3”的算法意义是,把(1+10+100)/3的值存放到变量x中。

因此,良态算法的执行结果是:

最小1、2、3位数的算术平均数为⌴37.0(其中,“⌴”表示一个空格)

但是,如果设计时考虑不周、处理不当,而误失上述第3步操作,便只能得到病态算法。

因为它只能输出一个孤零零的数“37.0”,而这常会使人(包括算法设计者和算法使用者)迷惑不解–产生诸如“这个‘37.0’到底是何物?

来自何方?

”之类的疑问。

自然,如果连良态算法中的第3步也误被丢弃,则所得的算法就是全然无用的“病态算法”了。

4.算法的操作执行者与操作对象

认清算法的操作执行者及其对象的性质、特点与效能,是算法设计顺利进行并取得成功的基本保证。

1)算法的操作执行者

算法的操作执行者,其主导是人,其主体是计算机。

既然其主导者是人而不是计算机,故在算法设计中“以人昏昏,使计算机昭昭”是不行的;既然其主体者是计算机而不是人,故在设汁算法中,既要充分发挥人的主导作用,又绝不能“越俎代庖”对计算机取而代之。

2)算法操作对象

既然算法的系统目标是解决给定问题,算法的操作执行者是“人–计算机”,因此算法的操作对象必然是该问题所涉及到的数据,在计算机科学中,脱离数据的算法与脱离算法的数据都是同样不可思议的。

计算机的数据,总是属于一定的数据类型,各种类型数据,总是以一定的数据形态(即常数、变量、函数、表达式)出现在算法(或程序)中。

每一种数据类型,决定本类数据的取值方式与运算方式;每一种数据形态,则具有自己的结构方式与使用方式。

属于同一数据类型的不同形态数据(常数、变量、函数、表达式),统称为同型量(或同型数据)。

不同计算机语言的数据、数据类型、数据形态各有所不同,但其结构本质与构造实质则都是同构化的。

因此,通过对它们共同的典型代表(如表3.1所示)与数据形态的学习,必将有利于人们学习并掌握各种计算机语言下的数据类型。

表3.1同构化数据类型的划分示意

数据类型

内存

数据类型

基本类型

低级类型

标准类型

数值型

整型

实型

字符型

字符串型

逻辑型

非标准类型

枚举型

子界型

其他型

中级类型

数组型

非数组型

集合型

其他型

扩展类型

高级类型

内存记录型

指针型

其他型

超级类型(发展中各内存数据类型)

外存

数据类型

基本类型

低级类型

字符

基本项

组合项

中级类型

外存记录

文件

扩展类型

高级类型

数据库

其他

超级类型(发展中各外存数据类型)

为了增强算法(或程序)的可移植性,建议在算法(或程序)设计中主要甚至尽可能优先使用最基础的数据类型,即整型、实型、字符型、字符串型、逻辑型、数组型、记录型、文件型、数据库等,特别是前四者所构成的标准(内存数据)类型。

5.算法的操作方式与控制方式

算法的操作方式与控制方式,是算法最富有生气、最具有活力、最反映才智的关键基本要素。

前者,其形态往往变化不大,并且其构造较简单而具体,有如构成算法的躯体;后者,其形式常常变化多端,而且其构造较复杂而抽象,恰似主宰算法的灵瑰。

不同计算机诺言的操作方式与控制方式各有不同,但其结构本质与构造实质则是同构化的。

人们通过对同构化操作方式与控制方式的学习,将对算法有更深的认识。

1)算法的职能操作与操作形式

数据运算与职能操作,是构成算法所认定的同构化操作方式的基础,是用以解决所论问题操作方式的描述手段。

当然,不同计算机语言的数据运算与职能操作各有持色,但是无论何种计算机语言都无一例外地以

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1