cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 2799|回复: 4

『再次用手机发帖』一些条件分支结构的初步实现方法

[复制链接]
发表于 2010-3-30 21:06:39 | 显示全部楼层 |阅读模式
手机发帖打字辛苦,废话不多说,看示例程序段……

if a <= 5 then
  a = a + 1
else
  a = a+ b
end if


转化为es语言,为
(A+.5B+.5B*ispositive (A-5)+.5-.5*ispositive (A-5)) --> A

若设M=ispositive (A-5),可节省大量空间,但要用一个储存器,并且要多按等号。好处是可以传递到下一句(es语言只能逐条判断逐条执行,所以条件分支结构要用大量空间)。


其他语句可以依照这个思路来构造。这就是我的研究成果。另外编译器的事就不要太指望我了,我觉得我的水平最多只能写个代码对照表……我要开发一语言容易,写编译器难啊!……

评分

参与人数 2金钱 +3 专家 +1 收起 理由
zasdfgbnm + 3 我很赞同
chsi + 1

查看全部评分

发表于 2010-3-31 11:29:36 | 显示全部楼层
我以前一直是把if(condition)-else语句处理为if(condition):if(not condition),你只用一条语句确实能少按等号。
若设M=ispositive (A-5),可节省大量空间,但要用一个储存器,并且要多按等号。好处是可以传递到下一句(es语言只能逐条判断逐条执行,所以条件分支结构要用大量空间)。

这个方法很好
 楼主| 发表于 2010-4-1 21:01:15 | 显示全部楼层
我认为卡西欧ES的特点是任何语句均为表达式,建议改研究if为研究函数iif
shyc2001 发表于 2010-4-1 14:00

切不可把编程语言“函数化”,否则就失去了易懂的最大优势。
发表于 2010-4-2 08:02:41 | 显示全部楼层
否则就失去了易懂的最大优势。
991es82es 发表于 2010-4-1 21:01

ES语言最缺乏的就是这个
发表于 2010-4-2 08:31:59 | 显示全部楼层
贴出通用形式:
if(condition) then
    a = b;
else
    a = c;
endif
计算器语言:
a + (b - a)*condition+(c - a)(!condition)→ a
其中!condition为condition的“非”,见http://www.cncalc.org/viewthread ... fromuid=28#pid41868
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-4-26 00:08 , Processed in 0.113134 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表