[西门子] SCL编程实例100例-029-一个被8除不尽的数

[复制链接]
查看153 | 回复0 | 2024-12-11 08:09:52 | 显示全部楼层 |阅读模式
>

1 | 题目



一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为q。又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是q的2倍。求这个自然数。



2 | 设计分析



根据题意,采用逆推穷举法求解。



3 | 创建功能或功能块



创建功能块FB,命名为“NumIndivisibleBy8”。




4 | 定义接口变量



具体接口变量定义见下图:

定义输出变量#numQ作为计算结果的输出,定义临时变量#tempLastQuotient作为最后的商。



5 | 程序代码



编写程序代码。如下图:


本例的解题关键是弄清逆推关系式,该关系式将作为REPEAT循环的循环条件,逆推关系式为:

(((q*8+7)*8)+1)*8+1=((2*q*17)+15)*17+4


6 | 代码测试



在循环OB中调用FB-“NumIndivisibleBy8”,调用时会自动创建背景数据块,命名为“InstNumIndivisibleBy8”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:

满足题目要求的计算结果为1993。



7 | 总结



学习使用REPEAT循环语句;

学习逆推算法的应用;

学习表达式作为REPEAT循环的循环条件的方式

-

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则