VC++开发演算稿式计算语言-可编程绘图的计算器

刚工作时自学VC++,开发了一个演算稿式计算语言,用于日常的设计计算说明书的编写及算法程序的收集整理。

当时不知道matlab,不然就不会费这么大的劲了。

源代码见:https://download.csdn.net/download/lijil168/10915472

其主要代码为windows界面程序及计算语言解释程序。

主程序见:https://download.csdn.net/download/lijil168/10915678

 

计算整车动力性示例:

做功率平衡图示例:

软件使用说明如下:

  • compute简介

本语言属于解释性计算机语言。用本语言编程不需要定义数据类型,所有的变量和数组都是双精度数据类型。但是数组要先定义大小,再使用。数组最大为两维,对应于matlab的矩阵。本语言做好了与matlab语言(以!为标志) 和Proe(以$为标志)的接口,用本语言编程不需要另做接口便可以直接调用matlab的命令,并可以直接编程控制Proe模型的参数,从而达到控制Proe模型的目的。本语言还提供了友好的Windows编程界面,编程和输出、打印数据和图样都很方便。

(一)运算符:

+   加

-    减

*    乘

/     除

^    乘方

#    开方

%  求余数

sqrt   求平方根

fabs  求绝对值

floor 取整

exp       求以自然数为底的指数运算

lg   求以10为底的对数运算

ln   求以自然数为底的对数运算

sin  cos  tan  atan  asin  acos 三角及反三角运算

cosh  sinh  tanh

 

!=  不等于

== 等于

>  大于

<   小于

>=  大于等于

<=  小于等于

 

&& 逻辑与

||    逻辑或

 

(二)变量:

所有不含有运算符、小括号和中括号的字符串均可以做变量名,所有的变量都是双精度数据类型,如果想用按钮“显示结果”显示变量的值,在变量名前加?

例如:要把2赋给变量y,可这样写

y=2

如果想用按钮“显示结果”显示y的值,可这样写

?y=2

 

(三)数组:

所有不含有运算符、小括号和中括号的字符串均可以做数组名,所有的数组都是双精度数据类型,数组最大为2维,对应于matlab的矩阵,数组先定义大小,再使用,且不能重复定义。

例如:

a[3][2]=[1,2\21\,32]

定义二维数组,数组名为a,对应于matlab中的矩阵a 3行2列,每行以\分隔,未赋值的数组的值为0

a[3]=[]

定义二维数组,数组名为a,对应于matlab中的矩阵a 3行1列,相当于a[3][1]=[]

a[0]=1 相当于a[0][0]=1

?b=a[0] 相当于?b=a[0][0]

 

(四)求一元函数极小值的函数(用最小二乘法求):

Fmin(一元函数表达式,自变量的范围,精度)

自变量的范围的格式为:起始值<=自变量<=终点值

精度默认为0.0001

注意两求极值函数不能在一起运算

例如:要求函数f(x)=x^2在-1<=x<=1范围内的极小值,再把极小值赋给变量y,可这样写

y=Fmin(x^2, -1<=x<=1,0.0001)

如果想用按钮“显示结果”显示y的值,可这样写

?y=Fmin(x^2, -1<=x<=1,0.0001)

如果想用按钮“显示结果”显示y和x的值,可这样写

?y=Fmin(x^2, -1<=?x<=1,0.0001)

 

(五)自定义函数:

用本语言编程,用户可以先自定义函数,以后使用。后定义的函数体可以包含前面定义的函数。如果后定义的函数与前面定义的函数同名,则后面定义的函数覆盖前面定义的函数。但是应防止循环调用

 

例如:要求函数f(x)=x^2在x=0时的值并赋给变量y1, 在x=10时的值并赋给变量y2,可这样写

f(x)=x^2

y1=f(0) y2=f(10)

但不能 y1=f(f(0))即不能循环调用!

如果函数w(x,y)是函数f(x)的两倍再加上y,可这样写

w(x,y)=2*f(x)+y

如果要求函数w(x,y)在x=0,y=1时的值并赋给变量y1, 在x=1,y=10时的值并赋给变量y2,可这样写

y1=w(0,1) y2=w(1,10)

 

(六)“Output1”按钮会调用的绘图函数:

1map(v1,v2,v3,v4)本函数用来设置画图比例

v1

绘图区左上角的横坐标

v2

绘图区左上角的纵坐标

v3

绘图区右下角的横坐标

v4

为绘图区右下角的纵坐标

自变量的个数只能等于4个。但自变量可以为空表示采用当前的默认值。

初始A4纸的左上角坐标为(-0.1,1.2, 右下角坐标为(1.052,-0.32

初始绘图区的左上角坐标为(0,1, 右下角坐标为(1,0map(v1,v2,v3,v4)目的就是使绘图区左上角的坐标变为(v1,v2),右下角的坐标变为(v3,v4),从而确实绘图的比例。

 

2、pen(v1,v2,R,G,B)本函数用来选择画图的线条类型

v1

线条类型01长虚2短虚3点划4双点划5

v2

线条宽度1~2

R

红色值0~255

G

绿色值0~255

B

蓝色值0~255

使用本函数时,自变量的个数可以少于或等于5个。如:pen(1,)表示线条的类型改为1,第二个自变量为空表示线条宽度不变仍为当前的默认值,第三到五个自变量没有表示线条颜色不变,仍为当前的默认值。

 

3font(,,,,...)本函数用来选择画图字体类型,自变量的个数可以少于或等于14个,同VC++的字体构造函数。

 

4move(v1,v2) move-(w1,w2)自变量的个数只能等于2个。

v1

当前绘图点沿横坐标方向平移的量

v2

当前绘图点沿纵坐标方向平移的量

move(v1,v2)表示把当前绘图点相对平移(v1,v2)个单位

w1

把当前绘图点平移至点的横坐标。

w2

把当前绘图点平移至点的纵坐标。

move-(w1,w2)表示把当前绘图点平移至(w1,w2)点

 

5line(v1,v2) line-(w1,w2)自变量的个数只能等于2个。

v1

绘线始点的横坐标

v2

绘线始点的纵坐标

 

w1

绘线终点的横坐标

w2

绘线终点的纵坐标

 

可以连续画线。如:line(0,1)-(0.5,0.3)-(1,1)

 

6rect(v1,v2,v3,v4)本函数用来画矩形,

 

v1

矩形左上角的横坐标

v2

矩形左上角的纵坐标

v3

矩形右下角的横坐标

v4

矩形右下角的纵坐标

 

使用本函数时,自变量的个数只能等于4个。但自变量可以为空表示采用当前的默认值。

 

7ellipse(v1,v2,v3,v4,)本函数用来画椭圆形,

v1

椭圆外切矩形左上角的横坐标

v2

椭圆外切矩形左上角的纵坐标

v3

椭圆外切矩形右下角的横坐标

v4

椭圆外切矩形右下角的纵坐标

使用本函数时,自变量的个数只能等于4个。但自变量可以为空表示采用当前的默认值。

 

8draw(v1,v2,v3)本函数用来画函数图形,

v1

一元函数的函数名

v2

自变量的起始坐标

v3

函数自变量的终止坐标

使用本函数时,自变量的个数只能等于3个。且自变量不可以为空。

 

9print(,,,,...)本函数用来输出显示变量的值或字符串,自变量的个数不定,与VC++的格式化打印函数sprint(..)函数相似。如: y=2.555 print("x=%4.2f;qq=%s",x,yes) 结果为 x=2.56;qq=yes

print(x)结果为 x=2.56;

但是应注意:在点击“显示结果”按钮时,print(到回车符都会被过滤掉,故在print()函数后不要给变量赋值。print()函数完成后绘图点自动回车换行所以下一个print()显示的结果会与前一个对齐。

!!注意:绘图函数不要放到第一行头,否则会被过滤掉。

 

(七)命令:任何程序都是由一条条的命令组成,用本语言编程使用的命令如下:

  1. 赋值命令

如:x=2+4 为把2+4的结果6赋给变量x

f(x)=x^2; y=f(3) 为把f(x)当自变量为3时的函数值赋给y

a[2]=1 为把1赋给数组a[2]

  1. 数组定义命令

如:a[3][2]=[1,2\21\,32]

定义二维数组,数组名为a,对应于matlab中的矩阵a 3行2列,每行以\分隔,未赋值的数组的值为0

a[3]=[]

定义二维数组,数组名为a,对应于matlab中的矩阵a 3行1列,相当于a[3][1]=[]

 

  1. 函数自定义命令

如:f(x)=x^2

       定义一个函数,函数名为f,自变量为x,函数体为x^2

 

  1. 条件转移命令

if(表达式)    

{运算体1 } 

else

{运算体2 }

当表达式成立时则运算运算体1,否则转到运算体2

  1. 条件循环命令

while(表达式)

{循环体}

当表达式成立时则循环运算循环体

  1. 绘图命令

由“Output1”按钮会调用的9个绘图函数组成。

 

☆☆注意:

1.本语言是这样对源程序进行逐条解释的:从头至尾扫描,空格、换行符'\n'、或者起始位置与第一个'='(前有'>''<''!'或前后有'='不算)间的字符为待求值的变量名,空格、回车符'\r'、或者末尾位置与上一个'='(前有'>''<''!' 或前后有'='不算)间的字符为待求值的算术表达式。待求值的变量名与待求值的算术表达式应一一对应。如: a=2+5=7 相当于 a=7

2.     在要显示的变量的前面加上?号。

3.     变量名最多长20字节,表达式最多长200字节。程序最大字符9300,最大变量数500,用?显示的最        大变量数100,最大函数数50,函数最大自变量数50

4.     该运算为顺序运算,分支和循环运算。

5.运算结果均为双精度型。

if()     后面若有非‘ ’‘{’回车符且非注示的字符则出错!

{ }      后面若有非‘ ’回车符且非注示的字符则表示后面没有else

else     后面若有非‘ ’‘{’回车符且非注示的字符则出错!

{}

while()  后面若有非‘ ’‘{’回车符且非注示的字符则出错!

{}

分隔符号:空、;、}、{、

 

************以下为“Output1”按钮会调用的绘图函数********

 

*********与matlab有关的关键字***************

a[3][2]=[1,2\21\,32]

定义二维数组,数组名为a,对应于matlab中的矩阵a 3行2列,每行以\分隔,未赋值的数组的值为0

a[3]=[]

定义二维数组,数组名为a,对应于matlab中的矩阵a 3行1列,相当于a[3][1]=[]

a[0]=1 相当于a[0][0]=1

?b=a[0] 相当于?b=a[0][0]

!=clear 把!=后面的clear传给matlab engine进行运算

!a=a+1  把!后面的a=a+1传给matlab engine进行运算,运算完成后a矩阵的值再赋给数组a

!!注意在调用matlab engine运算前会把已定义的数组传给matlab矩阵,矩阵名与数组名相同!!!!

a=!a 把矩阵a的值赋给数组a,注意行列应对应。

*********与Proe有关的关键字***************

a[0]=$a0x 把Proe模型中的参数a0x赋给数组a[0]并建立参数a0x到数组a[0]的映射。故a[0]的变化就是a0x的变化。!!注意一个参数的映射只能建立一次。故不能一个参数映射多个变量或数组。!!

$a0x=1 相当于a0x=$a0x a0x=1 定义变量a0x与参数a0x映射,并改变其值为1。

$=0    把已建立映射的参数的值赋给模型,并再生模型。

$=1    用于调试程序,暂停程序的运行,以对话框的形式显示带?的变量,并可以在matlab windows中检查各个矩阵的值。

 

 

如果要在proe中调用matlab的命令,需要安装matalab6.5和proe worldfire

例如:

在matlab的work目录下考入[工程计算文]目录下的rssr,rrss文件(解决rssr和rrss空间四杆机构运动坐标的函数)。

运行proeworldfire

打开转向模型:proe模型目录下的asm0001.asm.3

打开proe菜单:工具下的辅助运用程序,用ch7_protk文件完成辅助运用程序(CH7\Example7\Release\Example7.dll)的注册。在proe菜单上会新增加一个菜单,点击此菜单,再点击再生按钮,在出现的对话框中拷贝入 [工程计算文]目录下的四杆机构分析.lijil文件中的最后一条记录:temp2-proe2-转向四杆。(可以先执行compute\Debug\Compute.exe再打开[工程计算文]目录下的四杆机构分析.lijil。再选到最后一条记录)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VC6界面类编程小实例\A Drag and Drop List Control.doc ...................\MFC窗口位置管理详细分析及实例.doc ...................\Toolbar制作菜单条过程详解.doc ...................\VC++6.0定制窗口的方法.doc ...................\VC++中MFC窗口对象的清除.doc ...................\VC++任务栏提示区图标的实现.doc ...................\VC++动态加入和删除菜单的方法.doc ...................\VC++环境下浮动工具条的编程.doc ...................\VC++环境下菜单和工具栏的动态修改技术.doc ...................\VC中如何捕获和释放鼠标.doc ...................\VC控件 TreeCtrl 与 ListCtrl 演示.doc ...................\VC界面编程总结.doc ...................\VC编程中如何在界面上实现3D文字.doc ...................\VC编程实现IE风格的界面.doc ...................\VC编程实现IE风格的界面之叙述.doc ...................\VC设计分割视图通用创建框架.doc ...................\VC通用控件编程之CImageList控件.doc ...................\Visual C++中位图按钮的新颖设计.doc ...................\Visual C++中实现对图像数据的读取显示.doc ...................\Visual C++中的图形特技.doc ...................\Visual C++模态对话框消息处理机制的分析.doc ...................\Visual C++窗体设计技巧集.doc ...................\Visual C++窗口标题改变的几种方法.doc ...................\Windows 界面设计:拉帘按钮设计.doc ...................\XListBox-自画条目背景和文字颜色的listbox控件.doc ...................\XP风格控件界面库.doc ...................\一个功能强大的MFC界面处理扩展库:CJ60Lib.doc ...................\一个屏幕捕捉的例子.doc ...................\一段使窗口透明的代码(仅适用于2000).doc ...................\一种漂亮的自绘菜单.doc ...................\为CListBox加上智能水平滚动条.doc ...................\为列表控件添加水平滚动条.doc ...................\为对话框程序添加工具条和状态栏.doc ...................\从资源中加载皮肤, 使用免费界面库 AppFace For VC 0.2 美化您的软件.doc ...................\位图文件读写综述.doc ...................\使用CRectTracker类进行对象动态定位.doc ...................\使用CTabCtrl控件实现属性页功能.doc ...................\使用测试优先方法开发用户界面.doc ...................\关于内存DC绘图防止屏幕闪烁说明.doc ...................\创建有个性的对话框之MFC篇.doc ...................\利用VC编程在界面上实现3D文字.doc ...................\利用钩子实现菜单阴影效果.doc ...................\制作 MSN、QQ 的消息提示窗口.doc ...................\单文档与多视的实现方法.doc ...................\图像平滑滚动效果的VC实现.doc ...................\在(CListView)列表视图中添加右键菜单.doc ...................\在ATL Browser Helper对象中使用WTL TreeView.doc ...................\在SDI MDI程序的工具条上加入漂亮的标题头.doc ...................\在VC++6.0开发中实现全屏显示.doc ...................\在VC下显示JPEG、GIF格图像的一种简便方法.doc ...................\在VC中用CMenuXP使应用程序拥有Office XP风格的界面.doc ...................\在VC中透明浮动按键的实现.doc ...................\在Windows95,98中实现苹果窗口界面.doc ...................\在单文档中添加系统菜单项.doc ...................\在单文档程序中动态切换多个窗体.doc ...................\在对话框上加超链接.doc ...................\在类VC的界面实现中加入目录树.doc ...................\在视图中同步显示鼠标的位置.doc ...................\如何创建一个不规则形状的窗口.doc ...................\如何创建无模对话框.doc ...................\如何创建有模对话框.doc ...................\如何制作弹出菜单.doc ...................\如何在VC中改变控件的背景色.doc ...................\如何在状态条中加入图像.doc ...................\如何模拟《WORD》的窗口形.doc ...................\如何编写类似于Word97的工具栏.doc ...................\如何隐藏显示在任务栏中的对话框程序.doc ...................\实现带阴影弹出的窗口.doc ...................\实现真正的Windows屏幕保护程序.doc ...................\对CXPStyleButtonST的改造.doc ...................\对话框隐藏的几种方法.doc ...................\带有菜单的EDIT控件实现.doc ...................\平面、带图片的按钮.doc ...................\扩展COleDropTarget类来支持任意窗口拖放.doc ...................\拖拉机客户端任务书.doc ...................\数据库开发之窗体编程.doc ...................\文档与视图的建立和关联.doc ...................\无闪烁刷屏技术的实现.doc ...................\显示作为窗口或对话框背景的位图.doc ...................\最简单的界面增强库EasySkin.doc ...................\树视控件在多文档中的使用.doc ...................\根据文本串的长度改变窗口的大小.doc ...................\用MFC对话框做无闪烁图片重绘.doc ...................\用SDK实现分隔条.doc ...................\用VC++制作有滚动字幕效果的软件封面.doc ...................\用VC设计托盘图标程序.doc ...................\用Visual C++实现带阴影弹出窗口的技术.doc ...................\用户界面设计的技巧与技术.doc ...................\百叶窗面板组.doc ...................\窗口类的诞生.doc ...................\类似Vc和Outlook的界面.doc ...................\编程打开特殊的系统窗口.doc ...................\自绘菜单的实现.doc ...................\自绘边框窗口.doc ...................\让对话框显示背景图.doc ...................\谈VC++中的Progress控件的使用.doc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值