说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

简单计算函数的编写过程-VB资料

HTML文档下载 WORD文档下载 PDF文档下载
简单计算函数的编写过程-VB资料
作者:胡晓磊

  计算主程序负责初始算式整理、算式中变量的赋值、脱括号及脱括号后的算式整理、调用简单计算函数、输出计算结果。

  思路:如果第一个运算符是乘除,则计算它前后的两个数,其值作为新算式的第一个数,再继续计算这个新算式;如果是加减则用第
一个数加减后面的算式(如果是减,还要将其后的+变为-,-变为+)。

  这是一个递归的思路,据此得到以下算法:
A: 函数入口,需要两个参数,分别表示该算式在大算式中的起止位  置。
B: 如果算式中只有一个元素,则函数值等于该元素,L;否则C
C: 如果算式中有三个元素,即“数符数”的形式,则D;否则E
D: 计算它们,并将计算结果作为函数值,L
E: 如果第一个运算符是乘除则F;否则H
F: 计算前两个数,并将结果赋值给第二个数。
G: 函数值等于以第二个数为起点的新算式的值。L
H: 如果第一个运算符是+则I;否则J
I: 函数值等于第一个加上以第二个数为起点的算式的值。L
J: 将后面的加号都换成减号,而减号则都换成加号。
K: 函数值等于第一个数减去以第二个数为起点的新算式的值。
L: 返回。

  以此算法得到QB语言程序function jdjs$(a%,b%)(附后)

  虽然调试通过了,却总不满足,一个简单算式的计算好象不至于
如此复杂。为此闷了两天,晚上停电,黑暗中却出现了灵感,赶紧深
入思考,得到思路二:

  根据算术运算先乘除后加减的规则,先搜索算式中的乘除号,进
行计算,其值作为新的元素,代替原来的三个元素,然后再搜索、计
算、替代……直到找不到乘除号,此时的算式只有加减,顺序进行加
减运算,即可得到结果。

  根据思路二,得到算法二:
A: 函数入口,仍需要两个参数a和b。
B: 搜索算式中的乘除号,若有则C;否则E
C: 计算与之相连的前后两个数,并赋值给第一个数。
D: 将后面的各元素均前移两位,形成新的算式,B
E: 如果只有一个元素,则G;否则F
F: 按1±2→2,2±3→3,……的方法顺序计算。
G: 返回最后那个元素的值。

  以此算法得到QB语言程序function jdjs2$(a%,b%)(附后)

  算法二思路简洁清晰,容易实现,而且因不用递归,节省了大量
的堆栈操作,速度也应该更快。

  附:两个简单计算函数源程序说明:程序中的csf()和lx()是主
程序中定义的全局数组变量,csf存储算式各段,lx存储各段类型,这
里规定+1 -2 *3 /4 (5 )6数字7。
```````````````````````````````````````````````````````````

DEFINT A-B, I-N
DEFSTR C
DEFDBL D
FUNCTION jdjs$ (a, b) `简单计算函数之一, 递归算法
IF a = b THEN `如果只有一个元素,则立即返回这个元素
jdjs = csf(a)
ELSE
IF b - a = 2 THEN `如果有三个元素,即"数符数"的形式,则将计算
结果返回
da = VAL(csf(a)): db = VAL(csf(b))
SELECT CASE lx(a + 1)
CASE 1: da = da + db
CASE 2: da = da - db
CASE 3: da = da * db
CASE 4: da = da / db
END SELECT
jdjs = STR$(da)
ELSE `如果有更多的元素,则应根据以下情况分别处理
IF lx(a + 1) = 1 THEN `第一个运算符如果是“+”,则进行递归处理
jdjs = STR$(VAL(csf(a)) + VAL(jdjs(a + 2, b)))
ELSEIF lx(a + 1) = 2 THEN `如果是"-",则需要将后面的加减号对
调,然后进行递归处理
FOR kk = a + 3 TO b - 1 STEP 2
IF lx(kk) = 2 THEN lx(kk) = 1 ELSE IF lx(kk) = 1 THEN lx(kk)
= 2
NEXT
jdjs = STR$(VAL(csf(a)) - VAL(jdjs(a + 2, b)))
ELSE `如果是乘除号,则先计算这两个数并赋值给第二个数,然后进行
递归处理
IF lx(a + 1) = 3 THEN
csf(a + 2) = STR$(VAL(csf(a)) * VAL(csf(a + 2)))
ELSE
csf(a + 2) = STR$(VAL(csf(a)) / VAL(csf(a + 2)))
END IF
jdjs = jdjs(a + 2, b)
END IF
END IF
END IF
END FUNCTION

``````````````````````````````````````````````````````````
DEFINT A-B, I-N
DEFSTR C
DEFDBL D
FUNCTION jdjs2$ (a, b) `简单计算函数之二, 先乘除后加减的算法
DO: ycc = 0 `该循环先进行算式中的乘除运算. Ycc记录算式中有无
乘除号
FOR I = a + 1 TO b - 1 STEP 2
IF lx(I) > 2 THEN
IF lx(I) = 3 THEN
csf(I - 1) = STR$(VAL(csf(I - 1)) * VAL(csf(I + 1)))
ELSE
csf(I - 1) = STR$(VAL(csf(I - 1)) / VAL(csf(I + 1)))
END IF
FOR k = I TO b - 2: csf(k) = csf(k + 2): lx(k) = lx(k + 2): NEXT `整理算式
ycc = 1: EXIT FOR
END IF
NEXT
`FOR kk = a TO b: PRINT kk, csf(kk), lx(kk): NEXT `调试时用来
观察变量
IF ycc = 1 THEN b = b - 2
LOOP UNTIL ycc = 0
IF b > a THEN `再按顺序进行加减运算,如果只有一个元素,则跳过下
面的循环,直接返回它
FOR I = a + 1 TO b - 1 STEP 2
IF lx(I) = 1 THEN
csf(I + 1) = STR$(VAL(csf(I - 1)) + VAL(csf(I + 1)))
ELSE
csf(I + 1) = STR$(VAL(csf(I - 1)) - VAL(csf(I + 1)))
END IF
NEXT
END IF
jdjs2 = csf(b)
END FUNCTION
保持初始的窗体大小-VB资料 编程实现将所有窗口最小化-VB资料 不规则形状窗口详细说明 -VB资料 不用 API ,直接调用关联的程序 -VB资料 处理过程时的鼠标显示 -VB资料 窗口处理技巧大全 -VB资料 窗口事件的发生顺序-VB资料 VB创建不规则窗口 VB创建透明窗体 VB创建位图菜单 VB创建无 Icon 的窗口 打开 Win95 的创建快捷方式窗口-VB资料 打印机技巧 -VB资料 带有历史记录功能的菜单-VB资料 得知目前Mouse所指的Menu Item是哪一个-VB资料 调整 Combo 下拉部分的宽度 -VB资料 对象是使用 TAB 键还是鼠标激活的 -VB资料 防止用户编辑文本框控件中的内容-VB资料 改变 ListIndex而不发生 Click 事件 -VB资料 改变 TreeView 的背景 -VB资料 改变安装向导的背景色-VB资料 改变按钮的文本颜色-VB资料 功能强大的增强列表框 ――VB6控件LISTVIEW使用指南 关闭MDI窗体中所有的子窗体-VB资料 规范设计Windows应用软件菜单-VB资料 VB建立可滚动的视区 -VB资料 VB建立可下拉选择的属性 -VB资料 VB建立无模式窗口 -VB资料 将VB5中的ToolBar变成平面的 将程序从任务列表中隐藏 -VB资料 将我自已的命令加入窗体的控制菜单栏-VB资料 2000下开发的程序在98或95上使用的问题 谁能告诉我关于文件传输的思路 怎样向数据库中添加记录? 如何自動截取上傳文件的文件名保存在數據庫里? TCHAR[32]和CString, char *之间应该如何转化? 怎样在程序里显示jpg,gif图片? 关于按钮、工具条等问题,请进来看看 有两个CTime变量,t1,t2,我想把t1的日期部分和t2的时间部分合并成一个CTime变量t3,怎么实现? 有谁知道珠海的做J2EE薪水有多少(平均水平),谢谢大家! 我编写的CORBA为何总是提示"File not found 'OrbPas.dcu'" 准备今天打辞职报告! 请教高人!!!!!!!!!!!!!!!!!!!!!!!!!!!! LINUX支持多處理器 ActiveReports P2 套打票据打几页后出现套不准,请教? 关于delphi中Label控件的字体问题?? 请问哪里有ASP+ACCESS 的查询源程序下载? 小弟需要一份详细的数据库设计说明,不知有没有人可以帮忙? 請問銀行系統一般用什麼數據庫! 请大家推荐一个方便好用的网格控件,可以编辑、保存单元格的内容,bug又少的 急死我了,这行SQL语句错在那里呢? ORACLE8I安装问题,急。。。。。。 还是这两本书110分 急救:主板CMOS故障!! 有谁知道在JBuilder中插入一副图片应该用哪个Compoent 加急问题??关于.properties!!在线等, Win2K下控制台程序处于选定状态,如何恢复? 窗口自动关闭 救命啊!严重问题!怎么老是显示E2316:TempSongList::PlayFirstSong()is not a member of 'TempSongList'? 关一个小笨蛋生存的困惑,还请各位GG、JJ一定要帮帮忙呀~~~~ Interface中添加方法的问题,请高手指教!再线讨论!! c#访问FOXPOR数据库问题 WORD求源代码加分之四 怎么样获得一个 EDIT 的 句柄 ?? 请问嵌入网页中的Activex如何调整自身的大小?请各位高手帮忙!谢谢! Oracle和SQLSERVER中5用户10用户到底是什么意思? 我身边的一个PLMM说,她想找一个成熟、幽默、聪明的程序员。 一个局域网内访问odbc数据源的问题 对女孩子不能太热情了! 一个easy 的question 请精通C#与VB.net的大虾帮忙翻译一下 在异地拷贝一个文件(200M以上)到本地,如何做 《C++程序语言》(特别版)怎么样 getContentPane()是什么意思? 高手请进!嵌入网页中的Activex如何获取加载它的浏览器对象?谢谢! i am 24 year old ,but i have nothing 请问哪里有exchange2000 server??? XP,IE 6 SP1,安装JRE 1.4无数次,<APPLET>标签下的东西仍不能看,<OBJECT>可以,为什么??!!求救!! Socket发送接收的问题! c++ builder6的盘 mapx 问题? partition magic 8.0 HBV-DNA(实时荧光定量PCR法)低于检出限是什么意思 谁知道苹果皮可以吃吗? 有一杯接近饱和的氯化钠溶液,欲使其变成饱和溶液,下列方法不合理的是A添加少许氯化钠固体B恒温蒸发部分水C适当降低温度D加一杯更浓的氯化钠溶液 阴阳混合离子交换器原理是什么,谁可以解下惑 为了加快石灰石和盐酸反应速率,为啥只可以增大盐酸浓度?加大盐酸用量,增大压强这两个行不行? Na2CO3.nH2O这么读?还有钠暴露在空气中发生哪些反应?最终产物是什么呢?急! 一般电厂的阴阳离子交换器的工作原理? 八千块买浪琴机械表还是天梭天文台的?理由,最好详细点各方面说说. 苯甲酸钠是什么? 苹果皮的妙用有哪些? HCO3与其他跟这相同的(比如HSO4)统称为什么?还有,化合物中含有这些的(比如NaSO4)叫什么?说错,是化合物中含有这些的(比如NaHCO3、CaHCO3)叫什么? (一道化学难题求急)为什么用碳酸氢钠沉淀镧系离子,杂质就是比碳酸氢氨和草酸多?料液:LACL3 沉淀剂:小苏打往100ml浓度为0.3mol/l料液中缓慢加入160ml浓度为5g/100ml的小苏打溶液沉淀生成碳 核仁是几层膜结构 H+和HCO3+会发生离子反应吗?它们发生的离子反应方程式怎么写?生成什么呢? “脱水缩核、必须氨基酸、多肽”名词解释? 众所周知,地球围绕着太阳做椭圆运动,阳光普照着大地,万物生长,随着岁月流逝,太阳由于辐射,质量会不减少.小明据以学过的物理知识认为太阳对地球的引力,地球公转的周期、日地间的平均 冷库不结冰冷库能放水不冻吗?用什么材料做保温?不用设备制冷的冷库,自建红砖房,用于存放饮用水的,温度在0度以上,不结冰为好. 25个氨基酸缩合成多肽链所产生的水全部用于光合作用生成多少分子的氧气 或哪里有食品添加剂卖?我想买熟石灰学名“食品级氢氧化钙” 冷库为什么半边不结冰我家的冷库半边不结冰 外机管上有结冰现象是怎么回事? 水是强电解质还是弱电解质?一楼..何解呢?二楼.电解质的定义是”在水溶液里或熔融状态下能够导电的化合物”..是啊!纯水不能导电.那它就不是电解质了吗? VGA连接线3 6VGA线是什么意思 冷库地面结冰有什么危害嘛?我们单位的冷库地面结冰了 害怕有什么危害? 铁碳合金相图中杠杆定律的应用 石蜡中是否含有氧气?它的化学式里有表示出来吗?我是个初学者. 冷库怎么改盐水结冰我有一冷库,压缩机是5个千瓦的,想改成盐水制冰,能不能改,怎么改?有没有那位高人能给我技术参数.我的问题是我现在又一冷库大概30立方,压缩机是5个千瓦的,我现在想 请问二氧化碳与水生成弱电解质那它如何与氢氧化钠强电解质反应呢 本人有废蜡和库存石蜡要处理、哪里有回收的 为什么HcO3-与物质发生离子反应时不拆,而HsO4-反应时折 水是电解质,而且是弱电解质,那为啥蒸馏水不是电解质?难道是有杂质的水是电解质?但电解质都是化合物嘛 怎么可以提供氢氧化钙的含钙量 NaOH怎么变成Na2CO3?要方程式, 浓硫酸和脓硝酸混合,氧化银触点时.产生的二氧化氮气体应该怎么降解,或者分解.气体可以使用向上排空气法通入碳酸钠溶液里吗?会有什么反映. 谁知道氢氧化钙的含钙量怎么测 乙醚对人有什么作用 “将浓硝酸分解产生的混合气体干燥,然后插入插入带火星的木条,木条复燃,说明二氧化氮能支持燃烧.为什么? 氢氧化钙有含钙量97%的吗 NA如何变成NAOH?要方程式 硝酸和什么离子反应会生成气体呢. 有那位知道 怎样检验氢氧化钙的含钙量吗? 乙酰丙酸乙酯在醇钠下怎么反应 多少克二氧化碳中含有6.4克氧 李师傅生产一批零件 他完成70%以后 又生产了600个 这样比原计划超蝉30% 求实际超产多少个 对外层电子的引力和核半径的关系为什么半径越小,引力越大? 具体的颜色,遇水的现象,和常见的反应 地理条件的优越性以及经济效益等多方面分析欧洲葡萄种植业 我有一批石料大面积被盐酸沁泡后泛黄应如何去除黄色和石内盐酸呢? 那个出来得效果香还有隐!“邻氨基苯甲酸苯乙酯”“甲算苯乙酯”“丙酸苯乙酯”“ 甘肃省土地贫瘠,山区面积广,为什么不发展畜牧业,而以种植业为主? 苹果皮可以吃么? 用蒸馏水鉴别Ba(SO4)2.KCL.NaOH.CuSO4.Na2SO4知道摆脱说下 甘氨酸乙脂能于石油醚互溶吗?请以实验根据来回答 洒石酸是什么来的? 硫化钠的饱和溶液和氯化钙的饱和溶液的反应能生成什么物质 急求苯甘氨酸盐酸盐液相检测方法 苹果皮能 说明理由 甘氨酸有什么化学性质? 在苯的同系物中,其侧链烃上直接与苯环相连的碳原子若与氢键相连,则该烃能被热的高锰酸钾氧化,这是为什么 苹果皮可以吃吗? 仿写:如果我们的生命是一缕阳光,就为大地洒下一点温暖; 营改增助推行业企业升级 业内期望全行日媒称两艘中国军舰通过冲绳附近毗连区《行尸走肉第四季》弩哥达里尔帅气花絮奥巴马极力摆脱“监听门” 美国国安局超强飓风“吹乱”西北欧各国 已致16中国进出口银行巴黎分行正式挂牌营业朝鲜富人如何休闲?【组图】媒体称延迟退休多拿养老金偷换概念 犯罗援:两岸政治议题不能一拖再拖 有十黑龙江一公安局欠债18年不还 当地纪教科书作品付酬办法发布 文字作品每千土耳其隆重阅兵庆祝建国90周年监听事件对法美关系损害有限美国安局铁杆盟友临阵“倒戈” 称反对意大利前总理:欧洲为配合反恐对美国监埃及武打冠军因支持前总统穆尔西 金牌杭州滨江16所公办学校体育设施免费向台湾空姐酷似林依晨网络走红 海量清纯外媒关注习近平全面深化改革“总体部署意大利总理莱塔会见王毅美国就中国解密核潜艇部队表态差旅费、会议费等有新规 省直机关7月刘延东强调:加快建设中国特色现代大学李克强以英语和茶妙喻中英“情缘”长沙主城区步行500米可乘公交李克强:中国经济仍具备持续增长的坚实周六焰火《来自星星的你》汪洋会见来华出席南博会的外国政要教师砸茶杯被拘3天状告公安局 14次郭声琨出席上合组织安全会议秘书会议杨洁篪在中美战略与经济对话开幕式上讲李克强向英国智库发表题为《共建包容发上班首日连偷6钻戒 2000元的戒指长沙无党派代表人士达千余人李克强会见希腊总统帕普利亚斯李克强结束访欧之行抵京湖南全面展开油菜籽临储收购太湖世界文化论坛第三届年会开幕 刘延马凯会见国际货币基金组织第一副总裁利湖南湖北举行经济社会发展情况交流座谈望城区大泽湖街道广泛发动群众参与城乡陷传销发地图求救 警方顺藤摸瓜救出她
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘