woshiwppaa
woshiwppaa
经验丰富的Java/安卓开发专家
关注数: 19
粉丝数: 125
发帖数: 1,384
关注贴吧数: 15
软件又更新了 请到酷安网下载。新功能和修正如下 1. 修正了命令提示符窗口无法正确显示汉字的错误。但注意"\n"还是不能显示为换行,主要原因是用户输入和代码输入不是一回事,用户输入的字符串就是用户想看到的,所见及所得,代码输入则要考虑各种escape的情况,如果想显示换行,请用print("\n"); 2. 增加了一个远程监视的脚本例子。使用该脚本,用户不需要中央服务器,只需要两部安卓设备,一个作为监视器放在远端,另一个作为控制器由用户操控。用户可以通过发email的方式随时启动远程音频视频监视。换句话说,该脚本可以把用户不用的旧手机变成免费实时的家庭安全监视器。
可编程科学计算器又出新版本了 2.1.3.98版,还是请在酷安网下载。 主要改进还是远程通信,这次摄像头不会过一阵就黑屏了。 mfp语言库当然也相应的地更新了,有兴趣的可以去GitHub下载最新代码。 下一步我准备我准备为mfp库做一个不同的外壳,这个外壳不是计算器应用了,至于什么应用,大家拭目以待。
刚刚发布了可编程科学计算器2.1.2.95版 里面有最新版的pdf教程,包含面向对象编程和使用call语句实现并行计算,欢迎前往酷安网下载
欢迎大家在自己的安卓应用中使用MFP语言 从2.1.1版开始(该版本刚刚更新,可以在酷安网下载),可编程科学计算器提供了二进制的MFP安卓库和使用MFP安卓库的详细教程,这意味着开发者可以轻松将MFP库导入自己的应用中并在自己的应用中调用MFP语言,通过MFP语言的强大能力用很少的时间和小量的资源实现强大的功能。欢迎广大用户前往MFP安卓库Github的主页https://github.com/woshiwpa/MFPAndroLib访问以获取更多信息。
基于安卓的MFP语言已经开源了 MFP编程语言已经在Github正式开源了。MFP语言遵循Apache 2.0软件授权协议,这意味着任何个人或者公司均可以使用MFP语言的安卓库或者源代码。此外,从最新的2.1.1版开始(该版本刚刚更新,可以在酷安网下载),可编程科学计算器提供了二进制的MFP安卓库和使用MFP安卓库的详细教程,这意味着开发者可以轻松将MFP库导入自己的应用中并在自己的应用中调用MFP语言,通过MFP语言的强大能力用很少的时间和小量的资源实现强大的功能。欢迎广大用户前往MFP安卓库Github的主页https://github.com/woshiwpa/MFPAndroLib访问以获取更多信息。
可编程科学计算器发布新版本了 请前往酷安网下载。
可编程科学计算器发布新版本了 请去酷安网下载。版本号为2.1.0.91
可编程科学计算器发布新版本了 这次是2.1.0.91版,请到酷安网下载。新功能包括1. 开始在安卓系统上支持基于WebRTC的多媒体库,这样游戏玩家就可以边玩游戏边视频聊天了。还提供了一个双机对战中国象棋的例子程序;2.开始支持双向通信连接;3.开始支持JSON格式的文件的读写。
征集MFP联机游戏编程的测试者 各位MFP语言和可编程科学计算器用户,我现在已经在安卓系统上实现了WebRTC协议栈,并且用MFP语言开发了一个无需中央服务器的双机对战的中国象棋游戏。该游戏支持两种协议,一种是TCPIP协议(该协议可以实现近程联机对打),第二种是用email做信道的WebRTC协议(该协议可以实现远程联机对打)。在发布这个游戏软件之前需要测试者。请有意参与测试的MFP用户请通过短消息或留言的方式和我联系。
可编程科学计算器发布了新版本2.0.1.86 请到google的商店下载。 新功能是在安卓平台上增加了对WEBRTC协议栈的支持。这样一来,用MFP语言可以开发远程游戏和通信引用。新的版本还提供了一个实例,双机对打的中国象棋游戏。该游戏可以使用TCPIP协议或者基于email信道的WEBRTC协议实现无服务器的联机对战。欢迎大家下载试用。
MFP语言在线帮助发布了 MFP语言在线帮助发布了,网址是 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwoshiwpa.github.io&urlrefer=94f3fa40f30edcfa7c8f53d1a20a7520 如果打不开请留言
MFP语言游戏开发教程发布了 用MFP语言能够开发运行于安卓和PC平台上的小游戏。完整的游戏开发教程在 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fwoshiwpa.github.io%2FMFPLang4JVM%2Fzh-CN%2FGameProgramming%2Findex.html&urlrefer=2b64b27d3f8356ab7dee86fdc8955c12 。我之所以现在才推出教程,是因为以前由于MFP语言还不支持面向对象,所以大量使用数组,比较麻烦。在MFP语言支持面向对象之后,这都不再是问题了。欢迎MFP爱好者尝试和分享自己的小游戏。 对于想尝试MFP语言其他功能的爱好者,欢迎访问MFP语言完整教程。其网址在 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fwoshiwpa.github.io%2FMFPLang4JVM%2Fzh-CN%2Findex.html&urlrefer=95a458a6d40a5b6be1821d6c17d3185c 如果打不开链接,请回复本帖子
MFP语言现在已经在Github上公开源代码了 MFP语言现在已经在Github上公开源代码了,现在源代码和编译好的MFP for JVM均可以在github上下载。MFP的主页在 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fwoshiwpa.github.io%2FMFPLang4JVM%2F&urlrefer=b16f01e2660f1740786ba5984b79733d 。主页是英文的,但是帮助文档有中文。欢迎大家前往浏览下载。如果访问Github有困难,请在本帖中回复。 下一步将会发布游戏编写指南。
可編程科學計算器和MFP語言開始支持面向對象了 请在酷安网下载最新版本(也就是2.0.0.83版)。除了支持面向对象编程,这个最新版本还有一个新的特征是,可以在命令提示符中定义类和函数,方便大家测试使用。 如果想知道如何使用面向對象編程的功能,請參考軟件自帶的幫助文檔或者在命令提示符中輸入help class然後運行即可以看到幫助信息。 另外,MFP语言下一步将在github上公开源代码,采用Apache许可,并逐步提供面向JVM和安卓的lib,欢迎志同道合的开发者将MFP引擎整合到自己的应用中去。
可编程科学计算器又出新版本了 这次是1.8.1.82版,它加强了并行计算的功能并提供了多玩家贪吃蛇游戏以及一个并行计算简单的人工神经网的例子。欢迎大家前去酷安下载。 下一步我将加入对面向对象和类型的支持,然后我会开放源码。
MFP语言并行计算编程指南 MFP语言对并行计算的支持是通过call ... endcall程序块来实现的。大体流程是: 1.在客户端和服务端分别调用generate_interface函数建立通信界面; 2.服务端调用initialize_local函数监听客户端的连接请求; 3.客户端调用connect函数连接到服务端,该函数返回一个连接对象; 4.客户端将一个call ... endcall程序块,以及所有相关代码,资源文件和整个程序栈的拷贝,发送到服务端。call语句的第一个参数就是connect函数返回的连接对象; 5.如果有需要,客户端继续发送更多的call ... endcall程序块到服务端; 6.服务端接收到客户端的call ... endcall程序块和相关信息之后,为该程序块建立一个独立的沙盒。该沙盒拥有完整一套所在设备的MFP系统库,但是自己用户代码库和用户资源库则是独立的。程序块所在的代码文件和程序块调用的用户代码所在文件会保存在沙盒的用户代码库目录下,所需要的资源文件会保存在沙盒的用户资源库目录下。在服务端,会有多个MFP沙盒在同时运行。由于各个MFP沙盒的程序栈,用户代码库和用户资源库都是独立的,各个MFP沙盒之间不会相互影响,沙盒和MFP服务端本地程序也不会相互影响。 7.服务端运行call ... endcall程序块中的代码之后,通过return语句返回结果。返回的结果将赋值到位于客户端的endcall语句的唯一的参数上。如果endcall没有参数,返回的结果将会被忽略。反过来,如果call ... endcall程序块中的return语句没有返回值,而endcall有一个参数,该在客户端参数的值不变; 8.在客户端,如果代码尝试读取endcall语句的参数变量的值,而这时服务端还没有返回结果,代码将会阻塞,直到服务端返回结果,代码继续运行; 9.如果客户端想关闭连接,可以调用close_out_connection和close_local函数。如果服务端也调用close_local函数,意味着服务端无法监听其它任何客户端的请求。
如何通过可编程科学计算器在另一个设备中运行本机MFP语言编写的 MFP语言的一个重要功能就是通过call ... endcall语句实现对并行计算的支持。MFP语言实现多线互不干扰并行计算的基本原理是采用沙盒机制。每一个MFP沙盒拥有完整一套所在设备的MFP系统库,但是自己用户代码库和用户资源库则是独立的,服务端会为一个从客户端传来的call程序块建立一个MFP沙盒。程序块所在的代码文件和程序块调用的用户代码所在文件会保存在沙盒的用户代码库目录下,所需要的资源文件会保存在沙盒的用户资源库目录下。各个MFP沙盒的程序栈也都是独立的。这样就保证了各个MFP沙盒之间不会相互影响,沙盒和MFP服务端本地程序也不会相互影响。 在帮助中已经有call ... endcall语句的详细例子,但是那是客户端设备发送一段算法去服务端设备。如果客户端想要发送一个游戏去服务端设备并在服务端设备运行,该如何实现呢? 游戏和普通算法的区别在于,游戏需要支持视频和音频,所以有很多资源文件(比如,图像文件,数据库文件,声音文件等等)。在其他方面,游戏和普通算法是一样的。所以关键就在于客户端的MFP语言如何将资源文件传到服务端,而服务端的MFP语言(它和客户端MFP语言运行的是同样的代码)如何保存并调用这些资源文件,同时不影响在服务端运行的其它客户端的call程序块或者服务端自己正在运行的程序。 以下代码给出了一个例子,在这段代码需要使用一个叫做food.png的图像文件。在可编程科学计算器上(不论是基于安卓的还是基于JAVA的),该图像文件和这段代码所在的MFP脚本文件位于同一个目录。 @build_asset copy_to_resource(get_upper_level_path(get_src_file_path()) + "food.png", "images/food.png") if is_sandbox_session() foodImage = load_image(get_sandbox_session_resource_path() + "images/food.png") elseif is_mfp_app() foodImage = load_image_from_zip(get_asset_file_path("resource"), "images/food.png", 1) else foodImage = load_image(get_upper_level_path(get_src_file_path()) + "food.png") endif 如果我们将这段代码编译到一个APK安装包中,我们需要把food.png图片拷贝到APK的asset的resource.zip文件中。安装了APK之后,在运行MFP应用时,我们需要调用load_image_from_zip从APK的asset的resource.zip文件中读出图片。为了实现上述过程,我们加入了一个annotation语句: @build_asset copy_to_resource(get_upper_level_path(get_src_file_path()) + "food.png", "images/food.png") ,告诉MFP编译器将位于代码所在目录的food.png文件拷贝到APK的asset的resource.zip文件中,在resource.zip文件中的具体位置是images/food.png。 如果我们不是编译安装包,而是需要把这段代码发送到另外一个设备上去执行,@build_asset同样会发挥作用。如果客户端是可编程科学计算器,@build_asset会告诉call语句把位于代码所在目录的food.png文件传送到服务端MFP沙盒的resource目录中,具体位置是resource目录中的image子目录的food.png文件。如果客户端是一个通过编译出的APK安装的MFP应用,由于MFP应用已经将food.png保存在asset的resource.zip文件中的images目录下,call语句会从安卓的asset中提取出food.png然后传送到服务端MFP沙盒的resource目录中,具体位置仍然是resource目录中的image子目录的food.png文件。 在运行上述代码时,我们需要根据MFP所在的环境执行不同的指令。如果MFP是在沙盒中运行,也就是服务端执行客户端的call程序块,那么资源文件是保存在本地存储器上的,读取图像文件时我们用load_image并指定路径即可。我们通过函数is_sandbox_session()返回true来断定MFP是在沙盒中运行,通过调用函数get_sandbox_session_resource_path()获取沙盒用户资源库所在目录。 如果MFP是在编译安装后的MFP应用中运行,资源文件保存在安卓的asset中的resource.zip包内,所以我们需要调用load_image_from_zip函数。我们通过函数is_mfp_app()返回true来断定MFP是在编译安装后的MFP应用中运行,通过调用函数get_asset_file_path("resource")获取resource包在安卓asset中的具体位置。 如果MFP是在可编程科学计算器中运行,不论是基于JAVA还是安卓,资源文件都保存在本地存储器上,读取图像文件时我们用load_image并指定路径即可。food.png所在的具体目录可以通过调用get_upper_level_path(get_src_file_path())来定位。 如果读取的不是图像文件而是声音文件,上述代码的逻辑基本不变,区别就是调用play_sound或者play_sound_from_zip而不是load_image或者load_image_from_zip。 还需要注意的是,由于函数is_sandbox_session()和is_mfp_app()可能均返回true(比如服务端是一个MFP应用),开发者必须首先判断当前MFP是否在沙盒中运行,也就是说is_sandbox_session()条件语句必须放在最前面,其次才是is_mfp_app()条件语句。 将上述代码加入一个call程序块中,或者将上述代码编入一个运行游戏的函数然后在call程序块中调用,MFP就可以自动地替开发者传递代码和资源文件并在另一个设备中执行该游戏了。 1.8.0.79版的可编程科学计算器已经提供了这样一个例子。在服务器端,使用者选择“探索示例”,然后选择“并行计算例子”,然后选择“运行”,输入2,点击确定按钮,进入服务器模式,这时该程序会列出本设备所有的IP地址,使用者选择一个作为服务地址,然后回车(ENTER键,注意不是运行键)。在客户端设备上,同样地,使用者选择“探索示例”,然后选择“并行计算例子”,然后选择“运行”,输入3,点击确定按钮,进入客户端模式,这时该程序会列出本设备所有的IP地址,使用者选择一个作为客户端地址,然后回车(ENTER键,注意不是运行键),然后再输入刚才选择的服务器地址,然后再次ENTER键回车,客户端会将call程序块发送到服务端,然后在服务端运行超级超级小白兔游戏。不管服务器端的用户代码库中是不是已经有了该游戏均不影响该游戏正常运行,因为该游戏的代码和资源都是通过客户端发送过来的。 需要注意的是,服务器和客户端的IP地址最好位于同一个子网内,也就是中间没有NAT(Network Address Translation)层,如果做不到这一点,最少也必须做到通过客户端IP地址能够ping通服务端的IP地址,在现有的IPv4体系下,由于用户的设备(不管是客户端还是服务端)的IP地址往往被一重或多重NAT层所遮蔽,所以想要执行远程并行计算的难度比较大,但是如果多个设备在同一个内部网中,互联并行则毫无问题;未来IPv6体系下,NAT层不再会像现在这么大行其道,执行远程并行计算将不再是梦想。此外,开发者还在尝试引入NetOTC协议,真正实现远程点对点连接。总之,在编程语言级别上实现并行计算是一个全新思想,MFP语言作为全球第一种引入此思想的编程语言必然有着光明的前景。
可编程科学计算器1.8.0.79发布了,请到酷安网下载 在这个最新版本中,可编程科学计算器进一步完善了并行计算的功能,修正了一系列的bug。现在用户可以在任意一台支持MFP语言的设备上(该设备运行基于JAVA的可编程科学计算器,基于安卓的可编程科学计算器,或者可编程科学计算器编译生成的安卓应用),发送一段代码给另外一台支持MFP语言的设备执行。第二台设备同样行基于JAVA的可编程科学计算器,基于安卓的可编程科学计算器,或者可编程科学计算器编译生成的安卓应用,注意第一台和第二台设备完全可以运行基于不同的平台的可编程科学计算器,或者一台运行可编程科学计算器,另一台运行可编程科学计算器编译生成的安卓应用,或者两台均运行可编程科学计算器编译生成的安卓应用。但需要注意的是两台设备的可编程科学计算器版本均必须为1.8.0.79或以上,如果运行的是可编程科学计算器编译生成的安卓应用,该安卓应用必须由可编程科学计算器1.8.0.79或以上版本编译生成。另外,在当前,下层通信协议仅仅支持TCPIP。 MFP语言实现并行计算是通过call ... endcall语句。call和endcall语句定义了MFP语言call程序块的边界。call程序块是一段不在本进程中而是在别的进程中执行的指令。call语句是call程序块的开始。在call语句中,call关键字后面紧跟着连接对象,然后是on关键字,最后是一串call程序块的参数变量。call程序块的参数变量都是在call语句之前就已经声明的普通的变量。每一个参数变量都只能被一个call语句所使用。endcall语句标志着call程序块的中止。endcall语句有一个可选参数。该参数是call程序块在本地进程的返回变量。返回变量也是在call程序块之前声明的普通变量。返回变量只能被一个call程序块所使用而且不能同时作为call程序块的参数变量。 我们可以把一个call语句看作是一个函数的开始。与普通函数不同的是,call程序块并非是在本地进程中运行,而是在另外一个进程中运行。运行call程序块的进程可以是本机,也可以是另外一台设备。运行call程序块的进程通过call语句中的连接对象和本地进程连接。运行call程序块的进程可以看到call程序块参数变量的值的变化,也可以修改call程序块参数变量的值。call程序块对自己的参数变量的值的修改会反应到本地进程。但是需要注意的是,MFP语言并不保证本地进程和call程序块进程对程序块参数变量的值的修改会被实时同步到对方,也不保证按修改的顺序进行同步传递。MFP语言唯一保证的是在一个进程内对一个call程序块参数变量的修改是原子性的,也就是只有上一次修改完成了之后,对值的新的修改,不管是来自客户端还是服务器端,才能开始。需要注意的是这个原子性只是应用于一个进程。由于call程序块进程和本地进程都有一份程序块参数变量的拷贝,对于一个程序块参数变量的两份拷贝在不同的进程中同时进行修改不违背修改的原子性。当call程序块遇到endcall语句或者return语句时停止运行并返回。如果return语句返回一个值,位于本地进程的endcall语句将收到返回值并将返回值赋给call程序块在本地进程的返回变量(如果endcall语句声明了返回变量的话)。 需要注意的是,不同于call程序块的参数变量,call程序块的返回变量采用的是阻塞模式。换句话说,当call程序块被发送到远端执行后,任何在本地进程读取call程序块的返回变量的值的语句都将被阻塞,直到call程序块返回(不管有没有返回值)为止。 以下是call程序块的一个例子: variable local_interface, remote_interface, ret local_interface = ::mfp::paracomp::connect::generate_interface("TCPIP", "192.168.1.101")//客户端(本地进程)地址 ret = ::mfp::paracomp::connect::initialize_local(local_interface, false) print("initialize_local ret = " + ret + "\n") remote_interface = ::mfp::paracomp::connect::generate_interface("TCPIP", "192.168.1.107")//服务器端(运行call程序块的进程)地址 ret = ::mfp::paracomp::connect::connect(local_interface, remote_interface)//从客户端连接到服务器端 print("connect ret = " + ret + "\n") //connect函数的返回值是一个基于数组的字典,"CONNECT"关键字所对应的就是连接对象的定义。如果connect函数失败,"CONNECT"关键字对应的值为NULL。 variable conn = ::mfp::data_struct::array_based::get_value_from_abdict(ret, "CONNECT") variable a = "hekko, 48", b = 3+7i, c=["LCH"] call conn on a, b a = 88 b = "KIL" print("Hello ....\n") return 54 endcall c //我们必须先取回c的值。c的值能够取回方才意味着call程序块已经返回。 print("c = " + c) //当c的值取回之后,我们可以打印出a和b的值。可以看到这时a和b的值已经发生了更改。如果我们在print("c = " + c)语句之前打印a和b的值, //我们可能无法观察到a和b的值发生了变化 print("a = " + a + " b = " + b) close_out_connection(local_interface, remote_interface)//关闭连接 close_local(local_interface, false)//关闭本地通信协议界面 以上代码是由客户端进程所执行,在服务器端,我们需要运行以下代码接收连接请求并运行call程序块: variable local_interface, ret local_interface = ::mfp::paracomp::connect::generate_interface("TCPIP", "192.168.1.107")//服务器端(运行call程序块的进程)地址 ret = ::mfp::paracomp::connect::initialize_local(local_interface, true) print("initialize_local ret = " + ret + "\n") //监听连接请求。监听线程将在后台工作。 ret = ::mfp::paracomp::connect::listen(local_interface) print("listen ret = " + ret + "\n") //下面这条input语句将阻塞程序的运行。如果服务端代码是一个简单的MFPS脚本并且是在bash或者Windows命令提示符中运行,input语句可以阻止服务器程序的退出所以是必 //不可少的。但是如果是在安卓或者MFP语言的JAVA界面程序中运行,只要安卓应用或JAVA界面程序不退出input语句就是不必要的。因为这种情况下服务器端的进程并没有中止。 input("Press any key to exit\n", "S") 先运行以上服务器端代码,然后在不同的设备中运行客户端代码。在运行之前需要确保客户端和服务器端的地址是正确的。开发者可以看到在服务器端一个Hello ....消息被打印出来。在客户端变量c的新值是一个基于数组的字典,call程序块的返回值54位于该字典中。变量a和b的值也都被更新了。
可编程科学计算器1.8.0.79发布了,请到酷安网下载 在这个最新版本中,可编程科学计算器进一步完善了并行计算的功能,修正了一系列的bug。现在用户可以在任意一台支持MFP语言的设备上(该设备运行基于JAVA的可编程科学计算器,基于安卓的可编程科学计算器,或者可编程科学计算器编译生成的安卓应用),发送一段代码给另外一台支持MFP语言的设备执行。第二台设备同样行基于JAVA的可编程科学计算器,基于安卓的可编程科学计算器,或者可编程科学计算器编译生成的安卓应用,注意第一台和第二台设备完全可以运行基于不同的平台的可编程科学计算器,或者一台运行可编程科学计算器,另一台运行可编程科学计算器编译生成的安卓应用,或者两台均运行可编程科学计算器编译生成的安卓应用。但需要注意的是两台设备的可编程科学计算器版本均必须为1.8.0.79或以上,如果运行的是可编程科学计算器编译生成的安卓应用,该安卓应用必须由可编程科学计算器1.8.0.79或以上版本编译生成。另外,在当前,下层通信协议仅仅支持TCPIP。 MFP语言实现并行计算是通过call ... endcall语句。call和endcall语句定义了MFP语言call程序块的边界。call程序块是一段不在本进程中而是在别的进程中执行的指令。call语句是call程序块的开始。在call语句中,call关键字后面紧跟着连接对象,然后是on关键字,最后是一串call程序块的参数变量。call程序块的参数变量都是在call语句之前就已经声明的普通的变量。每一个参数变量都只能被一个call语句所使用。endcall语句标志着call程序块的中止。endcall语句有一个可选参数。该参数是call程序块在本地进程的返回变量。返回变量也是在call程序块之前声明的普通变量。返回变量只能被一个call程序块所使用而且不能同时作为call程序块的参数变量。 我们可以把一个call语句看作是一个函数的开始。与普通函数不同的是,call程序块并非是在本地进程中运行,而是在另外一个进程中运行。运行call程序块的进程可以是本机,也可以是另外一台设备。运行call程序块的进程通过call语句中的连接对象和本地进程连接。运行call程序块的进程可以看到call程序块参数变量的值的变化,也可以修改call程序块参数变量的值。call程序块对自己的参数变量的值的修改会反应到本地进程。但是需要注意的是,MFP语言并不保证本地进程和call程序块进程对程序块参数变量的值的修改会被实时同步到对方,也不保证按修改的顺序进行同步传递。MFP语言唯一保证的是在一个进程内对一个call程序块参数变量的修改是原子性的,也就是只有上一次修改完成了之后,对值的新的修改,不管是来自客户端还是服务器端,才能开始。需要注意的是这个原子性只是应用于一个进程。由于call程序块进程和本地进程都有一份程序块参数变量的拷贝,对于一个程序块参数变量的两份拷贝在不同的进程中同时进行修改不违背修改的原子性。当call程序块遇到endcall语句或者return语句时停止运行并返回。如果return语句返回一个值,位于本地进程的endcall语句将收到返回值并将返回值赋给call程序块在本地进程的返回变量(如果endcall语句声明了返回变量的话)。 需要注意的是,不同于call程序块的参数变量,call程序块的返回变量采用的是阻塞模式。换句话说,当call程序块被发送到远端执行后,任何在本地进程读取call程序块的返回变量的值的语句都将被阻塞,直到call程序块返回(不管有没有返回值)为止。 以下是call程序块的一个例子: variable local_interface, remote_interface, ret local_interface = ::mfp::paracomp::connect::generate_interface("TCPIP", "192.168.1.101")//客户端(本地进程)地址 ret = ::mfp::paracomp::connect::initialize_local(local_interface, false) print("initialize_local ret = " + ret + "\n") remote_interface = ::mfp::paracomp::connect::generate_interface("TCPIP", "192.168.1.107")//服务器端(运行call程序块的进程)地址 ret = ::mfp::paracomp::connect::connect(local_interface, remote_interface)//从客户端连接到服务器端 print("connect ret = " + ret + "\n") //connect函数的返回值是一个基于数组的字典,"CONNECT"关键字所对应的就是连接对象的定义。如果connect函数失败,"CONNECT"关键字对应的值为NULL。 variable conn = ::mfp::data_struct::array_based::get_value_from_abdict(ret, "CONNECT") variable a = "hekko, 48", b = 3+7i, c=["LCH"] call conn on a, b a = 88 b = "KIL" print("Hello ....\n") return 54 endcall c //我们必须先取回c的值。c的值能够取回方才意味着call程序块已经返回。 print("c = " + c) //当c的值取回之后,我们可以打印出a和b的值。可以看到这时a和b的值已经发生了更改。如果我们在print("c = " + c)语句之前打印a和b的值, //我们可能无法观察到a和b的值发生了变化 print("a = " + a + " b = " + b) close_out_connection(local_interface, remote_interface)//关闭连接 close_local(local_interface, false)//关闭本地通信协议界面 以上代码是由客户端进程所执行,在服务器端,我们需要运行以下代码接收连接请求并运行call程序块: variable local_interface, ret local_interface = ::mfp::paracomp::connect::generate_interface("TCPIP", "192.168.1.107")//服务器端(运行call程序块的进程)地址 ret = ::mfp::paracomp::connect::initialize_local(local_interface, true) print("initialize_local ret = " + ret + "\n") //监听连接请求。监听线程将在后台工作。 ret = ::mfp::paracomp::connect::listen(local_interface) print("listen ret = " + ret + "\n") //下面这条input语句将阻塞程序的运行。如果服务端代码是一个简单的MFPS脚本并且是在bash或者Windows命令提示符中运行,input语句可以阻止服务器程序的退出所以是必 //不可少的。但是如果是在安卓或者MFP语言的JAVA界面程序中运行,只要安卓应用或JAVA界面程序不退出input语句就是不必要的。因为这种情况下服务器端的进程并没有中止。 input("Press any key to exit\n", "S") 先运行以上服务器端代码,然后在不同的设备中运行客户端代码。在运行之前需要确保客户端和服务器端的地址是正确的。开发者可以看到在服务器端一个Hello ....消息被打印出来。在客户端变量c的新值是一个基于数组的字典,call程序块的返回值54位于该字典中。变量a和b的值也都被更新了。
可编程科学计算器1.8.0.78发布了 请大家到酷安网下载 新功能如下: 增加对并行计算的支持。事实上,MFP语言就是Mathematical language For Parallel computing的缩写。并行计算的支持是通过新增加的call语句和一系列与之相关的函数,比如generate_interface,initialize_local,listen和connect实现的。具体说来,在客户端MFP语言发送一个call程序块给在监听的服务器,服务器执行该程序块并返回结果给客户端。客户端和服务器之间通过call程序块的参数进行交流。但需要注意的是并行计算的功能还在发展和测试中,现阶段仅仅支持TCPIP协议。 大家一定还记得前一段时间我一直在测试远程端到端通信,很多人不理解,觉得可编程科学计算器就是一个计算器,为什么要引入通信功能?现在大家理解了吧。引入通信功能是为了增加对并行计算的支持。 大家知道,计算机语言的发展出现过两次飞越,第一次从汇编到C,程序员不再需要关心寄存器中断等底层硬件相关的东西,第二次从C++到JAVA,程序员不再需要关系内存管理,本人觉得还需要第三次飞越,就是对网络通信的内在支持。这个很重要,因为以后,特别是随着IPV6的普及,每个设备都有自己的IP,设备之间如何简单方便地直接交互是个问题,你当然可以用现有的TCPIP栈,不过这玩艺儿不是一般的麻烦,一般人用不来,更何况TCPIP协议传数据可以,传指令就不方便了,你又要用RPC,总之,难上加难。随着人工智能的进化,大规模并行计算更是迫在眉睫。MFP语言就是一种新的编程思想,在编程语言的层面上解决这个问题。
写给冰枫火灵X的信 我家长没收了我的手机,暂时不能联系上你,所以让人代我发了这一封信 @冰枫火灵X
可编程科学计算器1.7.4.70发布了 请到酷安网下载。远程端到端通信的详细帮助已经包含在最新版v1.7.4.70的可编程科学计算器中了。点击设置,再选择远程连接设置,然后选择帮助,即可看到。里面一步一步教用户如何使用微软outlook,或者qq邮箱,或者gmail邮箱来实现远程端到端视频/语音/数据通信。请大家务必下载体验,并在版上交流结果。
发不了贴,咋回事? 难道因为我在国外?
感谢金牛兄弟的协助 洲际远程端到端通信再次成功
金牛兄,我用你的email没有问题 我怀疑还是你的wifi,或者网络不稳定。有时间我们再测一次
感谢网友15817688868的帮助,远程通信测试成功 端到端远程通信测试成功,感谢网友的帮助,但仍然有些问题要解决 1.现在还是只能使用微软outlook和hotmail邮箱 2.出现错误之后无法自动恢复,需要手动退出之后再进入。 测试还在继续,欢迎更多网友加入,如果想加入测试,请发email给我.
可编程科学计算器新版发布并找人进行跨国通信测试 可编程科学计算器1.7.4.69版发布了,请到酷安网下载。 这个版本的新功能是,你只要启动可编程科学计算器的后台信号服务,可编程科学计算器自己不必启动,别人给你发连接请求,只要你设置允许自动打开视频通话,那么视频通话就会被自动打开。 这个新功能无需双方主动,只需一方主动连接,另一方接受到连接信号后被动进行反应。它是向人工智能并行计算的重要一步,同时也有重要的商业价值。试想,你只需要两部能够上网的安卓手机和两个email地址,哪怕第二部手机在万里之外,哪怕第二部手机无人操控,你都可以随时用你手中的第一部手机看到第二部手机所在位子的情况,而且,你的通信是不需要经过中央服务器的,也就是数据流是绝对安全的,这是一个多么强大和有前途的远程监控系统啊。 当然,前提条件是,你的手机不会自动关闭后台的信号服务。有些手机,比如OPPO,小米,华为,还有一些三星手机,为了省电,在缺省设置时会终止非特许应用在后台运行。在这种情况下,你需要手动设置允许后台服务运行。比如OPPO手机,你需要到设置里面,选择电池,在应用列表中找到可编程科学计算器,然后关闭"冻结后台运行"和"允许系统管理异常"两个选项。 以上功能在澳洲测试是毫无问题的,但是,我还没有进行跨洲测试,不知有没有用户能帮我这个忙进行跨洲测试,如果愿意,就发信给我。
请大家帮我一起测试端到端通信 首先向大家说一声抱歉,这半年没有发新版本,原因是端到端(peer to peer)通信实现起来太难,而且测试也是大问题(所以需要大家帮忙)。 很多人可能会问,现在已经有微信,qq了,为什么你还要搞一个端到端的通信?而且这和计算器似乎风马牛不相及。 我的回答是,首先,端到端通信和微信qq截然不同。微信和qq这样的通信应用是需要有中央服务器的。你登陆了微信的服务器,才能寻找你的好友(你需要知道你的好友的微信号,这有时候也不是一件很容易的事情),然后加好友,才能开始通信。你所有的发给好友的短消息,都要通过微信服务器转发。 但是可编程科学计算器的通信方式截然不同,这里不需要中央服务器,你只需要知道对方的Email(现阶段对方也需要知道你的email,以后甚至对方可以不需要知道你的email),就可以和对方进行短消息和视频聊天,你所有发给对方的短消息,都是直接被对方收到,无需找一个服务器进行转发。 当然,可能有人又说,是的,你的这个技术看起来很先进,但是短信语音视频聊天这样的功能微信qq都已经做得很完善了,我干嘛要用你的这个还很不稳定,还在测试的东西? 我的回答是,我做端到端通信,并不是为了和微信qq竞争。我是做计算器的,和微信qq确实是风马牛不相及。但是,我必须做端到端通信,原因是这是实现移动并行计算唯一的路。 众所周知,现有的并行计算的实现方式是有两种,一种是通过一台电脑多CPU的方式(这也包括GPU的模式,也就是一个GPU多内核),比如天河据说有2000多块CPU,还有一种是多台电脑通过高速局域网连接的方式。这些方式各有优势,但是都需要特别的硬件。全世界有几十亿部手机电脑,但由于没有这些特别的硬件,并行计算无法利用这些计算资源。对于并行计算来讲,由于每一个并行集群所包含的计算单元有限(即便可以到1万个核,也还是有限的),所以并行计算的真正潜力没有得到发挥。 端到端的通信,所起的作用就相当于用软件来模拟以太网,当然,用软件来模拟硬件,肯定就不会是高速了。但是考虑到全世界有几十亿部手机电脑,这就意味着一个并行集群所包含的计算单元几乎是无限的。我们知道,人的大脑包含860亿个神经元,但是一个单独的神经元其实非常简单,计算能力远远比不上一只手机。现在虽然没有860亿个神经元,但如果能够成功构建一个包含有860万个强大的计算单元的集群,在上面进行并行计算,能够实现怎么样的功能?,能够实现和人类大脑相似甚至更强的功能吗?这将是一个很有趣的问题。 当然,这是一个宏大而遥远的目标,我也不见得能够实现。但无论如何,试一下是没错的。我远在澳洲,端到端通信有很多东西一个人测试不了,所以,我就需要大家帮我的忙了。我测试用的email是
[email protected]
,由于现阶段需要测试双方同时连接对方,所以如果大家想和我进行测试,请先发email到
[email protected]
,和我约好时间(注意不要发到测试email里面,因为那里面的email会太多,我可能看不到),告诉我你的email地址,我们一起测试。深表感谢。
正在憋大招 这个版感觉很冷清。希望放出的大招能够吸引更多用户。
qwqw25565请进 如果想在电脑上开发MFP游戏,您先要用一根usb导线把手机和装有JAVA的电脑连起来,在电脑上找到手机内存所对应的存储盘,在上面找到AnMath目录,整个拷贝到电脑的硬盘上,然后进入拷贝后的AnMath目录,运行JMathCmd.jar文件,就打开了基于JAVA的可编程科学计算器.基于JAVA的可编程科学计算器就像一个小matlab,用法和手机上的可编程科学计算器的命令提示符工具完全一样。在上面可以运行手机上的各种程序和游戏。比如你想运行超级小白兔游戏,在基于JAVA的可编程科学计算器中输入 ::gdi_test::game_test::super_bunny::run() ,然后回车即可。如果想运行贪吃蛇,输入 ::gdi_test::game_test::hungry_snake::run() ,然后回车即可。如果想运行削宝石游戏,输入 ::gdi_test::game_test::gemgem::start_gemgem() ,然后回车即可。 这些游戏的源代码在AnMath/scripts/manual/2D games/目录下。该目录有三个子目录,分别是gemgem(对应削宝石游戏),hungry_snake(对应贪吃蛇游戏)和super_bunny(对应超级小白兔游戏).进入每个游戏目录,找到.mfps文件,这就是源代码,推荐用notepad++打开编辑。如果楼主想开发自己的游戏,需要确保将游戏代码和资源文件所在目录保存在AnMath/scripts目录下,开发完毕后,将整个AnMath目录拷贝回安卓内存,覆盖原来是的AnMath目录,那么在您的手机中,就可以运行在电脑上开发的游戏了。当然,对于初学者,最好从修改现有的例子游戏开始.游戏开发完后,开发者既可以在电脑上打包APK,也可以在手机上打包APK,生成的APK包可以在各大网站发布,不会有任何报病毒或者什么其它问题。游戏开发不是一个简单的工作,建议楼主先好好阅读pdf手册的游戏开发章节,循序渐进,从最简单的开始逐步推进
重发:在电脑上用MFP开发游戏 如果想在电脑上开发MFP游戏,您先要用一根usb导线把手机和装有JAVA的电脑连起来,在电脑上找到手机内存所对应的存储盘,在上面找到AnMath目录,整个拷贝到电脑的硬盘上,然后进入拷贝后的AnMath目录,运行JMathCmd.jar文件,就打开了基于JAVA的可编程科学计算器.基于JAVA的可编程科学计算器就像一个小matlab,用法和手机上的可编程科学计算器的命令提示符工具完全一样。在上面可以运行手机上的各种程序和游戏。比如你想运行超级小白兔游戏,在基于JAVA的可编程科学计算器中输入 ::gdi_test::game_test::super_bunny::run() ,然后回车即可。如果想运行贪吃蛇,输入 ::gdi_test::game_test::hungry_snake::run() ,然后回车即可。如果想运行削宝石游戏,输入 ::gdi_test::game_test::gemgem::start_gemgem() ,然后回车即可。 这些游戏的源代码在AnMath/scripts/manual/2D games/目录下。该目录有三个子目录,分别是gemgem(对应削宝石游戏),hungry_snake(对应贪吃蛇游戏)和super_bunny(对应超级小白兔游戏).进入每个游戏目录,找到.mfps文件,这就是源代码,推荐用notepad++打开编辑。如果楼主想开发自己的游戏,需要确保将游戏代码和资源文件所在目录保存在AnMath/scripts目录下,开发完毕后,将整个AnMath目录拷贝回安卓内存,覆盖原来是的AnMath目录,那么在您的手机中,就可以运行在电脑上开发的游戏了。当然,对于初学者,最好从修改现有的例子游戏开始.游戏开发完后,开发者既可以在电脑上打包APK,也可以在手机上打包APK,生成的APK包可以在各大网站发布,不会有任何报病毒或者什么其它问题。游戏开发不是一个简单的工作,建议楼主先好好阅读pdf手册的游戏开发章节,循序渐进,从最简单的开始逐步推进
开放了我的数学公式识别库和相关安卓应用的源码 最近两年比较忙,无法对自己的智慧计算器安卓应用快速升级更新,所以决定把代码贡献出来,希望能够给需要的人以帮助。而我自己则可以集中经历于可编程科学计算器的开发。 我开发的软件是一个数学公式图像识别的库,以及基于这个库的安卓应用,也就是智慧计算器。用户只需要点击安卓应用的一个按钮,进入拍照模式,然后对数学公式拍照,就可以识别公式并根据识别的结果进行计算或者作图。 本人不是人工智能或计算机视觉科班出身,编这个软件存粹靠自己的摸索。再加上又是业余时间在做,所以,识别的准确率和效率都有待提高。主要的问题是第一,没有足够多的数学公式素材进行训练;第二,还没有实现自动学习,还是得依靠开发者进行代码修改。但是,我觉得我的思路是对的,这个软件的性能和准确率的提升空间是很大的。我知道现在有很多商业数学公司识别的软件,比如PhotoMath之类,准确率和效率都很高。但是它是用C写的,源码不是开放的。我一个人单枪匹马,肯定比不上PhotoMath背后的大公司,但我想,如果有大牛愿意在我的这个JAVA库上继续发展,从硬件兼容性和开放性的角度看,这个库还是很有前景的。 我的这些代码的下载地址是 github点com/woshiwpa 它包含3个项目:CoreMathImgProc是纯JAVA数学公式识别库,JMathImgProc是基于桌面的JAVA测试程序,用于调用并测试CoreMathImgProc,SmartMath是调用CoreMathImgProc库的安卓应用。具体如何编译,参见每个项目的readme.MD文件。希望大家能够多多关注这个库,把这个帖子顶起来。
建议大家在电脑上用MFP开发游戏,然后做成APK在手机上玩 强力建议大家试试,不用开发太复杂的游戏,比如开摩托车的游戏之类的就很简单么。
我给大家的建议是,如果要学用MFP开发游戏 不要自己从头开始开发,这样难度比较大,最好拿我的例子游戏进行修改,慢慢熟悉开发流程,然后就可以自己独立开发新游戏了.
可编程科学计算器1.7.3.66发布了 里面包含了一个新的超级小白兔的游戏,请到酷安网下载。
下一版将会引入一个新游戏 超级小白兔的游戏,敬请期待
大家用mfp开发游戏开发的怎么样了啊? 有无进展?感觉是不是有些难度? 我现在正在用mfp开发一个新的小游戏,叫超级兔子。不过我同时还要考一个微软认证,还要上班,还准备跳槽,所以可能会慢一点。 其实,开发游戏,不管用什么工具,难度都和mfp差不多。因为工具不能代替你实现游戏的逻辑,这一块必须靠自己用代码实现。mfp通过跨平台和封装函数的方式尽力减轻开发者的困难,我自己觉得,比如贪吃蛇这样的简单游戏,用mfp,全时五天搞定,削宝石可能要10到15天全时,我觉得这个效率还算比较高了,大家说呢?
金牛dharma,现在你能够用你的1G RAM的手机再试试看销宝石游戏 @金牛dharma ,现在你能够用你的1G RAM的手机再试试看销宝石游戏卡不卡吗
可编程科学计算器1.7.3.65版发布了 可编程科学计算器1.7.3.65版发布了,请大家到酷安网下载,更新如下:* 提高了MFP语言的性能。相比1.7.2,MFP总体的速度提高了一倍,运行游戏速度提高更多。当然,为了确保精度,MFP使用JAVA的BigDecimal类型进行数据计算。而BigDecimal在安卓系统上没有优化,速度比使用double慢1000倍。这造成了MFP语言的运行速度也比其他语言慢。MFP在未来将引入double数据类型,对于对精度要求不高的计算,使用double类型,将大大提高运行效率; * 实现了将MFP示例自动打包为APK的功能; * 修正了一些错误;
有人试过用MFP开发游戏吗? as title
可编程科学计算器1.7.2版用户手册撰写完毕 里面包含了用mfp语言编写游戏的详细指南。请大家到 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1jIA63S6&urlrefer=f749903f4bfe6ec177ee25b6764af60c 下载
大家试过游戏功能吗?运行是否顺畅,有什么建议和意见 可编程科学计算器1.7.2.59已经发布了,里面有编写游戏的功能,还给出了两个游戏的例子,请问大家试过没有,有什么建议和意见?我正在抓紧撰写PDF手册,这个月应该就能发布手册和beta版,大家在现阶段直接改我的例子,照猫画虎,编写小游戏.我想把MFP游戏编程大赛搞起来,特别是,如果有人能够编写一个国际象棋或者中国象棋的游戏,就牛了.
试试看能不能发帖 如果大家能看见我这个贴子,请回复。
官泄 可编程科学计算器开发游戏 还在开发中,难度非常大,但有重大进展,现在代码基本编写完毕,开始测试,还需要两个月时间才能发布,官泄一把开发的一个消宝石的小游戏。以及编写这个小游戏所使用的MFPS脚本 Windows:Android:
关于过滤广告的软件和可编程科学计算器兼容性的问题 有些用户抱怨有时候可编程科学计算器结果出来的非常慢,甚至根本不出来。这种情况只在智慧计算器中出现,命令提示符不受影响。经过测试我发现这可能是过滤广告的软件和可编程科学计算器的智慧计算器组件不兼容造成的。过滤广告的软件工作原理是组织网页浏览器加载网页内容(广告是嵌入网页中的),而智慧计算器组件是把结果显示在网页中,所以结果出不来。如果大家不想看到广告,把网络关掉就好。
关于可编程科学计算器mfps脚本文件存放位子的问题 最近有一些用户抱怨,编写好了脚本文件,可是在命令提示符和智慧计算器中却找不到里面的函数,其原因在于,可编程科学计算器的目录,并不是都可以用于存放程序脚本文件,只有把代码放在scripts目录下了(注意都是小写),才会在软件启动时被加载,如果不在scripts目录下,但是代码文件里正确定义了执行入口,那么在文件管理器中长按可以运行,但是运行完后会被从内存中卸载,在命令提示符和智慧计算器中还是找不到。注意这只是针对安卓版的可编程科学计算器,java版的软件中,装载库的设置由一个叫做settings的json设置文件决定,缺省也是scripts目录。如果没有scripts目录,自己建一个。抱歉,这在手册中说的不是很详细,但其实一直都是这样的。
感谢各位用户的厚爱 我要专心编写软件,所以上论坛比较少,大家要是有问题,可以给我发email,就是软件里面的那个email。
用可编程科学计算器绘制埃及金字塔 Plot_3d_surfaces("pyramid", "Pyramid", "x", "y", "z", _ "",false,"red","red",null,"red","red",null,"u",0,1,1,"v",-1,1,2,"1-u","v*(1-u)","1.67*u", _// east "",false,"magenta","magenta",null,"magenta","magenta",null,"u",0,1,1,"v",-1,1,2,"u-1","v*(1-u)","1.67*u", _// west "",false,"blue","blue",null,"blue","blue",null,"u",0,1,1,"v",-1,1,2,"v*(1-u)","1-u","1.67*u", _// north "",false,"yellow","yellow",null,"yellow","yellow",null,"u",0,1,1,"v",-1,1,2,"v*(1-u)","u-1","1.67*u", _// south "",false,"green","green",null,"green","green",null,"u",-1,1,2,"v",-1,1,2,"u","v","0") // bottom
编写含有中文的代码需要注意的事项 1.任何非ASCI符,也就是中文汉字和其它所有Unicode的符号,都只能出现在字符串或者注释中,不能出现在别的地方; 2.用记事本编写MFP代码,如果代码中有中文或者任何Unicode的字符,在保存代码文件时,编码模式必须是UTF-8,不能是ANSI或者Unicode,否则认不出来; 3.由于代码文件的编码模式不是ANSI,所以操作系统会在代码文本文件的头部添加一个编码模式的标识。如果编码模式的标识和文本的内容之间没有换行符分割,那么软件会误认为编码模式的标识是代码的一部分。这样一来,如果函数定义在文本文件的第一行,软件可能认不出来。所以强烈建议在代码有中文的情况下,从代码的第二行开始写程序。甚至可以不管有没有中文,总是养成从代码文件的第二行开始写程序的习惯。
英文版教程好难写 这感觉像是在用英文写书,比中文版难写多了,主要是有语言壁垒。 可能要写4-5个月。这段时间内,恐怕难有大的功能更新了。
可编程科学计算器1.6.7.54发布了,另外请问大家几个问题 请大家到 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.coolapk.com%2Fapk%2Fcom.cyzapps.AnMath&urlrefer=0982a7215a3479fd300f72e946c45d2b 下载。 这个版本增加了应用内购买的功能,也就是,如果大家的手机装有谷歌商店(注意必须装有谷歌商店),那么可以购买编译无广告的MFP应用,一次购买6个编译无广告的MFP应用许可,总共差不多人民币9元。由于我不在国内,所以有些情况没法测试,在这里请问大家几个问题,希望大家能够帮忙解答: 问题1: 国内的很多手机都删除了谷歌服务,当然也就没有谷歌商店,也就没法购买编译无广告的MFP应用许可。在这种情况下,大家编译出来的MFP应用还是有广告的,我想请问,大家在这种情况下编译MFP应用有没有任何问题?换句话说,我的软件是不是能够做到在没有谷歌服务的时候依然正常编译MFP应用? 问题2: 如果您的手机有谷歌服务和谷歌商店,能不能顺利购买应用。当然,我并不是说让大家购买应用,大家编译MFP应用到最后一步,点击购买更多按钮后,能不能看到购买6个MFP无广告编译许可的提示并让您输入密码?如果能看到,就说明没问题,大家按回退键取消就可以了,如果不能看到,就说明在国内这个功能用不了。 问题3: 大家觉得人民币9元购买6个编译无广告的MFP应用许可贵不贵? 谢谢大家帮我回答。 新的功能如下: * 为用户提供了完整的PDF版的使用手册(简体中文版)、MFP语言程式开发指南(简体中文版)以及示例代码。进入程式开发科学计算器后用户点击帮助图标即可以打开或共享PDF版帮助文档或者阅读示例代码; * 允许用户直接调用底层绘图函数程式plot_2d_curves,plot_polar_curves和plot_3d_surfaces。这三个函数程式可以最多在一张图上绘制出1024条曲线(面); * 对三维绘图进行了微调,现在图像绘制完成后x、y和z的比例就自动设置为1:1:1,而坐标轴将会自动隐藏(用户可以设置它们重新显示)。此外,还在“绘制三维图像”工具中增加了绘制上海东方明珠电视塔的例子。用户点击菜单按钮,选择“填充示例”,即可以运行这个例子。 * 如果用户安装了谷歌商店,则可以在应用内购买(一次6个)创建无广告MFP应用的许可。这样用户自己创建的MFP应用就不再显示任何广告; * 增强了System函数程式的功能,用户现在可以通过System函数程式在安卓上运行一些Shell的基本命令了(但要注意System的调用方法也有一些变化); *很多错误得到了修正;
可编程科学计算器用户手册草稿预览完整版(pdf) 请大家在 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1mgirizA&urlrefer=1e3e0ee3ae9fb4c260e40493473b638a 或者 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1kTF3mNP&urlrefer=4b41750b40d5eed6f561b885e1b5c468 下载。 内容如下: 前言及开发者的话 .................................................................... 1 第1章 可编程科学计算器初级用户使用指南 ...................... 8 第1节 安装与启动 ........................................................................ 8 第2节 智慧计算器的使用 ............................................................. 9 第3节 命令提示符的使用 ........................................................... 20 第4节 绘制图形工具 .................................................................. 22 第5节 计算积分工具 .................................................................. 37 第6节 设置输入键盘 .................................................................. 37 第7节 管理文件和编写程序 ........................................................ 38 第8节 设置工具 ......................................................................... 38 第9节 在电脑上运行可编程科学计算器工具 .............................. 39 第10节 创建MFP应用工具 ......................................................... 44 第11节 帮助工具 ........................................................................ 45 小结 ............................................................................................... 45 第2章 MFP编程语言基础 ................................................. 47 第1节 MFP编程语言概述 ........................................................... 47 第2节 MFP编程语言基本数据类型 ............................................. 49 第3节 MFP编程语言所支持的操作符 ......................................... 51 第4节 function,return和endf语句...................................... 53 第5节 variable语句 ................................................................ 55 第6节 if,elseif,else和endif语句 .................................... 56 第7节 while,loop;do,until和for,next语句 .................. 58 第8节 break和continue语句 .................................................. 61 第9节 select,case,default和ends语句 ............................. 61 第10节 try,throw,catch和endtry语句 .............................. 63 第11节 solve和slvreto语句 .................................................. 67 第12节 help和endh语句以及@language标注 .......................... 73 第13节 @compulsory_link标注 ................................................. 75 第14节 如何部署用户创建的MFP函数程序 ................................ 76 小结 ............................................................................................... 78 第3章 MFP编程语言对数、字符串和数组的操作 .............. 79 第1节 MFP对数的操作函数 ........................................................ 79 1. MFP对整数的操作 ........................................................................... 79 2. MFP进制转换函数 ........................................................................... 81 3. MFP逻辑操作函数 ........................................................................... 86 4. MFP对复数的操作函数 .................................................................... 88 第2节 MFP对字符串的操作函数 ................................................ 89 第3节 MFP对数组和矩阵的操作函数 ......................................... 94 1. MFP创建数组的函数 ....................................................................... 95 2. 获取数组的尺寸和判断数组的特征 ................................................... 96 3. 对数组赋值 ....................................................................................... 98 小结 ............................................................................................. 102 第4章 MFP编程语言对于各种数学和科学计算的支持 ..... 103 第1节 内置的数学常用变量 ...................................................... 103 第2节 单位转换函数和返回物理化学常量值的函数 .................. 103 第3节 三角函数双曲三角函数 .................................................. 106 第4节 指数,对数和次方函数 .................................................. 110 第5节 矩阵相关函数 ................................................................ 113 第6节 表达式和积分函数 ......................................................... 119 第7节 统计、随机和排序函数 .................................................. 124 第8节 信号处理函数 ................................................................ 128 第9节 阶乘求值函数、判断质数函数和多项式求根函数 ........... 130 小结 ............................................................................................. 133 第5章 用MFP编程语言绘制图形 .................................... 134 第1节 绘制表达式的图像 ......................................................... 134 第2节 绘制常规坐标系下的二维图像 ....................................... 141 第3节 绘制极坐标系下的二维图像 ........................................... 151 第4节 绘制三维图像 ................................................................ 156 小结 ............................................................................................. 177 第6章 输入输出和文件操作 ........................................... 178 第1节 在命令提示符中输入输出 .............................................. 178 第2节 对字符串输入输出 ......................................................... 190 第3节 文件内容读写及其相关函数 ........................................... 194 1. 打开和关闭文件 .............................................................................. 196 2. 文本文件的读写 .............................................................................. 198 3. 二进制文件的读写 .......................................................................... 204 第4节 文件属性操作函数 ......................................................... 208 第5节 类似Dos和Unix命令的文件整体操作函数 ................... 218 第6节 进行复杂文件操作示例 .................................................. 226 小结 ............................................................................................. 239 第7章 日期和时间以及系统函数 .................................... 240 第1节 日期和时间的函数 ......................................................... 240 第2节 系统相关函数 ................................................................ 247 小结 ............................................................................................. 249 第8章 构建用户自己的应用 ........................................... 250 后记 ...................................................................................... 255
可编程科学计算器用户手册草稿预览完整版(pdf) 请大家在 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1mgirizA&urlrefer=1e3e0ee3ae9fb4c260e40493473b638a 或者 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1kTF3mNP&urlrefer=4b41750b40d5eed6f561b885e1b5c468 下载。 内容如下: 前言及开发者的话 .................................................................... 1 第1章 可编程科学计算器初级用户使用指南 ...................... 8 第1节 安装与启动 ........................................................................ 8 第2节 智慧计算器的使用 ............................................................. 9 第3节 命令提示符的使用 ........................................................... 20 第4节 绘制图形工具 .................................................................. 22 第5节 计算积分工具 .................................................................. 37 第6节 设置输入键盘 .................................................................. 37 第7节 管理文件和编写程序 ........................................................ 38 第8节 设置工具 ......................................................................... 38 第9节 在电脑上运行可编程科学计算器工具 .............................. 39 第10节 创建MFP应用工具 ......................................................... 44 第11节 帮助工具 ........................................................................ 45 小结 ............................................................................................... 45 第2章 MFP编程语言基础 ................................................. 47 第1节 MFP编程语言概述 ........................................................... 47 第2节 MFP编程语言基本数据类型 ............................................. 49 第3节 MFP编程语言所支持的操作符 ......................................... 51 第4节 function,return和endf语句...................................... 53 第5节 variable语句 ................................................................ 55 第6节 if,elseif,else和endif语句 .................................... 56 第7节 while,loop;do,until和for,next语句 .................. 58 第8节 break和continue语句 .................................................. 61 第9节 select,case,default和ends语句 ............................. 61 第10节 try,throw,catch和endtry语句 .............................. 63 第11节 solve和slvreto语句 .................................................. 67 第12节 help和endh语句以及@language标注 .......................... 73 第13节 @compulsory_link标注 ................................................. 75 第14节 如何部署用户创建的MFP函数程序 ................................ 76 小结 ............................................................................................... 78 第3章 MFP编程语言对数、字符串和数组的操作 .............. 79 第1节 MFP对数的操作函数 ........................................................ 79 1. MFP对整数的操作 ........................................................................... 79 2. MFP进制转换函数 ........................................................................... 81 3. MFP逻辑操作函数 ........................................................................... 86 4. MFP对复数的操作函数 .................................................................... 88 第2节 MFP对字符串的操作函数 ................................................ 89 第3节 MFP对数组和矩阵的操作函数 ......................................... 94 1. MFP创建数组的函数 ....................................................................... 95 2. 获取数组的尺寸和判断数组的特征 ................................................... 96 3. 对数组赋值 ....................................................................................... 98 小结 ............................................................................................. 102 第4章 MFP编程语言对于各种数学和科学计算的支持 ..... 103 第1节 内置的数学常用变量 ...................................................... 103 第2节 单位转换函数和返回物理化学常量值的函数 .................. 103 第3节 三角函数双曲三角函数 .................................................. 106 第4节 指数,对数和次方函数 .................................................. 110 第5节 矩阵相关函数 ................................................................ 113 第6节 表达式和积分函数 ......................................................... 119 第7节 统计、随机和排序函数 .................................................. 124 第8节 信号处理函数 ................................................................ 128 第9节 阶乘求值函数、判断质数函数和多项式求根函数 ........... 130 小结 ............................................................................................. 133 第5章 用MFP编程语言绘制图形 .................................... 134 第1节 绘制表达式的图像 ......................................................... 134 第2节 绘制常规坐标系下的二维图像 ....................................... 141 第3节 绘制极坐标系下的二维图像 ........................................... 151 第4节 绘制三维图像 ................................................................ 156 小结 ............................................................................................. 177 第6章 输入输出和文件操作 ........................................... 178 第1节 在命令提示符中输入输出 .............................................. 178 第2节 对字符串输入输出 ......................................................... 190 第3节 文件内容读写及其相关函数 ........................................... 194 1. 打开和关闭文件 .............................................................................. 196 2. 文本文件的读写 .............................................................................. 198 3. 二进制文件的读写 .......................................................................... 204 第4节 文件属性操作函数 ......................................................... 208 第5节 类似Dos和Unix命令的文件整体操作函数 ................... 218 第6节 进行复杂文件操作示例 .................................................. 226 小结 ............................................................................................. 239 第7章 日期和时间以及系统函数 .................................... 240 第1节 日期和时间的函数 ......................................................... 240 第2节 系统相关函数 ................................................................ 247 小结 ............................................................................................. 249 第8章 构建用户自己的应用 ........................................... 250 后记 ...................................................................................... 255
可编程科学计算器用户手册(草稿预览不完全版)1-5章 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1jGs3FQA&urlrefer=468ab7eb0b248786aa0a3f718d352cb8 前言及开发者的话... 1 第1章 可编程科学计算器初级用户使用指南... 8 第2章 MFP编程语言基础... 41 第3章 MFP编程语言对数、字符串和数组的操作... 72 第4章 MFP编程语言对于各种数学和科学计算的支持... 96 第5章 用MFP编程语言绘制图形... 127 第一章(比上一次的第一章添加了更多内容)中介绍了东方明珠通过手机上的绘制图形工具的详细绘制方法,第五章介绍了鸟巢和东方明珠调用plot3d函数的绘制方法
用mfp语言的plot3d函数绘制上海地标东方明珠电视塔 代码如下: plot3d("东方明珠","东方明珠","x","y","z", _ "",false,"red",null,"cyan",null,-pi,pi,pi/10,-pi/2,pi/2,pi/10,"10*cos(u)*cos(v)","10*sin(u)*cos(v)","10*sin(v)", _ //绘制大球 "",false,"green",null,"blue",null,0,8,0.25,0,50,50,"iff(u<=2,1.5*cos(u*pi)-2,and(u>=3,u<=5), 1.5*cos(u*pi), u>=6, 1.5*cos(u*pi)+2, Nan)","iff(u<=2,1.5*sin(u*pi)+2/sqrt(3),and(u>=3,u<=5), 1.5*sin(u*pi)-2, u>=6, 1.5*sin(u*pi)+2/sqrt(3), Nan)","v", _ //绘制大球和小球之间的三根连接柱 "",false,"magenta",null,"white",null,-pi,pi,pi/10,-pi/2,pi/2,pi/10,"6*cos(u)*cos(v)","6*sin(u)*cos(v)","6*sin(v)+50", _ //绘制小球 "",false,"ltgray",null,"yellow",null,0,8,0.25,-20,0,20,"iff(u<=2,4*cos(u*pi)-v*sqrt(3)/2,and(u>=3,u<=5), 4*cos(u*pi), u>=6, 4*cos(u*pi)+v*sqrt(3)/2, Nan)","iff(u<=2,4*sin(u*pi)+v/2,and(u>=3,u<=5), 4*sin(u*pi)-v*sqrt(3)/2, u>=6, 4*sin(u*pi)+v/2, Nan)","v", _ //绘制底部三根支撑斜柱体 "",false,"red",null,"ltgray",null,-1,1,0.2,50,90,10,"1.5*max(0.2,(80-v)/30)*cos(u*pi)","1.5*max(0.2,(80-v)/30)*sin(u*pi)","v", _ //绘制顶部天线 "",false,"green",null,"green",null,-pi,pi,pi/10,0,25,5,"cos(u)*v","sin(u)*v","-20") //绘制绿地
用mfp绘制北京地标鸟巢,不知道用c语言画不画得出来。 代码如下,如果手机性能不好,运行起来可能要花点时间,大概30秒吧。 function plot_Beijing_Birdnet() // 绘制北京地标鸟巢 plot3d("birdnet", "Bird Net", "x", "y", "z", _ //设定图像的名字 "", false, "red", null, "green", null, -pi, pi, 0, 20, 25, 0, "(14 + (v - 20) * (1 + 0.3 * cos(2*u))/5) * cos(u)", "(14 + (v - 20) * (1 + 0.3 * cos(2*u))/5) * sin(u)", "(v - 20) * (1 + 0.3 * cos(2*u))", _ // 绘制鸟巢的四周围墙 "", false, "green", null, "blue", null, -pi, pi, 0, 7.5, 15, 0, "v*(1 + 0.02 * cos(2*u)*v/15)*cos(u)", "v*(1 + 0.02 * cos(2*u)*v/15)*sin(u)", "5*(1 + 0.3 * cos(2*u)*v/15)", _ // 绘制鸟巢的顶部 "", false, "yellow", null, "yellow", null, -pi, pi, 0, 0, 14, 0, "v*cos(u)", "v*sin(u)", "0") // 绘制鸟巢的底部 endf
MFP绘制3维立方体的命令,不比C语言差 plot_3d_surfaces("3DBox","3D box","x","y","z","surface 1",false,"red","red",null,"red","red",null,"u",-5,5,1,"v",-5,5,1,"u","v","5","surface 2",false,"green","green",null,"green","green",null,"u",-5,5,1,"v",-5,5,1,"u","5","v","surface 3",false,"yellow","yellow",null,"yellow","yellow",null,"u",-5,5,1,"v",-5,5,1,"5","u","v","surface 4",false,"blue","blue",null,"blue","blue",null,"u",-5,5,1,"v",-5,5,1,"u","v","-5","surface 5",false,"magenta","magenta",null,"magenta","magenta",null,"u",-5,5,1,"v",-5,5,1,"u","-5","v","surface 6",false,"cyan","cyan",null,"cyan","cyan",null,"u",-5,5,1,"v",-5,5,1,"-5","u","v")
可编程科学计算器用户手册(草稿预览不完全版) 作为可编程科学计算器的开发者,我完全了解广大用户使用这个软件的困难之所在 。我正在撰写详细的,估计将近300页的用户手册。与此同时,我把第一章和第二章发布出来,这两章对于不会编程的用户来说,应该会有帮助。 下载地址 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1kTBxQoZ&urlrefer=8d6973a25ffa74f4de10162227e3d335 也请大家帮我推广。至少可以帮我把这个手册的草稿预览版介绍给其他潜在的用户,非常感谢!
可编程科学计算器用户手册(草稿预览不完全版) 我是可编程科学计算器的开发者,我完全了解广大用户使用这个软件的困难之所在 。我正在撰写详细的,估计将近300页的用户手册。与此同时,我把第一章和第二章发布出来,这两章对于不会编程的用户来说,应该会有帮助。 下载地址 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fs%2F1kTBxQoZ&urlrefer=8d6973a25ffa74f4de10162227e3d335 也请大家帮我推广。
可编程科学计算器1.6.5.47版发布了 请大家到百度手机下载: http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fshouji.baidu.com%2Fsoft%2Fitem%3Fdocid%3D7735960%26from%3Das%26f%3Dsearch_app_%25E8%25AE%25A1%25E7%25AE%2597%25E5%2599%25A8%2540list_1_title%25403%2540header_software_input&urlrefer=f675bd2c64ef77f1f639b71820ad858c 1. 支持绘制2维或3维隐函数图形。注意只有当隐函数可解,才能够绘制图形。4次或者4次以上的多项式由于根表达式过于复杂,虽然可解,但无法绘图。。如果绘制包含两个变量的隐函数,最多4个根表达式将会被绘制出。如果是3个变量的隐函数,根据情况计算器可能会对每个变量求根,然后为每个变量绘制出最多2个解表达式。这样一来,一个单一的3变量的隐函数,可能意味着绘制出6条图形,整个求解绘图过程将会花费比较长的时间。还要注意,隐函数必须是等式,而不能是赋值式,比如x**2+y**2=4-z**2是非法的,而x**2+y**2==4-z**2则是正确的; 2. 函数size,zeros和ones的返回值和参数定义有所改变。现在,如果是计算一个数值,而不是矩阵的尺寸,size函数返回[]而不是[0]。同理,如果参数是[],zeros返回0而ones返回1; 3. 一定程度的性能提升; 4. 很多错误得到了修正;
1
下一页