用于人工智能教育图形化编程软件的编程块管理系统转让专利

申请号 : CN202210792138.4

文献号 : CN115291929B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 马琼雄蔡依炼张准沈沛杰周昊霖

申请人 : 华南师范大学

摘要 :

本发明实施例提供一种用于人工智能教育图形化编程软件的编程块管理系统,解决生成和修改编程块耗时长,效率低,出错率高的问题,编程块开发者只需要掌握python语言,不需要掌握JavaScript即可进行编程块的开发,降低了编程块开发的门槛;简化了编程块分支的管理,即编程块分支的生成、修改、删除、导入和导出;提供了编程块分支的发布功能,将分支分享到云端使得其他人可以将该分支下载并部署到自己的软件内,便于分支的分享。极大的简化了编程块生成、管理和发布的整个流程,提高开发者的开发效率。

权利要求 :

1.一种用于人工智能教育图形化编程软件的编程块管理系统,其特征在于,包括编程块管理模块、标签管理模块和分支管理模块:

所述编程块管理模块,用于基于分支名字、代码区域、块的内容,以及引用库名字、引用类名字、生成块的颜色、生成块的创建位置、生成块的形状生成编程块;所述分支名字为编程块所要创建的目标分支,所述代码区域为编程块对应的python代码,所述块的内容为编程块展示给使用者的文字描述;所述引用库名字为python代码对应的引用的库,所述引用类名字为python代码对应的引用的类,若所述python代码未引用任何库和/或类,则所述引用库名字和/或引用类名字填或不填;所述生成块的颜色为最终生成的编程块的颜色,所述生成块的创建位置为编程块在目标分支的具体位置,所述生成块的形状为生成的编程块的形状;

所述编程块管理模块具体用于在获取分支名字、代码区域、块的内容,以及引用库名字、引用类名字、生成块的颜色、生成块的创建位置、生成块的形状后,python通过当前路径自适应计算出编程块文件所在路径,获取存放所有编程块定义信息的文件夹的位置,其中,编程块定义信息的文件夹包括blocks文件夹、generators文件夹和jsons文件夹,所述blocks文件夹、generators文件夹和jsons文件夹中均包括第一js文件、第二js文件和json文件,第一js文件用于存储编程块的样式和属性,第二js文件用于存储编程块对应的代码,json文件用于控制编程块的渲染以及渲染位置;

Python根据用户的输入信息,取得所在分支名字后,结合获取的存放所有编程块定义信息的文件夹的位置,在jsons文件夹中获取该分支的json文件,并确定第一js文件、第二js文件、jsons文件夹的位置,根据输入的信息计算出需要生成的编程块的样式属性、python代码信息、渲染位置,对应写入第一js文件、第二js文件、jsons文件完成编程块的生成;

所述分支管理模块,用于构建所述编程块的分支结构,进行分支生成、分支修改、分支删除、分支导入和分支导出;所述分支管理模块包括增加大分支单元、增加小分支单元、删除分支单元和修改大分支单元;

所述增加大分支单元用于获取使用者输入创建的大分支的颜色和分支名字,以使python在获取的存放所有编程块文件夹里面的jsons文件夹里面创建一个新的json文件,创建json文件后将预设的基本大分支的配置文件写入创建的json文件,并在blocks文件夹和generators文件夹内分别创建第一js文件、第二js文件,完成大分支的创建;

所述增加小分支单元用于获取使用者选择增加的小分支颜色以及其创建的目标大分支的名字以及具体位置,获取小分支的名字,以使python会找到目标大分支所属的json文件,将小分支的初始配置信息写入,以在目标大分支下生成新的小分支;

所述删除分支单元用于删除大分支或小分支,获取使用者输入的要删除的大分支或小分支的名字,通过python找到定义大分支的第一js文件、第二js文件、jsons文件,将第一js文件、第二js文件、jsons文件删除即可删除大分支,通过python删除大分支对应的json文件中小分支的配置信息以及小分支中的所有编程块即可删除小分支;

所述修改大分支单元用于修改目标大分支的位置,获取使用者选择目标大分支的名字和移动的方向以及移动的步数,通过python修改大分支的第一js文件、第二js文件、jsons文件的文件名,python计算出需要修改文件名的所有文件,将文件名做出相应修改,完成大分支位置的修改;

所述标签管理模块,用于创建各分支的标签名称,并进行标签名称的修改和删除。

2.根据权利要求1所述的用于人工智能教育图形化编程软件的编程块管理系统,其特征在于,所述编程块管理模块还用于进行目标编程块的修改和删除,获取输入的目标编程块所在分支以及具体位置,python获取目标编程块定义在第一js文件、第二js文件、jsons文件中的信息,根据修改内容来进行相应的修改并重新写入第一js文件、第二js文件、jsons文件中,以完成目标编程块的修改;

获取输入的目标编程块所在分支以及具体位置,python获取对应编程块定义信息所在的第一js文件、第二js文件、jsons文件中的位置,然后删除其中关于目标编程块的信息,以完成目标编程块的删除。

3.根据权利要求1所述的用于人工智能教育图形化编程软件的编程块管理系统,其特征在于,所述标签管理模块包括标签增加单元和标签删除单元;

所述标签增加单元用户获取使用者选择标签创建的目标分支以及标签创建在所述目标分支的具体位置,以使python根据目标分支名字获取到目标分支的json文件,将标签创建的具体位置及标签内容写入json文件,完成标签的创建;

所述标签删除单元用于获取使用者选择标签创建的目标分支以及标签创建在所述目标分支的具体位置,以使python将存放标签信息的json文件中关于标签的信息删除,完成标签的删除。

4.根据权利要求1所述的用于人工智能教育图形化编程软件的编程块管理系统,其特征在于,所述分支管理模块还包括导出大分支单元和导入大分支单元;

所述导出大分支单元用于将目标大分支导出到目标文件夹或云端;

所述导入大分支单元用于将本地存放目标大分支信息的文件夹中定义的大分支导入部署到图形化编程软件上。

说明书 :

用于人工智能教育图形化编程软件的编程块管理系统

技术领域

[0001] 本发明实施例涉及硬件仿真技术领域,尤其涉及一种用于人工智能教育图形化编程软件的编程块管理系统。

背景技术

[0002] 在这个人工智能技术飞速发展的时代背景下,推进中小学人工智能教育的发展,让中小学生早日了解人工智能相关知识具有一定必要性,其意义有两方面:一方面是为学生的生存和发展做长远计划。当今中小学生是人工智能时代的原住民,如果他们不学习人工智能,不掌握它的工作原理和明白人类智能与机器智能各自的优势和短板,将来只会被智能时代所淘汰。而对他们进行人工智能普及教育,不仅能够增加他们对于人工智能的知识和技能,更能发展他们的科技创新和实践能力,从而帮助他们在将来能够更快的适应和融入日益技术化的工作和生活环境。另一方面,在中小学普及人工智能教育是为培育智能型人才做铺垫,为早日将我国从人口大国转型成为人力资源强国和科技强国作长远计划。
[0003] 人工智能教育离不开编程。但是绝大部分中小学生都没有学习过任何编程语言,没办法进行代码编程,所以现阶段人工智能教育都是在图形化编程软件上完成的。在图形化编程软件上,学生使用编程块进行编程,代替代码编程,学习人工智能知识。但是图形化编程软件上的编程块是开发者按照一系列步骤开发出来的,耗时长,开发效率低。编程块的开发步骤多,复杂度高,开发者在开发过程中很容易出现错误,并且不容易发现出错的地方,一旦出错,开发者需要花费大量时间去寻找出错点,时间消耗较大。
[0004] 目前市面上的图形化编程软件都是基于谷歌的blockly二次开发而来,其中的编程块的开发指南虽然可以在谷歌的blockly官网上查找到,但是资料并不多,并且是英文文档,没有进行过编程块开发的开发者,需要花费大量时间去blockly官网查找资料以及自己不断摸索出编程块的开发步骤或开发技巧。
[0005] 有些图形化编程软件会展示出每个编程块对应的代码,这段代码可以是各种编程语言编写,如JavaScript、C/C++、python等,编程块的开发也是就是将一段代码,通过一系列步骤转换成编程块,供学生和老师使用,但是不管一个编程块对应的编程语言是哪一种,其开发需要使用JavaScript语言,也就是说,开发编程块的开发人员大多数时候,都是需要至少同时掌握包括JavaScript在内的两门编程语言,这就增大了编程块开发的门槛。
[0006] 市面上的图形化编程平台的scratch编程的结果通过小人物的动作来展示,不显示代码,生动形象,但是scratch中的编程块数量少,虽然scratch有自制积木的功能,不涉及任何编程语言,通过可视化界面,可以迅速制作出新的积木,但是所制作的积木仅仅起到了一个类似函数的作用,其功能是建立在现有编程块的基础上实现的。而米思齐的图形化编程软件虽然有为使用者开放自定义公司库,自定义编程块,但是使用者需要自己通过JavaScript代码编写,花费许多步骤来完成编程块的制作,并且其使用的语言是Arduino,该语言普遍用在嵌入式教育,不适合人工智能教育,且需要一定的开发门槛。
[0007] 人工智能教育离不开编程,在众多编程语言当中,python这一门编程语言可读性高,编程效率快的,教师和学生不需要花费太多时间即可掌握其基本的语法,所以python是人工智能教育最合适的编程语言,也是适合在用于人工智能教育的图形化编程软件上的编程块对应的编程语言
[0008] 人工智能教育涉及的知识点很多,根据《中小学人工智能课程内容大纲》,人工智能课程按照特征,可分为:感知能力、记忆和思维能力、学习能力、行为能力四个大板块,而每个板块又可以细分出成许多知识点。所以,图形化编程软件上用于人工智能教育的编程块的需求会非常大,并且这大量的编程块如果放在同一个地方不便于使用和管理,所以需要分模块放置在不同的分支上。除了编程块的生成,对过时的编程块进行删除和修改也是经常需要的,而且需要按照课程需要灵活的修改。随着课程进度的推进,还需要对分支进行增加、删除和修改。
[0009] 通常,开发者根据教师的教学需要开发出相应的编程块,每个章节的编程块都放在对应的分支上,如果每一节课,开发者都要给教师提供具有最新的编程块的图形化编程软件,教师需要卸载原来的软件,然后安装最新的软件,这种操作不但耗时长,而且冗余度高,因为图形化编程软件上的编程块都存放在软件目录内的一个文件夹内,教师只需要将该文件夹删除,把开发者提供的最新的文件夹放进去即可,教师每次都需要打开软件的目录去寻找这个存放编程块定义文件的文件夹也是不方便的。

发明内容

[0010] 本发明实施例提供一种用于人工智能教育图形化编程软件的编程块管理系统,以解决生成和修改编程块耗时长,效率低,出错率高的问题。
[0011] 本发明实施例提供一种用于人工智能教育图形化编程软件的编程块管理系统,包括编程块管理模块、标签管理模块和分支管理模块:
[0012] 所述编程块管理模块,用于基于分支名字、代码区域、块的内容,以及引用库名字、引用类名字、生成块的颜色、生成块的创建位置、生成块的形状生成编程块;
[0013] 所述分支管理模块,用于构建所述编程块的分支结构,进行分支生成、分支修改、分支删除、分支导入和分支导出;
[0014] 所述标签管理模块,用于创建各分支的标签名称,并进行标签名称的修改和删除。
[0015] 作为优选的,所述分支名字为编程块所要创建的目标分支,所述代码区域为编程块对应的python代码,所述块的内容为编程块展示给使用者的文字描述;所述引用库名字为python代码对应的引用的库,所述引用类名字为python代码对应的引用的类,若所述python代码未引用任何库和/或类,则所述引用库名字和/或引用类名字可不填;所述生成块的颜色为最终生成的编程块的颜色,所述生成块的创建位置为编程块在目标分支的具体位置,所述生成块的形状为生成的编程块的形状。
[0016] 作为优选的,所述编程块管理模块具体用于在获取分支名字、代码区域、块的内容,以及引用库名字、引用类名字、生成块的颜色、生成块的创建位置、生成块的形状后,python通过当前路径自适应计算出编程块文件所在路径,获取存放所有编程块定义信息的文件夹的位置,其中,编程块定义信息的文件夹包括blocks文件夹、generators文件夹和jsons文件夹,所述blocks文件夹、generators文件夹和jsons文件夹中均包括第一js文件、第二js文件和json文件,第一js文件用于存储编程块的样式和属性,第二js文件用于存储编程块对应的代码,json文件用于控制编程块的渲染以及渲染位置;
[0017] Python根据用户的输入信息,取得所在分支名字后,结合获取的存放所有编程块定义信息的文件夹的位置,在jsons文件夹中获取该分支的json文件,并确定第一js文件、第二js文件、jsons文件夹的位置,根据输入的信息计算出需要生成的编程块的样式属性、python代码信息、渲染位置,对应写入第一js文件、第二js文件、jsons文件完成编程块的生成。
[0018] 作为优选的,所述编程块管理模块还用于进行目标编程块的修改和删除,获取输入的目标编程块所在分支以及具体位置,python获取目标编程块定义在第一js文件、第二js文件、jsons文件中的信息,根据修改内容来进行相应的修改并重新写入第一js文件、第二js文件、jsons文件中,以完成目标编程块的修改;
[0019] 获取输入的目标编程块所在分支以及具体位置,python获取对应编程块定义信息所在的第一js文件、第二js文件、jsons文件中的位置,然后删除其中关于目标编程块的信息,以完成目标编程块的删除。
[0020] 作为优选的,所述标签管理模块包括标签增加单元和标签删除单元;
[0021] 所述标签增加单元用户获取使用者选择标签创建的目标分支以及标签创建在所述目标分支的具体位置,以使python根据目标分支名字获取到目标分支的json文件,将标签创建的具体位置及标签内容写入json文件,完成标签的创建;
[0022] 所述标签删除单元用于获取使用者选择标签创建的目标分支以及标签创建在所述目标分支的具体位置,以使python将存放标签信息的json文件中关于标签的信息删除,完成标签的删除。
[0023] 作为优选的,所述分支管理模块包括增加大分支单元、增加小分支单元、删除分支单元和修改大分支单元;
[0024] 所述增加大分支单元用于获取使用者输入创建的大分支的颜色和分支名字,以使python在获取的存放所有编程块文件夹里面的jsons文件夹里面创建一个新的json文件,创建json文件后将预设的基本大分支的配置文件写入创建的json文件,并在blocks文件夹和generators文件夹内分别创建第一js文件、第二js文件,完成大分支的创建;
[0025] 所述增加小分支单元用于获取使用者选择增加的小分支颜色以及其创建的目标大分支的名字以及具体位置,获取小分支的名字,以使python会找到目标大分支所属的json文件,将小分支的初始配置信息写入,以在目标大分支下生成新的小分支;
[0026] 所述删除分支单元用于删除大分支或小分支,获取使用者输入的要删除的大分支或小分支的名字,通过python找到定义大分支的第一js文件、第二js文件、jsons文件,将第一js文件、第二js文件、jsons文件删除即可删除大分支,通过python删除大分支对应的json文件中小分支的配置信息以及小分支中的所有编程块即可删除小分支;
[0027] 所述修改大分支单元用于修改目标大分支的位置,获取使用者选择目标大分支的名字和移动的方向以及移动的步数,通过python修改大分支的第一js文件、第二js文件、jsons文件的文件名,python计算出需要修改文件名的所有文件,将文件名做出相应修改,完成大分支位置的修改。
[0028] 作为优选的,所述分支管理模块还包括导出大分支单元和导入大分支单元;
[0029] 所述导出大分支单元用于将目标大分支导出到目标文件夹或云端;
[0030] 所述导入大分支单元用于将本地存放目标大分支信息的文件夹中定义的大分支导入部署到图形化编程软件上。
[0031] 本发明实施例提供的一种用于人工智能教育图形化编程软件的编程块管理系统,解决生成和修改编程块耗时长,效率低,出错率高的问题,编程块开发者只需要掌握python语言,不需要掌握JavaScript即可进行编程块的开发,降低了编程块开发的门槛;简化了编程块分支的管理,即编程块分支的生成、修改、删除、导入和导出;提供了编程块分支的发布功能,将分支分享到云端使得其他人可以将该分支下载并部署到自己的软件内,便于分支的分享。极大的简化了编程块生成、管理和发布的整个流程,提高开发者的开发效率。

附图说明

[0032] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0033] 图1为根据本发明实施例的用于人工智能教育图形化编程软件的编程块管理系统结构框图;
[0034] 图2为根据本发明实施例的编程块管理系统进行编程块从生成到发布的流程图;
[0035] 图3为根据本发明实施例的编程块管理系统进行从云端或本地文件夹中导入分支的流程示意图;
[0036] 图4为根据本发明实施例的标签示例图;
[0037] 图5为根据本发明实施例的大分支和小分支示意图;
[0038] 图6为根据本发明实施例的编程块所展示的内容示例图;
[0039] 图7为根据本发明实施例的图形化编程软件上代码区域显示示意图。

具体实施方式

[0040] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 本申请实施例中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
[0042] 本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列部件或单元的系统、产品或设备没有限定于已列出的部件或单元,而是可选地还包括没有列出的部件或单元,或可选地还包括对于这些产品或设备固有的其它部件或单元。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0043] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0044] 通常,开发者根据教师的教学需要开发出相应的编程块,每个章节的编程块都放在对应的分支上,如果每一节课,开发者都要给教师提供具有最新的编程块的图形化编程软件,教师需要卸载原来的软件,然后安装最新的软件,这种操作不但耗时长,而且冗余度高,因为图形化编程软件上的编程块都存放在软件目录内的一个文件夹内,教师只需要将该文件夹删除,把开发者提供的最新的文件夹放进去即可,教师每次都需要打开软件的目录去寻找这个存放编程块定义文件的文件夹也是不方便的。
[0045] 因此,本发明实施例提供一种用于人工智能教育图形化编程软件的编程块管理系统,解决生成和修改编程块耗时长,效率低,出错率高的问题,编程块开发者只需要掌握python语言,不需要掌握JavaScript即可进行编程块的开发,降低了编程块开发的门槛;简化了编程块分支的管理,即编程块分支的生成、修改、删除、导入和导出;提供了编程块分支的发布功能,将分支分享到云端使得其他人可以将该分支下载并部署到自己的软件内,便于分支的分享。极大的简化了编程块生成、管理和发布的整个流程,提高开发者的开发效率。以下将通过多个实施例进行展开说明和介绍。
[0046] 图1为本发明实施例提供一种用于人工智能教育图形化编程软件的编程块管理系统,界面使用python的第三方库PySide2框架来实现,包括编程块管理模块、标签管理模块和分支管理模块:
[0047] 所述编程块管理模块,用于基于分支名字、代码区域、块的内容,以及引用库名字、引用类名字、生成块的颜色、生成块的创建位置、生成块的形状生成编程块;
[0048] 编程块生成、管理、发布的流程,就是生成大分支,在该大分支下生成所需的编程块以及用于分类的标签,根据需要在该大分支下创建多个小分支,并在小分支内创建编程块和标签。最后将该大分支导出到本地文件夹或团队云端,以分享给其他人。
[0049] 本实施例中,如图2中所示,使用者输入必填的分支名字、代码区域、块的内容以及选填的引用库名字、引用类名字、生成块的颜色、生成块的创建位置、生成块的形状来生成对应的编程块,当用户输入需要的输入的参数之后,点击开始生成编程块按钮确认生成之后,即可生成新的编程块,所述编程块管理模块具体用于在获取分支名字、代码区域、块的内容,以及引用库名字、引用类名字、生成块的颜色、生成块的创建位置、生成块的形状后,python通过当前路径自适应计算出编程块文件所在路径,具体为:python获取本系统当前所在路径,先计算出图形化编程软件的根目录所在路径,然后根据根目录所在路径使用函数os.path.join()拼接出编程块文件所在位置,不管编程块管理软所在位置在图形化编程软件的目录内任意位置,都能查找到编程块文件所在位置;获取存放所有编程块定义信息的文件夹的位置,其中,编程块定义信息的文件夹包括blocks文件夹、generators文件夹和jsons文件夹三个分支文件,每个分支里面的所有编程块由两个js文件和一个json文件里面的一个个函数来决定,即所述blocks文件夹、generators文件夹和jsons文件夹中均包括第一js文件、第二js文件和json文件,第一js文件用于存储编程块的样式和属性,第二js文件用于存储编程块对应的代码,json文件用于控制编程块的渲染以及渲染位置;Python根据用户的输入信息,取得所在分支名字后,结合获取的存放所有编程块定义信息的文件夹的位置,在jsons文件夹中获取该分支的json文件,并确定第一js文件、第二js文件、jsons文件夹的位置,根据输入的信息计算出需要生成的编程块的样式属性、python代码信息、渲染位置,对应写入第一js文件、第二js文件、jsons文件完成编程块的生成。
[0050] 具体的,在本实施例中,所述分支名字为编程块所要创建的目标分支,所述代码区域为编程块对应的python代码,所述块的内容为编程块展示给使用者的文字描述;所述引用库名字为python代码对应的引用的库,所述引用类名字为python代码对应的引用的类,若所述python代码未引用任何库和/或类,则所述引用库名字和/或引用类名字可不填;所述生成块的颜色为最终生成的编程块的颜色,可以不填,保持默认,则最终生成的编程块的颜色会与该分支中的第一个编程块的颜色相同;所述生成块的创建位置为编程块在目标分支的具体位置,可以不填,保持默认,则最终生成的编程块会处于目标分支的底部,所述生成块的形状为生成的编程块的形状,本实施例中,有两种形状可供选择,圆形或非圆形,圆形的编程块可作为其他编程块的输入,通常这些编程块具有返回值,而非圆形的编程块不能作为其他编程块的输入,通常这些编程块不具有返回值,但可以与其他非圆形的编程块互相连接,形成上下关系,默认选择圆形编程块。
[0051] 本实施例中,所述代码区域用于使用者输入原生的python代码,最终在图形化编程软件的代码区域显示的代码和输入的python代码基本上是一样的。本实施例中设置了若干关键词,并使用特定函数和特定语句解析出输入的python代码中的各个变量,以将用户所需要作为编程块对应的python代码能够正确的与编程块对应起来。
[0052] 在本实施例中,块的内容供使用者输入编程块的文字描述,该文字描述是最终编程块展示出来的内容。文字描述与代码区域类似,将所需要呈现在编程块上的内容输入到块的内容区域里面即可,与代码区域类似,本实施例中设置了同样的若干关键词,使得python能够正确解析块的内容,从而将使用者需要呈现在编程块上的内容正确的呈现出来。在块的内容区域中,同样的,除了普通文本之外,还有四种类型,分别是普通变量类型、字符串类型、数字类型和下拉框类型,其中普通变量类型、字符串类型和数字类型需要和代码区域的对应变量名相同,而下拉框类型,在代码区域中是以MODE来表示,在块的内容上使用键值对的形式来表示,其中键是块中展示的内容,值是代码区域展示的内容。例如,在python中,打印信息可以使用代码“print(打印的内容)”来实现,那么想要实现下图所示的编程块,本实施例在代码区域中输入:print(a,NUM,STR,MODE),在块的内容区域输入的内容是:打印变量a和数字NUM和字符串STR的值,选择的模式是{“模式一”:”mode1”,”模式二”:”mode2”}。在图形化编程软件上代码区域显示的内容如图7所示。
[0053] 使用者输入的python代码是以字符串的形式输入,而输入的字符串中是没有显示出这些信息的,那么就需要对其中python代码信息的解析,使用python的exec函数以及try‑except语句来解析出代码中的普通变量,exec函数接受的参数是一段字符串,它会将这段字符串作为python代码来执行,并且exec函数默认的作用域是局部作用域,所以本实施例构建一个函数,将需要解析的python代码输入到该函数中,在该函数内使用exec函数执行输入的python代码,如果python代码中存在普通变量,就会报错,报错信息是NameError,此时本实施例可以利用python的try‑except函数捕获这个错误,获取到该变量名,收集到一个列表里面,并将该变量赋值为None,然后再将重新使用exec函数执行该python代码直到没有出现NameError,就获取到了所有的普通变量。但是在获取普通变量的过程中,通常会遇到属性名,例如如果输入的python代码是”a.resize()”,其中a是普通变量,resize是a变量的一个属性,当找到a这个普通变量并将其赋值为None后,再次执行这段python代码就会错误,因为None是没有任何属性的,也就没有resize这个属性的,这个时候就会出现AttributeError错误,这时候使用try‑except语句捕获这个错误,跳过这部分内容而转而去执行属性的输入参数,查找输入参数中是否有普通变量存在。另外,除了上述情况外,还有一种可能就是python代码中存在某个函数,比如python代码”a=resize()”,这个时候,a是普通变量,resize是某个函数的函数名,当使用exec函数执行该语句的时候,会先查找到a这个普通变量,之后就会发现resize没有定义,它就会误认为resize是普通变量,然后就会赋值resize为None之后再次执行之后就会出现错误"'NoneType'object is not callable",因为None不是类也不是函数,无法被调用,这时的报错类型是TypeError,使用try‑except来捕获这个错误,并将resize从装载普通变量的列表中除去,并且将exec执行的代码变为括号里的内容,查找resize这个函数的输入参数中是否存在普通变量。对于其他类型的变量,使用正则表达式解析出代码中的数字类型变量、字符串类型变量和下拉框类型的变量,具体是通过正则表达式将代码中的关键字找出,剩下的则就是普通文本类型。至此就把生成编程块的python代码和块的内容解析完成。
[0054] 在上述实施例的基础上,作为一种优选的实施方式,所述编程块管理模块还用于进行目标编程块的修改和删除,获取输入的目标编程块所在分支以及具体位置,其中,使用者可输入目标编程块所在分支以及具体位置,所有的修改项都是可选的,使用者取消勾选需要修改的内容旁边的“不修改”复选框,并输入修改后的内容,点击修改编程块;python获取目标编程块定义在第一js文件、第二js文件、jsons文件中的信息,根据修改内容来进行相应的修改并重新写入第一js文件、第二js文件、jsons文件中,以完成目标编程块的修改。
[0055] 使用者输入目标编程块所在分支以及具体位置如在某个分支下的第3个编程块,然后点击删除块按钮,获取输入的目标编程块所在分支以及具体位置,python获取对应编程块定义信息所在的第一js文件、第二js文件、jsons文件中的位置,然后删除其中关于目标编程块的信息,以完成目标编程块的删除。
[0056] 在上述实施例的基础上,编程块的生成中涉及到关键词、用于解析python代码特定函数和特定语句具体实施如下,在图形化编程软件上的编程块所展示的内容中,除了普通文本之外,还有四种类型,分别是普通变量类型、字符串类型、数字类型和下拉框类型,如图6所示,从左往右依次是普通变量类型、数字类型、字符串类型和下拉框类型。在代码区域中对于普通文本和普通变量类型,使用者只需要文本或普通变量的变量名原样输入即可,而数字类型的变量需要使用设置的关键字NUM来代替,字符串类型的变量需要使用STR来代替,下拉框类型需要使用MODE来代替,如果有多个变量如有多个数字类型的变量,则依次使用NUM、NUM1、NUM2……来代替即可。
[0057] 所述标签管理模块,用于创建各分支的标签名称,并进行标签名称的修改和删除。
[0058] 在本实施例中,所述标签如图4所示,用于区分不同功能模块的编程块,用于提示使用者(如老师、学生)找到对应功能模块的编程块。
[0059] 增加标签时,使用者选择标签创建的目标分支以及标签创建在该分支的具体位置,默认放在分支最后一个,最后输入标签的显示内容,点击增加标签按钮,python会根据目标分支名字获取到该分支的json文件,将标签创建的具体位置以及标签内容写入该json文件即可完成标签的创建。
[0060] 删除标签与增加标签操作类似。使用者选择标签创建的的目标分支以及标签创建在该分支的具体位置,点击删除标签按钮,python会将存放该标签信息的json文件中关于该标签的信息删除即可完成标签的删除。
[0061] 所述分支管理模块,用于构建所述编程块的分支结构,进行分支生成、分支修改、分支删除、分支导入和分支导出;
[0062] 在本实施例中,分支管理包括增加、删除大分支和小分支以及修改大分支位置和导入、导出大分支。小分支是嵌在大分支内,即大分支和小分支为父子关系,如图5中所示。
[0063] 本实施例中,所述分支管理模块包括增加大分支单元、增加小分支单元、删除分支单元和修改大分支单元;
[0064] 所述增加大分支单元用于增加大分支,使用者输入创建的大分支的颜色和分支的名字,可输入大分支创建的具体位置,若不选,则默认放在最后一个。增加大分支单元获取使用者输入创建的大分支的颜色和分支名字,以使python在获取的存放所有编程块文件夹里面的jsons文件夹里面创建一个新的json文件,该json文件的命名默认是6位随机字母加下划线,也可由使用者输入,创建json文件后将预设的基本大分支的配置文件写入创建的json文件,并在blocks文件夹和generators文件夹内分别创建同名的第一js文件、第二js文件,完成大分支的创建。
[0065] 所述增加小分支单元用于获取使用者选择增加的小分支颜色以及其创建的目标大分支的名字以及具体位置,获取小分支的名字,以使python会找到目标大分支所属的json文件,将小分支的初始配置信息写入,以在目标大分支下生成新的小分支。
[0066] 所述删除分支单元用于删除大分支或小分支,获取使用者输入的要删除的大分支或小分支的名字,通过python找到定义大分支的第一js文件、第二js文件、jsons文件,将第一js文件、第二js文件、jsons文件删除即可删除大分支;删除小分支与删除大分支类似,通过python删除大分支对应的json文件中小分支的配置信息以及小分支中的所有编程块即可删除小分支。
[0067] 所述修改大分支单元用于修改目标大分支的位置,获取使用者选择目标大分支的名字和移动的方向(上移或下移)以及移动的步数,通过python修改大分支的第一js文件、第二js文件、jsons文件的文件名,python计算出需要修改文件名的所有文件,将文件名做出相应修改,完成大分支位置的修改。
[0068] 具体的,大分支的位置取决于其在jsons文件夹中被图形化编程软件读取的顺序,图形化编程软件使用Node.js的fs模块进行文件的读取,该模块对文件的读取是按照字符串的大小从小到大依次读取,而因为字符串的比较是从左往右逐个字符比较大小,如果那么如果有两个文件是1shijue.json和2yuyin.json,那么由于1<2那么1shijue.json就会先被读取,但是如果有两个文件分别是11shijue.json和2yuyin.json,fs模块还是会先读取11shijue.json,因为通过它们的第一个字符的大小比较判断11shijue.json字符串大小更小,那么在每个json文件的文件名前面加入四位数字如0001、0002、0003……,使得图形化编程软件在分支数量不大于10000的情况下(这个数目在正常情况下是不可能达到的),会按照四位数字从小到大依次读取以达到控制大分支顺序,修改大分支的位置,只需要修改文件名的前面四个数字即可。
[0069] 在上述实施例的基础上,作为一种优选的实施方式,所述分支管理模块还包括导出大分支单元和导入大分支单元;
[0070] 如图2、图3中所示,所述导出大分支单元用于将目标大分支导出到目标文件夹或云端,使用者选择目标文件夹或选择勾选导出到云端的复选框,选择导出的大分支的名字即可导出该大分支到目标本地文件夹或存储到云端服务器。具体实现为:如果是导出到本地文件夹,使用者需选择目标文件夹,然后python会在目标文件夹下创建三个文件夹分别是blocks、generators和jsons文件夹,将目标大分支所属的两个js文件(即第一js文件、第二js文件)以及一个json文件分别复制到这三个文件夹中,即完成导出大分支到本地文件夹中;若选择将大分支导出到云端,python通过Django框架给云端的服务器发送请求,将目标大分支所属的三个文件发送到云端的后台管理系统即完成将大分支导出到云端。
[0071] 所述导入大分支单元用于将本地存放目标大分支信息的文件夹中定义的大分支导入部署到图形化编程软件上。使用者选择本地文件夹或点击从云端下载,即可将本地文件夹中定义的大分支或云端下载的大分支导入部署到图形化编程软件上,完成大分支的导入。具体是通过python解析所选文件夹中是否含有定义大分支的三个文件,将该分支部署到图形化编程软件上,或利用Django框架发送特定的请求给云端服务器,云端服务器接收到请求信息之后会返回当前云端服务器的后台管理系统中存储的大分支,python接收到云端服务器返回的所有大分支信息,会将它们展示给使用者,使用者从中选择所需要导入的大分支,python会再次发送请求信息,让云端的服务器将该大分支的三个定义文件发送过来,python拿到这三个定义文件之后将其部署到图形化编程软件上,完成大分支的导入。
[0072] 在上述实施例的基础上,作为一种优选的实施方式,还可进行撤回操作,用户点击“返回到上一步”的按钮即可将本次对操作取消,返回到上一步的状态,防止因操作不当造成影响和损失。具体操作是,在进行任何一项操作之前,python通过将当前的所有编程块文件复制到一个特定的保留副本的文件夹,进行操作之后,如果想要撤回本次操作,点击“返回到上一步”按钮,python将之前保存的副本覆盖当前的编程块文件,完成撤回功能。
[0073] 本发明的各实施方式可以任意进行组合,以实现不同的技术效果。
[0074] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid StateDisk)等。
[0075] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
[0076] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。