欢迎光临散文网 会员登陆 & 注册

vizzy基础课一∶初识vizzy与编程三大结构,变量

2023-05-14 01:07 作者:lzxi2016  | 我要投稿

声明∶本文章遵循作者之前所写的总表中的原则,所用图片以作者截屏与官网内容为主,若产生收益用于教育投资,以后作品不再说明 PS∶作者未学过计算机相关专业(只接触过Python基础)。文章大部分是按作者理解所写。参考了廖雪峰、谢声涛等老师的书与文章,以及百度百科,如有不足

(

特别是版权相关知识

)

与错误请及时指出。为满足不同需求阅读,文章特殊标记如∶

英文翻译,相关拓展资料等(如10+,13+,16+分别表示阅读该段至少应掌握的知识水平,高于标记段水平可跳过,未标记为以上三种均可,标记界限并不严格)。

官方文档

https://www.simplerockets.com/Blog/View/120034来自vizzy界面左上角get more 废话不多说,正文开始∶ 首先我们来了解一个概念∶

高级语言∶

高级语言(High-level programming language)是一种独立于机器,面向过程或对象的语言。高级语言是参照数学语言而设计的近似于日常会话的语言。

高级语言并不是特指的某一种具体的语言,而是包括很多编程语言。

(以上均来自百度百科) 由此见低级语言指机器语言(机器码),而vizzy是高级语言之一。书写数字与符号时应尽量

用英文输入,以减少出错

以上作为常识了解

上文中提及新概念∶

面向过程编程与面向对象编程 思想

面向过程编程

”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程(以上来自百度百科) 解读∶vizzy基本所有程序都应按照该思想编写,比如要做一个自动入轨的程序,设计思想应该是∶新建入轨程序,拖出一级点火

积木

(代码块),到达某高度一级塔分离…读代码时一般按顺序从上至下,层进式。

[16+]面向对象编程(OOP)

是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。(以上来自百度百科)类似于并列式 面向对象编程三大特征∶

继承,封装与多态

解读∶我刚开始学的时看了几遍书也不懂OOP,在读了高中以后学到函数一章才有初步的了解。题外话∶首先来了解一点初高中函数知识∶

语文中的函∶装东西的匣子

函数的传统定义: 设在某变化过程中有两个变量x、y,如果对于x在某一范围内的每一个确定的值,y都有唯一确定的值与它对应,那么就称y是x的函数,x叫做自变量。(初中常见)

函数的近代定义: 设A,B都是非空的数的集合,f:x→y是从A到B的一个对应法则,那么从A到B的映射f:A→B就叫做函数,记作y=f(x),其中x∈A,y∈B,原象集合A叫做函数f(x)的定义域,象集合C叫做函数f(x)的值域,显然有CB。(高中常见)

(计算机)编程通常会把数学某一概念抽象出来。

以上函数相关的知识看不懂没关系。

举个例子∶小学的时候,考的好可以换奖励,作业A+十次也可以换奖励,而考差了只能挨骂,

可以发现,人的状态是自变量(外界输入),得奖励和挨骂这两个事物是因变量(输出结果),而学习是对应法则,自变量可以多对一因变量,但反过来不可(映射关系?)

,抽象成计算机中的函数,也就是

学习("学得好")∶输出奖励

通过函数可以简化程序过程,模块、系统化程序

并且通过此类思想,不必知道函数背后的代码,只要读得懂官方的文档,知道输入和输出的结果,就能轻松运用某类工具了。所以如果听到xxx小学学生开发人工智能类新闻,有概率是用了

api(程序接口)。

可用此类思想实现团队合作

PS∶如果在Python的终端中输入"print",会提示 build-in function,意为内置模块,print即为对应法则

之所以提函数是因为函数(方法)在OOP中非常重要

更多函数内容移步后续课程

回到OOP上∶OOP可以理解为在面向过程编程中,数据装进一个"类"中(容器?)经过方法处理。

同样一个入轨程序,可以这样写∶新建飞船操作程序,新建轨道类,定义入轨方法(函数)∶一级点火积木,分离……定义纠正姿态方法∶转向……

程序,类,方法为包含与被包含关系(从大到小)

运用OOP也许程序的效率会略微下降,但大大提升了程序的可读性与可利用性,下次你想要加入自动对接程序,可以用面向过程编程思想写一个对接程序,或者用OOP思想往轨道类中添加对接方法

以上内容作了解即可,vizzy大部分为面向过程编程。

[9+]

在开始本文必会知识前,再插入小知识点∶

注释

与debug。bug为漏洞(虫子),debug即排除故障。一般的代码式的语言集成开发环境(ide)都会有工具。然而我们的vizzy似乎不具有,所以只能一遍一遍的朗读与背…(误)一边一边的进游戏与退出,这对手机玩家来说是相当痛苦的。

当然也可以用输出积木进行debug,以确定该积木以下部分是否正常运行(log或者直接向屏幕输出提示)

注释

并不是什么高级难懂的知识点,但是有些人的代码写的

可读性太差了! 没有注释根本无法维护,

Madam,you don't want your……too

#中的为注释(疑问∶achieve change color怎么改变颜色?),

注释不是解释代码的内容,比如∶

start

"active next stage"使下一阶段开始(活跃) ,

注释不应该将文字意思解释出来(开始,下一阶段),而应当解释为你的目的,如"实现飞船入轨"

注释应当添加到难懂且代码长的地方,减少不必要的,以简短易懂为重

以上为学前必懂小知识,以下为今日必会知识(以后vizzy可以缩写为VZ) vizzy是什么?Vizzy is a visual programming system that you can use to automate your craft to execute a wide variety of flight-oriented tasks(源自官网)简而言之∶帮助实现自动操作和各种飞行任务的可视化语言系统 vizzy实际可以插入任何部件中,选中然后点flight program(programme)即可

一∶初识界面

想学vizzy的同学基本上都知道在哪里打开了(旧版本左上角menu中的选项,新版本右侧的罗马?X) 编程三大结构∶

顺序结构,选择结构,循环结构

顺序结构即从start或其他event积木一直逐条运行到最后一条

选择(分支)结构∶又分为单分支if,双分支if else,多分支

(其实会用就行啦)

循环结构,for循环和while循环。while实现条件循环,for实现切片(历遍某个列表,集合等中某连续不连续段),或者重复n次循环

事件∶start(开始)与各种特殊的开始,比如"a与b对接时",它应当作为程序主体的第一个积木。最

重要的是

broadcast广播模块,有了它,你甚至可以实现在游戏中玩Minecraft(如果技术够,设备撑得住),它可以实现不同代码间的通讯,控制不同循环体的开始与结束。

程序流程∶里面有时间模块(等待),重复(n次)执行(循环体),条件判断。为程序主体。

运算(此处为"操控"或"控制"更合适,但为突出其特点)∶四则运算,各种数学运算,字符运算,与或非在此

飞船指令(此处为游戏特有)∶控制飞船(部件)朝向,蜂鸣器,选择操作飞船等。至于与C#什么关系有待考查。

逻辑(此处为"飞船信息"更佳)∶某些"定量"数据,如∶部件id,飞船坐标,配合运算与判断更佳

存储相关∶ 变量∶可以变的量,一般的语言(Python)类型中有∶字符串(string所写str)如"jno"为三个字符组成的字符串,整型(int)即整数,浮点型(小数),布尔值(ture,false即真和假),注意"4"str与"4"int与"4.0"float在计算机中是不同的,因为存储的方式不同,"4"str可以理解为"汉字",并且变量的大小写不同,变量也是不同的,如A与a是两个变量

列表∶列表与集合是不同的,集合是确定、互异、无序的,而列表是可重复、有序的,如[1,2,3]数列,第0个元素是1(Python一般的习惯第一个元素为0索引),配合for循环切片,你可以将某个变量依次赋值为列表中的某些按顺序排的量

函数与自定义模块 此游戏有两种函数(个人觉得可能是语言与游戏衔接的过程减少bug而设计的) 自定义表达∶官方文档∶类似于面向过程式的, 可以不可以定义指令,但是返回参数

自定义指令∶可以定义指令,但不返回参数

但貌似都可以添加变参 以上的区别待我研究后在后续课程中讲解 此外还有MDF(数据屏)相关代码,这将在MDF专题中提出 以及

FUND()函数,

这似乎是官方为了将语言与游戏衔接做的一个实验性部件,类似某国产编程软件的积木与代码切换。通过funk可能可以访问某些thinkerpanel中的属性,待研究完毕后续课程提供讲解

以下为官网关于vizzy介绍

变量的内容上文已提及差不多了,以下为补充

变量可以理解为存储数据的空间。

变量存储对象可分为可变对象与不可变对象,主要与计算机存储有关,这里不赘述

变量在不同语言大概分为属性变量和用户自己创建的变量,属性变量如物件id一般不可变,此外应声明全局与局部或隐式变量,全局为任何一个部件都可以使用,但是可能容易引起错误,局部为仅该部件可用。此外,for循环切片时的变量也应该为临时存在的局部变量

变量赋值∶set……to给变量特定值(vizzy似乎只能用数字)。change by增加或减少(减少时为负值)

user input为用户输入,即键盘输入。输入与输出(i/o)可以实现程序与程序(以函数参数和return形式),人机交互(以input和打印形式)

开源与版权

开源软件(Open Source Software)简单的说就是源代码对公众开放的软件。自由软件当然主张纯粹的“利他主义”,而开源软件则力求从中取得平衡点。(百度百科) 出名的开源社区有∶github,并且提供代码托管 开源协议大致有GPL、BSD、MIT、Mozilla、Apache和LGPL等。(菜鸟教程) 《著作权法》第二条 中国公民、法人或者其他组织的作品,不论是否发表,依照本法享有著作权。 自然人的作品,其发表权、著作财产性权利的保护期为作者终生及其死亡后五十年。(华律)

个人认为,应当支持依法维权,保护知识产权,也要积极贡献社会。所以能开源的不闭源,能免费的不增加额外条例。个人认可注明作者一开全开、仅用于学习并保留版权与闭源,其它形式打着"开源"旗号而本着"争暗利"的开源形式格局太小,不利于作品的传播,也不利于社会发展。

况且,不应将自己的代码看的过重,总有版权到期的一天,技术的更新必然造就代码的淘汰,所以尽量一开全开。

而个人作品也应尽量少使用开源代码,注意使用代码的相关协议,注明作者。

最后源码最开始处建议用注释说明作者

下期预告∶各分类积木块、循环体、列表与自定义函数的使用

vizzy基础课一∶初识vizzy与编程三大结构,变量的评论 (共 条)

分享到微博请遵守国家法律