CN113568607B - 一种数字程序实现方法和系统 - Google Patents

一种数字程序实现方法和系统 Download PDF

Info

Publication number
CN113568607B
CN113568607B CN202110909661.6A CN202110909661A CN113568607B CN 113568607 B CN113568607 B CN 113568607B CN 202110909661 A CN202110909661 A CN 202110909661A CN 113568607 B CN113568607 B CN 113568607B
Authority
CN
China
Prior art keywords
data
statement
program
digital program
name
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110909661.6A
Other languages
English (en)
Other versions
CN113568607A (zh
Inventor
黄宇辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ruanzi Digital Software Guangzhou Co ltd
Original Assignee
Ruanzi Digital Software Guangzhou Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ruanzi Digital Software Guangzhou Co ltd filed Critical Ruanzi Digital Software Guangzhou Co ltd
Priority to CN202110909661.6A priority Critical patent/CN113568607B/zh
Publication of CN113568607A publication Critical patent/CN113568607A/zh
Application granted granted Critical
Publication of CN113568607B publication Critical patent/CN113568607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供了一种数字程序实现方法和系统,具体包括以下步骤:将程序语言开发的程序设为母程序,在母程序之外设置相对独立编号的数字程序,所述母程序包含数字程序引擎;根据所需实现的功能,母程序读入指定编号的数字程序,由数字程序引擎按其语句类别运行对应的语句运行器,实现所需要的程序功能,所述数字程序引擎为程序函数或过程,数字程序包含一种按数据类别+名称的软件数据总线方式来定义数据,简化方便数据操作,本发明数字程序开发修改容易,代码简化,加快开发速度。母程序的重复代码和实际运行代码减少,编译后可执行文件大小减少。对于实时性不间断运行系统来说,母程序可以运行中升级,解决了以往要停止运行才能升级问题。

Description

一种数字程序实现方法和系统
技术领域
本发明涉及程序开发技术领域,特别是涉及一种数字程序实现方法和系统。
背景技术
现在程序开发,都是源程序经过编译后,形成一个可执行程序。如果要修改功能,必须修改源程序,重新编译生成新的可执行程序,进行测试没有问题后,然后将原有程序停止运行,新程序替换老程序后重新启动运行。这种方案存在灵活性不够,即使做小的修改,都要执行一系列流程,也花费时间和人力。对于实时性不间断运行系统来说,这种方式每次修改升级必须要停止系统运行,再来升级,业务影响较大。
程序一个重要功能是对数据进行操作处理,原有开发方式主要是先申明变量,对变量进行数据赋值,然后对变量进行操作,所需要编写多行代码,比较复杂。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种数字程序实现方法和系统,实现了一段程序独立在可执行程序外参数化保存并运行的方式,实现了程序功能灵活开发修改;解决了对于实时性不间断运行系统来说,传统方式每次修改升级必须要停止系统运行,再来升级,业务影响较大的问题;另外本发明采用一种数据总线方式定义数据,可直接方便的引用和操作软件中的各个数据。
为了达到上述目的,本发明所采用的具体技术方案如下:
一种数字程序实现方法,具体包括以下步骤:
S1,将程序语言开发的程序设为母程序,在母程序之外设置相对独立编号的数字程序,所述母程序包含数字程序引擎;
S2,根据所需实现的功能,母程序读入指定编号的数字程序,由数字程序引擎按其语句类别运行对应的语句运行器,实现所需要的程序功能,所述数字程序引擎为程序函数或过程。
优选的,所述数字程序的操作流程和形式为:采用文本编辑来写数字程序,保存为文本格式;或者使用预处理程序将文本格式转换成一种规范格式;或者采用一种专用软件来交互定义数字程序内容,生成一种规范格式,包括数据库、xml、json、自定义格式,数字程序采用加密或不加密方式。
优选的,所述数字程序的语句类别包括变量申明、运算赋值语句、if条件语句、for循环语句、while循环语句、switch语句、continue语句、break语句、过程调用、sql语句、调用其它数字程序、界面控件操作、数字程序结束、注释中的一种或多种;
上述语句类别中,if条件语句、for循环语句、while循环语句、switch语句控制相应关联的单条或多条语句组运行,语句组采用特定符号标志或格式来确定语句组起始和结束范围;注释不需要母程序做操作;
优选的,在数字程序语句中使用变量名和/或一种按数据类型+名称的软件数据总线形式来定义数据,数据总线形式数据表示方式为数据标签和/或格式字段;
所述数据标签采用一维标签、二维标签、三维标签中的一种或多种,二维标签按数据类别+名称来表示数据,包含起始符、数据类别、分隔符、名称、结束符;三维标签按数据类型+数据类别+名称来表示数据,包含起始符、数据类型、分隔符、数据类别、名称、结束符;一维标签是二维标签的简化方式,用于表示程序中常用的数据,包含起始符、名称、结束符;所述起始符、结束符、分隔符包括一个或多个字符;或者数据标签采取简化方式,省略起始符、结束符、分隔符中的一个或多个;所述标签中数据类别+名称中排列顺序可为数据类别+名称或名称+数据类别;
格式字段用于在格式保存数字程序中使用,按字段数量分为单字段、双字段、三字段,根据要求采用其中的一种或多种,双字段分别为数据类别和名称,三字段分别为数据类型,数据类别和名称,单字段中使用数据标签对数据的表示,所述格式保存,指的是采用数据库、xml、json或自定义格式;
所述数据类别,数据类别为软件中各种数据来源,根据各个开发语言不同包含且不限于常量、自定义变量、界面录入的数据、程序调用参数、文本文件、sql数据、json、xml。
优选的,母程序中对于数字程序语句中的数据标签,采用第一函数或过程,将数据标签替换成对应的实际数据值;对于数字程序语句中的格式字段,对于单字段调用第一函数或过程将单字段里面的数据标签进行数值替换;对于双字段调用第二函数获取进行实际数据;对于三字段先根据类别和名称或取实际数据,然后将实际数据做从字符串到指定数据类型的转换;
第一函数或过程,其功能是对传入字符串参数中的的数据标签进行扫描,获取实际的数据,将实际数据替换数据标签,最后返回结果数据;
第二函数功能是根据数据类别和名称,相应的获取实际数据值,返回该数据值。
优选的,所述语句运行器具体指的是针对每种数字程序语句,母程序中用来实现其功能的一组程序语句,其包括:变量申明语句运行器、运算赋值语句运行器、if条件语句运行器、for循环语句运行器、while循环语句运行器、switch语句运行器、continue语句运行器、break语句运行器、过程调用运行器、sql语句运行器、调用其它数字程序运行器、界面控件操作运行器、程序结束运行器中的一种和多种。
优选的,变量申明运行器,在开发语言不同或者在母程序中预先定义的变量中,对应分配一个变量给此申明变量,或者利用某些母程序语言自身具有的对象,对应一个变量给此申明变量,在其它语句运行器中对此变量的引用操作,实际对应操作母程序变量;
运算赋值语句运行器流程包括:
对赋值符号的右边表达式进行计算,对表达式中的函数,运行母程序中对应的函数;
将右边表达式结果赋值给赋值对象变量对应的母程序变量。
优选的,(1)if语句运行器根据指定条件相应运行指定范围语句,if条件语句的两种形式为:
if条件表达式then语句1/语句组1;
if条件表达式then语句1/语句组1else语句2/语句组2;
其运行器流程是:
(a1)对条件表达式进行计算;
(b1)根据条件表达式结果为true时选择运行语句1或语句组1;
(c1)表达式结果为false时,如果存在else语句,则运行语句2或语句组2;运行指的是调用数字程序引擎对指定行的数字程序进行解释运行;
(2)for循环语句运行器根据指定条件,相应运行指定范围语句,for循环语句形式为:
for(变量名=初始值;条件表达式;未尾循环体)
关联语句组;
其运行器流程是:
(a2)母程序分配变量对应for变量名;
(b2)对新建for变量值=起始值;
(c2)依次运行for关联语句;
(d2)运行未尾循环体语句;
(e2)计算条件表达式
(f2)条件表达式成立时循环运行c2-e2,不成立结束for循环语句;
(3)while循环语句运行器根据指定条件,当while条件值为true时,调用数字程序引擎依次运行while关联语句,其形式为:
While条件表达式
语句组;
其运行器流程为:
(a3)计算条件表达式
(b3)当其为true时,依次运行关联语句;
(c3)循环运行a3-b3,直到条件表达式不为true;
(4)switch语句运行器,用于对指定变量,根据不同的值运行指定的语句或语句组;
swich语句形式为:
switch变量
{
case数据值1:语句1/语句组1;
case数据值2:语句2/语句组2;
...
case数据值n:语句n/语句组n;
default:语句/语句组;
}
switch语句运行器流程为:
(a4)获取switch变量值
(b4)依次对比case数据值,如果相同则执行case语句中定义的语句或语句组,然后结束完成switch语句运行;
(c4)如果没有比对成功并且定义了默认default语句,则运行default语句中的语句或语句组;
(5)continue运行器用于在for、while语句的关联语句组中,本次循环不再执行其后的语句,跳到下一次循环检查;
(6)break运行器用于在for、while、switch语句的关联语句组中,结束语句组运行。
优选的,界面操作运行器根据控件名称对界面控件的属性进行操作;
过程调用运行器根据过程名称,分别获取相应的过程参数,调用母程序中的对应的内部过程;
sql语句运行器,母程序获取sql语句后,执行sql语句;
调用其它数字程序运行器,读取指定编号数字程序,调用数字程序引擎运行数字程序;
界面操作运行器根据控件名称对界面控件的属性进行操作
程序结束运行器结束当前指示范围的数字程序运行;
程序注释运行器为母程序不做操作。
一种数字程序实现系统,包括母程序和在母程序之外设置相对独立编号的数字程序,所述母程序为程序语言开发的程序,包括数字程序引擎;根据所需实现的功能,母程序读入指定编号的数字程序,由数字程序引擎按其语句类别运行对应的语句运行器,实现所需要的程序功能,所述数字程序引擎为程序函数或过程。
本发明的有益效果在于:
1.数字程序开发修改灵活,数字程序修改后,母程序不需要重新编译,只需要重新读取数字程序,开发发布过程简化,节省开发时间。
2.传统方式每一个数据获取都要使用程序代码,现在使用数据总线方式描述操作数据,减少了数据获取方面程序代码,提高开发效率。
3.母程序可以是编译生成,运行效率高,可以根据需要设置内部功能,灵活开发,解决了传统的解释程序语言,要实现所有的功能,整个解释程序宠大,占用空间多,运行效率低的问题。
4传统方式开发的每一个新的功能过程,都需要经过开发调试,才能确定可靠性,现在本发明针对不同的数字程序,实际运行的都是同一个数字程序引擎代码,软件质量可靠性更高;
5.传统方式随着功能增加而程序不断增大,本发明母程序大小固定,不随数字程序增加而变大,编译后可执行文件大小相比传统方式大小减少;
6.母程序不需要停止运行,即可实现新的功能,对于实时性不间断运行系统来说,解决了升级维护要中断运行问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种数字程序实现方法和现有技术的流程图;
图2是母程序调用数字程序的流程图。
图3是数字程序引擎P1的流程图。
图4第一函数P2的流程图。
图5第二函数P3的流程图。
图6第三函数P4的流程图。
图7基本算术表达式P5的流程图。
图8公式运算器P6的流程图。
图9条件表达式运算器P7的流程图。
图10运算赋值语句运行器流程图。
图11 if条件语句运行器流程图。
图12 for循环语句运行器流程图。
图13 while循环语句运行器流程图。
图14 switch语句运行器流程图。
图15调用过程运行器流程图。
图16调用其它数字程序运行器流程图。
图17界面控件操作运行器流程图。
图18 SQL语句运行器流程图。
图19软件数据总线示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的其他实施例,都属于本发明保护的范围。
如图1-图19所示,本发明提出了一种数字程序实现方法,具体包括以下步骤:
S1,将程序语言开发的程序设为母程序,在母程序之外设置相对独立编号的数字程序,所述母程序包含数字程序引擎;
S2,根据所需实现的功能,母程序读入指定编号的数字程序,由数字程序引擎按其语句类别运行对应的语句运行器,实现所需要的程序功能,所述数字程序引擎为程序函数或过程。
优选的,所述数字程序的操作流程和形式为:采用文本编辑来写数字程序,保存为文本格式;或者使用预处理程序将文本格式转换成一种规范格式;或者采用一种专用软件来交互定义数字程序内容,生成一种规范格式,包括数据库、xml、json、自定义格式,数字程序采用加密或不加密方式。
一.从流程来说,数字程序有三种操作流程和形式
(1)文本化数字程序-母程序运行
用文本编辑方式来写原始数字程序,一行一个语句,母程序读取后运行数字程序。
(2)文本化数字程序-预处理程序-生成数字程序规范格式-母程序运行
用文本编辑来写原始数字程序,预处理程序将原始文本规范化检查处理,生成一种规范的格式,母程序读取规范格式后运行数字程序。
(3)使用自定义开发的工具软件来完成数字程序录入-生成数字程序规范格式-母程序运行,工具软件不用手工录入源码,以一种方便操作方式定义数字程序内容,然后生成一种规范的格式,母程序读取规范格式后运行数字程序。
(4)文本化数字程序或规范格式数字程序,可以采取不加密或加密方式。如果加密,则在母程序中先进行解密操作。
二.一种数字程序规范格式:
行号语句类别语句参数
语句类别不同,语句参数相应不同;
优选的,所述数字程序的语句类别包括变量申明、运算赋值语句、if条件语句、for循环语句、while循环语句、switch语句、continue语句、break语句、过程调用、sql语句、调用其它数字程序、界面控件操作、数字程序结束、注释中的一种或多种;
上述语句类别中,if条件语句、for循环语句、while循环语句、switch语句控制相应关联的单条或多条语句组运行,语句组采用特定符号标志或格式来确定语句组起始和结束范围;注释不需要母程序做操作;
1.局部变量申明:
行号 变量申明 变量类型 变量名称;
2运算赋值语句:
行号 运算赋值 结果变量 表达式
3.if条件语句:
行号if(条件表达式)行号1,行号2ELSE行号3,行号4
如果if条件成立时只执行一条语句,则行号1和行号2相同,如果没有ELSE,则行号3,行号4为空;如果ELSE只有一条语句,则行号3与行号4相同。
4.for循环语句:
行号For(变量名=值1,值2,末尾语句)行号1,行号2
5.while循环语句:
行号While(条件表达式)行号1,行号2
6.switch语句:
行号switch变量
行号case数据值1:行号11,行号1n;
行号语句11;
行号...
行号语句1n;
行号case数据值2:行号21,行号2n
行号语句21;
行号..
行号语句2n;
行号case数据值n:行号n1,行号nn
行号语句n1;
行号...
行号语句nn;
行号default:行号d1,行号dn
行号语句d1;
行号...
行号语句dn;
7.continue语句:
行号continue
8.break语句:
行号break;
9.界面控件操作;
行号 控件操作 控件名称,控件属性,数值
10.功能调用:
行号 功能调用 功能名称 功能参数
11.SQL语句:
行号SQL运行sql语句
12.调用其它数字程序:
行号 调用数字程序 数字程序编号
13.数字程序结束:
行号 数字程序结束
13.数字程序注释:
对注释母程序不做操作,不生成语句;
优选的,在数字程序语句中使用变量名和/或一种按数据类型+名称的软件数据总线形式来定义数据,数据总线形式数据表示方式为数据标签和/或格式字段;
所述数据标签采用一维标签、二维标签、三维标签中的一种或多种,二维标签按数据类别+名称来表示数据,包含起始符、数据类别、分隔符、名称、结束符;三维标签按数据类型+数据类别+名称来表示数据,包含起始符、数据类型、分隔符、数据类别、名称、结束符;一维标签是二维标签的简化方式,用于表示程序中常用的数据,包含起始符、名称、结束符;所述起始符、结束符、分隔符包括一个或多个字符;或者数据标签采取简化方式,省略起始符、结束符、分隔符中的一个或多个;所述标签中数据类别+名称中排列顺序可为数据类别+名称或名称+数据类别;
格式字段用于在格式保存数字程序中使用,按字段数量分为单字段、双字段、三字段,根据要求采用其中的一种或多种,双字段分别为数据类别和名称,三字段分别为数据类型,数据类别和名称,单字段中使用数据标签对数据的表示,所述格式保存,指的是采用数据库、xml、json或自定义格式;
所述数据类别,数据类别为软件中各种数据来源,根据各个开发语言不同包含且不限于常量、自定义变量、界面录入的数据、程序调用参数、文本文件、sql数据、json、xml。
一维标签:
程序中,有一些常用的变量数值,对此提供一种简单标签方式来表示。
数据:表示程序中常用的变量数值。
格式:起始符+名称+结束符
[#用户名] [#用户ID] [#当前日期] [#当前时间]
二维标签:
一种格式:起始符+数据类别+分隔字符+名称+结束字符.
数据类别可以是字符,或者是字符串,如果是字符串,那分隔字符必须存在。
例:[$录入.Name]表示界面录入控件name的输入值
在名称部份,对于一些特别的数据类型,例如Json数据,其中包含多个字段数据,可以采用扩展形式,采用”名称.字段”,在扩展形式,程序内部相对字段进行处理,获取此字段值。
三维标签:
返回指定的数据类型
一种样式:起始符+数据类型+数据类别+分隔字符+名称+结束字符.
在二维标签的基础上,加上数据类型和类型分隔符;
[$(int)录入.score]表示界面录入控件score的输入分数
优选的,母程序中对于数字程序语句中的数据标签,采用第一函数或过程,将数据标签替换成对应的实际数据值;对于数字程序语句中的格式字段,对于单字段调用第一函数或过程将单字段里面的数据标签进行数值替换;对于双字段调用第二函数获取进行实际数据;对于三字段先根据类别和名称或取实际数据,然后将实际数据做从字符串到指定数据类型的转换;
第一函数或过程,其功能是对传入字符串参数中的的数据标签进行扫描,获取实际的数据,将实际数据替换数据标签,最后返回结果数据;
第二函数功能是根据数据类别和名称,相应的获取实际数据值,返回该数据值。
数字程序引擎:读入指定编号数字程序数据包,根据每一条指令代码,对应执行实际的指令。
三.母程序数字程序引擎及运行器基本函数过程组成;
数字程序引擎P1(起始行,结束行):读入指定编号数字程序数据包,根据每一条指令代码,对应执行实际的指令(图3):
(1.1)获取语句类别
(1.2)如果语句类别=数字程序结束,则返回0,结束运行
(1.3)如果语句类别=break语句,则返回1,结束运行
(1.4)如果语句类别=continue语句,则返回0,结束运行
(1.5)扏行相应的语句运行器
(1.6)获取下一行号
(1.7)如果下一行号<=行2则返回步(1.1)运行
(1.8)返回0,结束运行
第一函数:P2(内容):将内容中的数据标签,获取实际数据值后,替换数据标签(图4),其流程为;
(2.1)对输入参数A,扫描数据标签起始符’[$’
(2.2)扫描数据标签结束符’]’,结束位置为B
(2.3)根据此起始符和结束符位置,获取此数据标签C和去掉起始符和结束符的中间字符串
(2.4)从中间字符串,以分隔字符,分别获取到数据类别D和名称E
(2.5)调用第二函数(D,E)获得数值F
(2.6)将A中此数据标签C替抱成F
(2.7)计算下数值F长度减去数据标签C的长度,其值为G
(2.8)从位置B+G开始执行步(2.1)到(2.6),直到字符串结束
(2.9)下面开始处理一维标签,扫描位置为1.
(2.10)开始扫描A中数据标签起始符[#
(2.11)扫描数据标签结束符’]’。结束位置为B2
(2.12)获取此数据标签C2和数据标签中的名称E2
(2.13)调用第三函数(E2)获得值F2.
(2.14)将此数据标签C2替换成F2
(2.15)分别计算下F2长度减去数据标签C2的长度,差值为G2
(2.16)从位置B2+G2开始继续扫描,执行(2.10)-(2.14),直到字符串结束
第二函数:P3(类别,名称):根据类别和名称获取实际数据值(图5);
(3.1)获取类别,名称Name
(3.2)根据类别和名称,分别从相应的数据源中获取数值
如果类别是输入,则从名称为Name的控件中获取数值
如果类别是URL,则从URL中获取名称为Name的URL参数值
如果类别是自定义变量,则获取名称为Name的自定义变量数值
如果类别是文本文件,则读取文件名为Name的文本文件内容
...
(3.3)返回结果,类型为字符串;
第三函数:P4(名称):根据名称获取指定变量值(图6),其流程为;
(4.1)采用switch(名称){
(4.2)Case“用户名”:结果=当前用户名变量值;break;
(4.3)Case“当前日期”:结果=系统日期;break;
(4.4)Case“当前时间”:结果=当前时间;break;
...
(4.n)}
基本算术表达式:P5(变量1,运算符,变量2)(图7),其流程为:
将变量1、变量2转换成相应的数据类型,按运算符进行算术运算,将结果以字符串方式返回
公式运算器P6(运算表达式)(图8),其流程为:
(5.1)根据优先级调用P5先完成一个最小运算
(5.2)循环1,直到全部运算符结束
条件表达式运算P7(条件表达式)(图9),其流程为:
(6.1)根据比较运算符分解表达式;
(6.2)将各小公式调用公式运算器P6;
(6.3)根据优先级,依次对比较运算符进行比较运算,直到全部比较运算符完成;
(6.4)返回结果;
四.优选的,所述语句运行器具体指的是针对每种数字程序语句,母程序中用来实现其功能的一组程序语句,其包括:变量申明语句运行器、运算赋值语句运行器、if条件语句运行器、for循环语句运行器、while循环语句运行器、switch语句运行器、continue语句运行器、break语句运行器、过程调用运行器、sql语句运行器、界面控件操作运行器、程序结束运行器中的一种和多种。
优选的,变量申明运行器,在开发语言不同或者在母程序中预先定义的变量中,对应分配一个变量给此申明变量,或者利用某些母程序语言自身具有的对象,对应一个变量给此申明变量,在其它语句运行器中对此变量的引用操作,实际对应操作母程序变量;
例如:母程序中,可预定义一个数组变量,int[]A;
在数字程序中定义变量int a,b,c,在相应的类型中分配一个变量给A[1]对应a;A[2]对应b,A[3]对应c
一些开发语言,具有Session对象,不需要预先定义,直接可以使用。例如变量名称成绩score,直接使用session[“score”],这个是字符串类型,使用时按定义类型完成转换
返回下一行号=当前行号+1;
运算赋值语句运行器流程(图10):
运算赋值语句三种基本格式:
(1)赋值:结果变量=变量1
(2)运算:结果变量=变量1运算符变量2
(3)函数:结果变量=函数名(表达式)
运算符包含:+加,-减,*乘,/除,%取余数,mod取模数,<<左移位,>>右移位,字符串加法;
结果变量可以是申明本地变量,或者是用户定义全局变量;
数据类型:在进行普通运算时,根据运算需要从字符串转换为相应的数据类型进行运算;
其运行器流程为:
(7.1)对于函数参数中的运算公式,调用公式运算器P6;
(7.2)依次完成全部函数计算;
(7.3)寻找最里层括号公式,调用公式运算器P6;
(7.4)循环(7.1)-(7.3),直到运算结束;
(7.5)将结果赋值给结果对象;
(7.6)返回下一行号为当前行号+1;
优选的,(1)if语句运行器
其运行器流程是(图11):
(a1)调用表达式函数P7,对条件表达式进行计算;
(b1)根据条件表达式结果为true时选择P1(行号1,行号2);
(c1)表达式结果为false时,如果存在else语句,则运行P2(行号3,行号4);
(d1)返回下一行为(行号2和行号4中的最大值)+1;
(2)for循环语句运行器根据指定条件,相应运行指定范围语句,for循环语句形式为:
for(变量名=初始值;条件表达式;未尾循环体)
关联语句组;
其运行器流程是(图12):
(a2)母程序分配变量对应for变量名;
(b2)对新建for变量值=起始值;
(c2)调用数字程序引擎P1(行号1,行号2);
(d2)运行未尾循环体语句;
(e2)调用表达式函数P7(条件表达式),计算条件表达式
(f2)循环运行c2-e2,直到条件表达式不成式;
(g2)返回下一行为行号2+1;
(3)while循环语句运行器根据指定条件,当while条件值为true时,调用数字程序引擎依次运行while关联语句,其形式为:
While条件表达式
语句组;
其运行器流程为(图13):
(a3)调用表达式函数P7(条件表达式),计算条件表达式
(b3)当其为true时,A=调用数字程序引擎P1(行号1,行号2)来依次运行关联语句;
(c3)当A<>1时,循环运行a3-c3,直到条件表达式不为true,结束循环,返回下一行号=行号2+1
(d3)当A=1时,内部运行了break,结束循环,返回下一行号=行号2+1;
(4)switch语句运行器,用于对指定变量,根据不同的值运行指定的语句或语句组;swich语句形式为:
switch变量
{
case数据值1:语句1/语句组1;
case数据值2:语句2/语句组2;
...
case数据值n:语句n/语句组n;
default:语句/语句组;
}
switch语句运行器流程为(图14):
(a4)获取switch变量值
(b4)调用表达式函数P7,依次对比switch变量值与case数据值,如果相同则对此case对应的行号t1,t2调用P1(行号t1,行号t2)来执行case语句中定义的语句或语句组,然后结束完成switch语句运行;
(c4)如果没有比对成功并且定义了默认default语句,则调用P1来运行default语句中的语句或语句组;
(d4)返回下一行号为switch语句组的最大行号+1;
(5)continue运行器用于在for、while语句的关联语句组中,本次循环不再执行其后的语句,跳到下一次循环检查;
(a5)当前的P1函数结束运行;
(b5)P1返回0;
(6)break运行器用于在for、while、switch语句的关联语句组中,结束语句组运行。
(a6)当前的P1函数结束运行;
(b6)P1返回1;
五.优选的,过程调用运行器根据过程名称,分别获取相应的过程参数,调用母程序中的对应的内部过程,其流程为(图15);
(a7)获取过程名称;
(b7)将数字程序中的参数值转换成过程参数需要的数据类型;
(c7)根据过程名称执行母程序内的对应的过程;
(d7)返回下一行号=当前行号+1;
界面操作运行器根据控件名称对界面控件的属性进行操作(图16);
(a8)根据控件名称获取控件对象
(b8)对控件对象的属性进行操作
(c8)返回下一行号=当前行号+1;
调用其它数字程序运行器流程(图17):
(a9)读取指定编号数字程序;
(b9)调用数字程序引擎P1运行此数字程序
(c9)返回下一行号=当前行号+1;
sql语句运行器,母程序获取sql语句后,执行sql语句(图18);
(a10)获取sql语句
(b10)调用执行sql语句的内部过程
(c10)返回下一行号=当前行号+1;
程序结束运行器结束当前指示范围的数字程序运行;
六.为更直观理解,下面以一个简单案例来对比说明一种数字软件格式:
程序功能:用户录入姓名,语文和数学成线,如果总分>160,则显示优秀,否则显示加油;将记录加入到学生成线表
原始数字程序:
Int A;
A=[$(int)录入.语文]+[$(int)录入.数学];
if(A>160)then
B.Text=”优秀”;
Else
B.Text=”普通”;
S=”insert into score(name,lesson1,lesson2)values(‘”+[$录入.姓名]+”’,”+[$录入.语文]+”,”+[$录入.数学])”
SQL语句s;
结构化后的数字程序
行号 语句类别 语句参数
1 变量申明 int A
2 赋值计算 A=[$(int)录入.语文]+[$(int)录入.数学]
3 if指令 I F A>160执行行(3,3)ELSE(4,4)
4 控件操作 B显示优秀
5 控件操作 B显示普通
6 SQL语句 insert into score(name,lesson1,lesson2)values(‘[$录入.姓名]’,[$录入.语文],[$录入.数学])
本发明还提出了一种数字程序实现系统,包括母程序和在母程序之外设置相对独立编号的数字程序,所述母程序为程序语言开发的程序,包括数字程序引擎;根据所需实现的功能,母程序读入指定编号的数字程序,由数字程序引擎按其语句类别运行对应的语句运行器,实现所需要的程序功能,所述数字程序引擎为程序函数或过程。
本发明的优点在于:
1.数字程序开发修改灵活,数字程序修改后,母程序不需要重新编译,只需要重新读取数字程序,开发过程简化,节省开发时间。
2.传统方式每一个数据获取都要使用程序代码,现在使用数据总线方式描述操作数据,减少了数据获取方面程序代码,提高开发效率。
3.母程序可以是编译生成,运行效率高,可以根据需要设置内部功能,灵活开发,解决了传统的解释程序语言,要实现所有的功能,整个解释程序宠大,占用空间多,运行效率低的问题;
4.传统方式开发的每一个新的功能过程,都需要经过开发调试,才能确定可靠性,现在本发明针对不同的数字程序,实际运行的都是同一个数字程序引擎代码,软件质量可靠性更高。
5.传统方式随着功能增加而程序不断增大,本发明母程序大小固定,不随数字程序增加而变大,编译后可执行文件大小相比传统方式大小减少。
6.母程序不需要停止运行,即可实现新的功能,对于实时性不间断运行系统来说,解决了升级维护要中断运行问题。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,本领域技术人员完全可以在不偏离本发明技术思想的范围内,进行多样的变更以及修改。本发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求书范围来确定其技术性范围。

Claims (8)

1.一种数字程序实现方法,其特征在于,具体包括以下步骤:
S1,将程序语言开发的程序设为母程序,在母程序之外设置相对独立编号的数字程序,所述母程序包含数字程序引擎;
S2,根据所需实现的功能,母程序读入指定编号的数字程序,由数字程序引擎按其语句类别运行对应的语句运行器,实现所需要的程序功能,所述数字程序引擎为程序函数或过程;在数字程序语句中使用变量名和/或一种按数据类型+名称的软件数据总线形式来定义数据,数据总线形式数据表示方式为数据标签和/或格式字段;
所述数据标签采用一维标签、二维标签、三维标签中的一种或多种,二维标签按数据类别+名称来表示数据,包含起始符、数据类别、分隔符、名称、结束符;三维标签按数据类型+数据类别+名称来表示数据,包含起始符、数据类型、分隔符、数据类别、名称、结束符;一维标签是二维标签的简化方式,用于表示程序中常用的数据,包含起始符、名称、结束符;所述起始符、结束符、分隔符包括一个或多个字符;或者数据标签采取简化方式,省略起始符、结束符、分隔符中的一个或多个;所述标签中数据类别+名称中排列顺序可为数据类别+名称或名称+数据类别;
格式字段用于在格式保存数字程序中使用,按字段数量分为单字段、双字段、三字段,根据要求采用其中的一种或多种,双字段分别为数据类别和名称,三字段分别为数据类型,数据类别和名称,单字段中使用数据标签对数据的表示,所述格式保存,指的是采用数据库、xml、json或自定义格式;
所述数据类别,数据类别为软件中各种数据来源,根据各个开发语言不同包含且不限于常量、自定义变量、界面录入的数据、程序调用参数、文本文件、sql数据、json、xml;
母程序中对于数字程序语句中的数据标签,采用第一函数或过程,将数据标签替换成对应的实际数据值;对于数字程序语句中的格式字段,对于单字段调用第一函数或过程将单字段里面的数据标签进行数值替换;对于双字段调用第二函数获取进行实际数据;对于三字段先根据类别和名称获取实际数据,然后将实际数据做从字符串到指定数据类型的转换;
第一函数或过程,其功能是对传入字符串参数中的的数据标签进行扫描,获取实际的数据,将实际数据替换数据标签,最后返回结果数据;
第二函数功能是根据数据类别和名称,相应的获取实际数据值,返回该数据值。
2.根据权利要求1所述的一种数字程序实现方法,其特征在于,所述数字程序的操作流程和形式为:采用文本编辑来写数字程序,保存为文本格式;或者使用预处理程序将文本格式转换成一种规范格式;或者采用一种专用软件来交互定义数字程序内容,生成一种规范格式,包括数据库、xml、json、自定义格式,数字程序采用加密或不加密方式。
3.根据权利要求1所述的一种数字程序实现方法,其特征在于,所述数字程序的语句类别包括变量申明、运算赋值语句、if条件语句、for循环语句、while循环语句、switch语句、continue语句、break语句、过程调用、sql语句、调用其它数字程序、界面控件操作、数字程序结束、注释中的一种或多种;
上述语句类别中,if条件语句、for循环语句、while循环语句、switch语句控制相应关联的单条或多条语句组运行,语句组采用特定符号标志或格式来确定语句组起始和结束范围;注释不需要母程序做操作。
4.根据权利要求3所述的一种数字程序实现方法,其特征在于,所述语句运行器具体指的是针对每种数字程序语句,母程序中用来实现其功能的一组程序语句,其包括:变量申明语句运行器、运算赋值语句运行器、if条件语句运行器、for循环语句运行器、while循环语句运行器、switch语句运行器、continue语句运行器、break语句运行器、过程调用运行器、sql语句运行器、调用其它数字程序运行器、界面控件操作运行器、数字程序结束运行器中的一种和多种。
5.根据权利要求4所述的一种数字程序实现方法,其特征在于,
变量申明运行器,在开发语言不同或者在母程序中预先定义的变量中,对应分配一个变量给此申明变量,或者利用某些母程序语言自身具有的对象,对应一个变量给此申明变量,在其它语句运行器中对此变量的引用操作,实际对应操作母程序变量;
运算赋值语句运行器流程包括:
对赋值符号的右边表达式进行计算,对表达式中的函数,运行母程序中对应的函数;
将右边表达式结果赋值给赋值对象变量对应的母程序变量。
6.根据权利要求4所述的一种数字程序实现方法,其特征在于,
(1)if语句运行器根据指定条件相应运行指定范围语句,if条件语句的两种形式为:
if条件表达式then语句1/语句组1;
if条件表达式then语句1/语句组1else语句2/语句组2;
其运行器流程是:
(a1)对条件表达式进行计算;
(b1)根据条件表达式结果为true时选择运行语句1或语句组1;
(c1)表达式结果为false时,如果存在else语句,则运行语句2或语句组2;运行指的是调用数字程序引擎对指定行的数字程序进行解释运行;
(2)for循环语句运行器根据指定条件,相应运行指定范围语句,for循环语句形式为:
for(变量名=初始值;条件表达式;未尾循环体)
关联语句组;
其运行器流程是:
(a2)母程序分配变量对应for变量名;
(b2)对新建for变量值=起始值;
(c2)依次运行for关联语句;
(d2)运行未尾循环体语句;
(e2)计算条件表达式;
(f2)条件表达式成立时循环运行(c2)-(e2),不成立结束for循环语句;
(3)while循环语句运行器根据指定条件,当while条件值为true时,调用数字程序引擎依次运行while关联语句,其形式为:
While条件表达式
语句组;
其运行器流程为:
(a3)计算条件表达式
(b3)当其为true时,依次运行关联语句;
(c3)循环运行(a3)-(b3),直到条件表达式不为true;
(4)switch语句运行器,用于对指定变量,根据不同的值运行指定的语句或语句组;swich语句形式为:
switch变量
{
case数据值1:语句1/语句组1;
case数据值2:语句2/语句组2;
...
case数据值n:语句n/语句组n;
default:语句/语句组;
}
switch语句运行器流程为:
(a4)获取switch变量值
(b4)依次对比case数据值,如果相同则执行case语句中定义的语句或语句组,然后结束完成switch语句运行;
(c4)如果没有比对成功并且定义了默认default语句,则运行default语句中的语句或语句组;
(5)continue运行器用于在for、while语句的关联语句组中,本次循环不再执行其后的语句,跳到下一次循环检查;
(6)break运行器用于在for、while、switch语句的关联语句组中,结束语句组运行。
7.根据权利要求4所述的一种数字程序实现方法,其特征在于,
过程调用运行器根据过程名称,分别获取相应的过程参数,调用母程序中的对应的内部过程;
sql语句运行器,母程序获取sql语句后,执行sql语句;
调用其它数字程序运行器,读取指定编号数字程序,调用数字程序引擎运行数字程序;
界面操作运行器根据控件名称对界面控件的属性进行操作;
数字程序结束运行器结束当前指示范围的数字程序运行。
8.一种数字程序实现系统,其特征在于,包括母程序和在母程序之外设置相对独立编号的数字程序,所述母程序为程序语言开发的程序,包括数字程序引擎;根据所需实现的功能,母程序读入指定编号的数字程序,由数字程序引擎按其语句类别运行对应的语句运行器,实现所需要的程序功能,所述数字程序引擎为程序函数或过程;
在数字程序语句中使用变量名和/或一种按数据类型+名称的软件数据总线形式来定义数据,数据总线形式数据表示方式为数据标签和/或格式字段;
所述数据标签采用一维标签、二维标签、三维标签中的一种或多种,二维标签按数据类别+名称来表示数据,包含起始符、数据类别、分隔符、名称、结束符;三维标签按数据类型+数据类别+名称来表示数据,包含起始符、数据类型、分隔符、数据类别、名称、结束符;一维标签是二维标签的简化方式,用于表示程序中常用的数据,包含起始符、名称、结束符;所述起始符、结束符、分隔符包括一个或多个字符;或者数据标签采取简化方式,省略起始符、结束符、分隔符中的一个或多个;所述标签中数据类别+名称中排列顺序可为数据类别+名称或名称+数据类别;
格式字段用于在格式保存数字程序中使用,按字段数量分为单字段、双字段、三字段,根据要求采用其中的一种或多种,双字段分别为数据类别和名称,三字段分别为数据类型,数据类别和名称,单字段中使用数据标签对数据的表示,所述格式保存,指的是采用数据库、xml、json或自定义格式;
所述数据类别,数据类别为软件中各种数据来源,根据各个开发语言不同包含且不限于常量、自定义变量、界面录入的数据、程序调用参数、文本文件、sql数据、json、xml;
母程序中对于数字程序语句中的数据标签,采用第一函数或过程,将数据标签替换成对应的实际数据值;对于数字程序语句中的格式字段,对于单字段调用第一函数或过程将单字段里面的数据标签进行数值替换;对于双字段调用第二函数获取进行实际数据;对于三字段先根据类别和名称获取实际数据,然后将实际数据做从字符串到指定数据类型的转换;
第一函数或过程,其功能是对传入字符串参数中的的数据标签进行扫描,获取实际的数据,将实际数据替换数据标签,最后返回结果数据;
第二函数功能是根据数据类别和名称,相应的获取实际数据值,返回该数据值。
CN202110909661.6A 2021-08-09 2021-08-09 一种数字程序实现方法和系统 Active CN113568607B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110909661.6A CN113568607B (zh) 2021-08-09 2021-08-09 一种数字程序实现方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110909661.6A CN113568607B (zh) 2021-08-09 2021-08-09 一种数字程序实现方法和系统

Publications (2)

Publication Number Publication Date
CN113568607A CN113568607A (zh) 2021-10-29
CN113568607B true CN113568607B (zh) 2023-11-07

Family

ID=78171088

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110909661.6A Active CN113568607B (zh) 2021-08-09 2021-08-09 一种数字程序实现方法和系统

Country Status (1)

Country Link
CN (1) CN113568607B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1485734A (zh) * 2002-08-22 2004-03-31 国际商业机器公司 客户机-服务器环境中优化可移植操作的装置和方法
CN1841328A (zh) * 2005-04-02 2006-10-04 华为技术有限公司 脚本语言的自动机方法
CN101482847A (zh) * 2009-01-19 2009-07-15 北京邮电大学 一种基于安全漏洞缺陷模式的检测方法
CN103077064A (zh) * 2012-12-31 2013-05-01 北京配天大富精密机械有限公司 一种解析并执行程序语言方法及解释装置
CN105446747A (zh) * 2015-12-29 2016-03-30 江苏图码信息科技有限公司 一种可视化立体码触屏编译器与编程技术
CN109542965A (zh) * 2018-11-07 2019-03-29 平安医疗健康管理股份有限公司 一种数据处理方法、电子设备及存储介质
CN110825969A (zh) * 2019-11-07 2020-02-21 腾讯科技(深圳)有限公司 数据处理方法、装置、终端和存储介质
CN111367938A (zh) * 2020-03-04 2020-07-03 海南金盘智能科技股份有限公司 数据库指令的生成方法、装置和计算机存储介质
CN113031932A (zh) * 2021-03-11 2021-06-25 腾讯科技(深圳)有限公司 项目开发方法、装置、电子设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170099144A1 (en) * 2015-10-06 2017-04-06 Prem Sobel Embedded encryption platform comprising an algorithmically flexible multiple parameter encryption system

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1485734A (zh) * 2002-08-22 2004-03-31 国际商业机器公司 客户机-服务器环境中优化可移植操作的装置和方法
CN1841328A (zh) * 2005-04-02 2006-10-04 华为技术有限公司 脚本语言的自动机方法
CN101482847A (zh) * 2009-01-19 2009-07-15 北京邮电大学 一种基于安全漏洞缺陷模式的检测方法
CN103077064A (zh) * 2012-12-31 2013-05-01 北京配天大富精密机械有限公司 一种解析并执行程序语言方法及解释装置
CN105446747A (zh) * 2015-12-29 2016-03-30 江苏图码信息科技有限公司 一种可视化立体码触屏编译器与编程技术
CN109542965A (zh) * 2018-11-07 2019-03-29 平安医疗健康管理股份有限公司 一种数据处理方法、电子设备及存储介质
CN110825969A (zh) * 2019-11-07 2020-02-21 腾讯科技(深圳)有限公司 数据处理方法、装置、终端和存储介质
CN111367938A (zh) * 2020-03-04 2020-07-03 海南金盘智能科技股份有限公司 数据库指令的生成方法、装置和计算机存储介质
CN113031932A (zh) * 2021-03-11 2021-06-25 腾讯科技(深圳)有限公司 项目开发方法、装置、电子设备及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
DS18B20数字温度传感器接口程序的时序;黄文力 等;《仪器仪表用户》;第18卷(第6期);99-101 *
Microprocessors: the engines of the digital age;Steve Furber;《 Proceedings of the Royal Society A: Mathematical, Physical and Engineering Sciences》;第473卷;2199 *
基于DSP的全数字控制原动系统仿真器程序及其调试;杜宗林;《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》(第12期);C042-199 *

Also Published As

Publication number Publication date
CN113568607A (zh) 2021-10-29

Similar Documents

Publication Publication Date Title
Fischer et al. The POE language-based editor project
EP0643851B1 (en) Debugger program which includes correlation of computer program source code with optimized objet code
US4730315A (en) Diagrammatic method of testing program
JPS61282935A (ja) プログラムにおける属性割当て検査方法及び装置
CN109491658A (zh) 计算机可执行代码数据的生成方法及装置
KR20080086456A (ko) 찾기 및 교체 입력의 파생어를 레버리징하는 찾기 및 교체기능을 갖춘 텍스트 편집 방법 및 시스템
CN110837362A (zh) 向导式可视的图形模块化的规则编辑方法、系统及编辑器
US11294665B1 (en) Computerized software version control with a software database and a human database
JPH11249875A (ja) プログラミング支援方法及びその装置
CN113568607B (zh) 一种数字程序实现方法和系统
JP4724387B2 (ja) プログラム変換プログラム、プログラム変換装置およびプログラム変換方法
JP4835859B2 (ja) 状態遷移図作成装置および状態遷移図作成方法
KR102614967B1 (ko) 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법
KR960003048B1 (ko) 소프트 웨어 개발 지원 시스템에 있어서의 표시방법
KR20090011974A (ko) 컴파일 대상 파일 추출 방법
CN107577476A (zh) 一种基于模块划分的安卓系统源码差异性分析方法、服务器及介质
JP2014228990A (ja) 制御プログラム作成装置および制御プログラム作成方法
CN114564195A (zh) 一种基于b/s架构的云cad平台的二次开发方法
Merino et al. Projecting Textual Languages
CA3134422A1 (en) System and method of computer-assisted computer programming
Bartels Bridging the worlds of textual and projectional language workbenches
CN110554860A (zh) 一种软件项目自然语言编程接口nli的构造方法及代码生成方法
Nagl et al. Software specification by graph grammars
Börger et al. Control state diagrams (meta model)
CN113407457B (zh) 多数据类型参数化定义及程序引用处理方法和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant