CODESYS 实战:实现自守数查找-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 987|回复: 0

CODESYS 实战:实现自守数查找

[复制链接]
  • TA的每日心情
    开心
    2017-11-20 22:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2025-3-14 08:38:08 | 显示全部楼层 |阅读模式

    引言

    自守数是其平方的末尾数字与该数本身相同的数字。这篇文章通过一个查找自守数的案例,帮助读者学习和理解 ST 语言的基本结构和编程技巧。
    1 问题描述
    目标是编写一个程序,遍历从 0 到给定最大值的所有整数,找到其中的自守数,并将其存储在数组中。自守数是指一个数的平方的尾数等于该数自身的自然数。例如, 5²=25,25²=625,76²=5776,9376²=87 909376。求 n 以内的自守数并储存。
    2 程序设计思路
    • 输入输出变量:定义输入变量 N,输出变量 NumberArray。
    • 初始化:初始化存储数组。
    • 主循环:遍历范围内的每个数字,计算其平方,并检查是否为自守数。
    • 存储结果:如果找到自守数,存储在数组中并更新计数器。

    3 程序代码
    [AppleScript] 纯文本查看 复制代码
    FUNCTION_BLOCK WG_SelfPowerNumbers
    VAR_INPUT
        N : DINT := 100000;          // 定义范围
    END_VAR_INPUT
    
    VAR_OUTPUT
        NumberArray : ARRAY[1..100] OF DINT; // 用于存储自守数的数组
    END_VAR_OUTPUT
    
    VAR
        i : DINT;                  // 循环变量
        Count : DINT := 0;        // 自守数计数器
        Square : DINT;            // 存储平方结果
        Temp : STRING;            // 临时字符串变量,用于比较
    END_VAR
    
    (*
    版本记录:
    版本          日期             作者
     V1         2024-10-27       工控老王
    *)
    
    // 初始化
    FOR i := 1 TO 100 BY 1 DO
        NumberArray[i] := 0;
    END_FOR
    
    // 查找自守数
    FOR i := 0 TO N DO
        // 计算平方
        Square := i * i;
        
        // 将数和平方转换为字符串
        Temp := DINT_TO_STRING(i);
        
        // 检查自守数的条件
        IF LEN(Temp) <= LEN(DINT_TO_STRING(Square)) THEN
            // 检查平方的尾数是否等于原数
            IF RIGHT(DINT_TO_STRING(Square), LEN(Temp)) = Temp THEN
                Count := Count + 1; // 计数自守数
                NumberArray[Count] := i; // 存储自守数
            END_IF
        END_IF
    END_FOR
    
    END_FUNCTION_BLOCK

    4 代码说明
    输入和输出:
    • N: 定义搜索的上限,默认值为 100000。
    • NumberArray: 用于存储找到的自守数。
    变量定义:
    • i: 用于循环的计数器。
    • Count: 记录自守数的数量。
    • Square: 存储当前数字的平方。
    • Temp: 临时字符串,用于字符串比较。
    初始化数组:
    • 使用一个 FOR 循环将 NumberArray 初始化为 0。
    自守数查找:
    • 循环从 0 到 N,计算每个数字的平方,并检查它是否为自守数。
    • 如果是自守数,将其存入 NumberArray 中并更新计数。
    注意事项
    • 可以根据需求调整 NumberArray 的大小。
    • 代码中已确保变量的初始化和逻辑的正确性,建议在实际项目中测试以确保符合预期。

    5 运行结果
    运行程序后,NumberArray 中将包含所有在范围内找到的自守数。例如,输入 N = 100000 时,典型的自守数包括 0、1、5、6、25、76、376、625、9376 等。
    640?wx_fmt=jpeg&from=appmsg.jpg 640?wx_fmt=jpeg&from=appmsg.jpg
    6 开源说明
    该程序遵循开源原则,任何人都可以使用、修改和分发此代码。在使用前应进行充分的测试,修改代码时,请秉持分享精神,将您的改进和成果进行分享,以便更多人受益。

    总结

    通过这个案例,读者可以学习如何使用 ST 语言编写循环、条件判断以及字符串操作等基本编程技巧。这种技术不仅适用于自守数的查找,还可以扩展到其他数值计算场景,为工业自动化编程提供了实用的参考。

    +10
    不赞一个?
    打赏鼓励一下!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

    GMT+8, 2026-10-8 18:01 , Processed in 0.144545 second(s), 50 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

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