




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、课程设计内容及要求:1对连杆机构运动工作原理及运动参数有一定理解2掌握MATLAB基本命令3了解MATLAB编程的基本知识,并能编写简单M文件4了解MATLAB图形界面设计的基本知识5课程设计说明书:应阐述整个课程设计内容,要突出重点和特色,图文并茂,文字通畅。应有目录、摘要及关键词、正文、参考文献等内容,字数一般不少于6000字。二、主要参考资料有关复杂刀具参数计算及结构设计、机械制造工艺与设备的手册与图册。三、课程设计进度安排阶段阶 段 内 容起止时间1布置任务,准备资料1天(12月12日)2方案设计1天(12月13日)3设计计算4天(12月1417日)4程序流程图设计8天(12月18
2、25日)5M文件编写2天(12月2627日)6编写设计说明书3天(12月2830日)7准备答辩和正式答辩1天(12月31日)指导教师(签名): 时间: 教研室主任(签名): 时间: 院 长(签名): 时间: 目 录1 平面连杆机构的运动分析.11.1 机构运动分析的任务、目的和方法.11.2 机构的工作原理.11.3 机构的数学模型的建立.11.3.1建立机构的闭环矢量位置方程.11.3.2求解方法.22 基于MATLAB程序设计.42.1 程序流程图.42.2 M文件编写.62.3 程序运行结果输出.73 基于MATLAB图形界面设计.113.1界面设计.113.2代码设计.124 小结.1
3、7参考文献 .181 平面连杆机构的运动分析1.1 机构运动分析的任务、目的和方法曲柄摇杆机构是平面连杆机构中最基本的由转动副组成的四杆机构,它可以用来实现转动和摆动之间运动形式的转换或传递动力。对四杆机构进行运动分析的意义是:在机构尺寸参数已知的情况下,假定主动件(曲柄)做匀速转动,撇开力的作用,仅从运动几何关系上分析从动件(连杆、摇杆)的角位移、角速度、角加速度等运动参数的变化情况。还可以根据机构闭环矢量方程计算从动件的位移偏差。上述这些内容,无论是设计新的机械,还是为了了解现有机械的运动性能,都是十分必要的,而且它还是研究机械运动性能和动力性能提供必要的依据。机构运动分析的方法很多,主要
4、有图解法和解析法。当需要简捷直观地了解机构的某个或某几个位置的运动特性时,采用图解法比较方便,而且精度也能满足实际问题的要求。而当需要精确地知道或要了解机构在整个运动循环过程中的运动特性时,采用解析法并借助计算机,不仅可获得很高的计算精度及一系列位置的分析结果,并能绘制机构相应的运动线图,同时还可以把机构分析和机构综合问题联系起来,以便于机构的优化设计。1.2 机构的工作原理 在平面四杆机构中,其具有曲柄的条件为:a.各杆的长度应满足杆长条件,即:最短杆长度+最长杆长度其余两杆长度之和。 b.组成该周转副的两杆中必有一杆为最短杆,且其最短杆为连架杆或机架(当最短杆为连架杆时,四杆机构为曲柄摇杆
5、机构;当最短杆为机架时,则为双曲柄机构)。在如下图1所示的曲柄摇杆机构中,构件AB为曲柄,则B点应能通过曲柄与连杆两次共线的位置。1.3 机构的数学模型的建立1.3.1建立机构的闭环矢量位置方程在用矢量法建立机构的位置方程时,需将构件用矢量来表示,并作出机构的封闭矢量多边形。如图1所示,先建立一直角坐标系。设各构件的长度分别为、,其方位角为、。以各杆矢量组成一个封闭矢 量多边形,即ABCDA。其个矢量 图1 四杆机构简图之和必等于零。即: 式1式1 为图1所示四杆机构的封闭矢量位置方程式。对于一个特定的四杆机构,其各构件的长度和原动件2的运动规律,即为已知,而=0,故由此矢量方程可求得未知方位
6、角、。角位移方程的分量形式为: 式2闭环矢量方程分量形式对时间求一阶导数(角速度方程)为: 式3其矩阵形式为: 式4联立式3两公式可求得: 式5 式6闭环矢量方程分量形式对时间求二阶导数(角加速度方程)矩阵形式为: 式7由式7可求得加速度: 式8 式9注:式1式9中,(i=1,2,3,4)分别表示机架1、曲柄2、连杆3、摇杆4的长度;(i=1,2,3,4)是各杆与x轴的正向夹角,逆时针为正,顺时针为负,单位为; 是各杆的角速度,单位为; 为各杆的角加速度,单位为。1.3.2求解方法(1)求导中应用了下列公式: 式10(2)在角位移方程分量形式(式2)中,由于假定机架为参考系,矢量1与x轴重合,
7、=0,则有非线性超越方程组: 式11可以借助牛顿-辛普森数值解法或Matlab自带的fsolve函数求出连杆3的角位移和摇杆4的角位移。(3)求解具有n个未知量(i=1,2,n)的线性方程组: 式12式中,系列矩阵是一个阶方阵: 式13的逆矩阵为;常数项b是一个n维矢量: 式14因此,线性方程组解的矢量为: 式15式11是求解连杆3和摇杆4角速度和角加速度的依据。2 基于MATLAB程序设计MATLAB 是Mathworks 公司推出的交互式计算分析软件,具有强大的运算分析功能,具有集科学计算、程序设计和可视化于一体的高度集成化软件环境,是目前国际上公认的最优秀的计算分析软件之一,被广泛应用于
8、自动控制、信号处理、机械设计、流体力学和数理统计等工程领域。通过运算分析,MATLAB 可以从众多的设计方案中寻找最佳途径,获取最优结果,大大提高了设计水平和质量。四连杆机构的解析法同样可以用MATLAB 的计算工具来求值,并结合MATLAB 的可视化手段,把各点的计算值拟合成曲线,得到四连杆机构的运动仿真轨迹。2.1 程序流程图2.2 M文件编写首先创建函数FoutBarPosition,函数fsolve通过他确定。function t=fourbarposition(th,th2,L2,L3,L4,L1)t=L2*cos(th2)+L3*cos(th(1)-L4*cos(th(2)-L1;
9、L2*sin(th2)+L3*sin(th(1)-L4*sin(th(2);主程序如下:disp * * * * * * 平面四杆机构的运动分析 * * * * * *L1=304.8;L2=101.6;L3=254.0;L4=177.8; %给定已知量,各杆长L1,L2,L3,L4th2=0:1/6:2*pi; %曲柄输入角度从0至360度,步长为pi/6th34=zeros(length(th2),2); %建立一个N行2列的零矩阵,第一列存放options=optimset(display,off); %_3,第二列存放_3for m=1:length(th2) %建立for循环,求解_
10、3,_4th34(m,:)=fsolve(fourbarposition,1 1, %调用fsove函数求解关于_3,_4options,th2(m),L2,L3,L4,L1); %的非线性超越方程,结果保存在th34中endy=L2*sin(th2)+L3*sin(th34(:,1); %连杆3的D端点Y坐标值x=L2*cos(th2)+L3*cos(th34(:,1); %连杆3的D端点X坐标值xx=L2*cos(th2); %连杆3的C端点X坐标值 yy=L2*sin(th2); %连杆3的C端点Y坐标值figure(1)plot(x;xx,y;yy,k,0 L1,0 0, %绘制连杆3
11、的几个位置点k-,x,y,ko,xx,yy,ks)title(连杆3的几个位置点)xlabel(水平方向)ylabel(垂直方向)axis equal %XY坐标均衡th2=0:2/72:2*pi; %重新细分曲柄输入角度_2,步长为5度th34=zeros(length(th2),2);options=optimset(display,off);for m=1:length(th2)th34(m,:)=fsolve(fourbarposition,1 1,options,th2(m),L2,L3,L4,L1);endfigure(2)plot(th2*180/pi,th34(:,1),th2
12、*180/pi,th34(:,2) %绘制连杆3的角位移关于曲柄2的角位移图plot(th2*180/pi,th34(:,1)*180/pi,th2*180/pi,th34(:,2)*180/pi) %绘制摇杆4的角位移关于曲柄2的角位移图axis(0 360 0 170) %确定XY边界值grid %图形加网格xlabel(主动件转角theta_2(度)ylabel(从动件角位移(度)title(角位移线图)text(120,120,摇杆4角位移)text(150,40,连杆3角位移)w2=250; %设定曲柄角速度for i=1:length(th2)A=-L3*sin(th34(i,1)
13、 L4*sin(th34(i,2); L3*cos(th34(i,1) -L4*cos(th34(i,2);B=w2*L2*sin(th2(i); -w2*L2*cos(th2(i);w=inv(A)*B;w3(i)=w(1);w4(i)=w(2);endfigure(3)plot(th2*180/pi,w3,th2*180/pi,w4); %绘制角速度线图axis(0 360 -175 200) text(50,160,摇杆4角速度(omega_4)text(220,130,连杆3角速度(omega_3)gridxlabel(主动件转角theta_2(度)ylabel(从动件角速度(radc
14、dot s-1)title(角速度线图)for i=1:length(th2)C=-L3*sin(th34(i,1) L4*sin(th34(i,2);L3*cos(th34(i,1) -L4*cos(th34(i,2);D=w22*L2*cos(th2(i)+w3(i)2*L3*cos(th34(i,1)-w4(i)2*L4*cos(th34(i,2);. w22*L2*sin(th2(i)+w3(i)2*L3*sin(th34(i,1)-w4(i)2*L4*sin(th34(i,2);a=inv(C)*D;a3(i)=a(1);a4(i)=a(2);endfigure(4)plot(th2
15、*180/pi,a3,th2*180/pi,a4); %绘制角加速度线图axis(0 360 -70000 65000)text(50,50000,摇杆4角加速度(alpha_4)text(220,12000,连杆3角加速度(alpha_3)gridxlabel(从动件角加速度)ylabel(从动件角加速度(radcdot s-2)title(角加速度线图)disp 曲柄转角 连杆转角-摇杆转角-连杆角速度-摇杆角速度-连杆加速度-摇杆加速度 %输出:四杆机构一个运动周期内角位移,角速度,角加速度数据ydcs=th2*180/pi,th34(:,1)*180/pi,th34(:,2)*180/
16、pi,w3,w4,a3,a4;disp(ydcs)2.3 程序运行结果输出 * * * * * * 平面四杆机构的运动分析 * * * * * *曲柄转角 连杆转角-摇杆转角-连杆角速度-摇杆角速度-连杆加速度-摇杆加速度 1.0e+004 * 0 0.0044 0.0097 -0.0125 -0.0125 -0.5478 4.8458 0.0005 0.0042 0.0094 -0.0126 -0.0107 0.2300 5.5630 0.0010 0.0039 0.0092 -0.0124 -0.0086 0.8946 6.0520 0.0015 0.0037 0.0091 -0.0119
17、 -0.0065 1.4143 6.2982 0.0020 0.0034 0.0090 -0.0114 -0.0043 1.7801 6.3174 0.0025 0.0032 0.0089 -0.0107 -0.0021 2.0027 6.1467 0.0030 0.0030 0.0089 -0.0100 0.0000 2.1046 5.8339 0.0035 0.0028 0.0089 -0.0093 0.0020 2.1134 5.4272 0.0040 0.0026 0.0090 -0.0085 0.0038 2.0566 4.9687 0.0045 0.0025 0.0091 -0.0
18、078 0.0054 1.9578 4.4918 0.0050 0.0023 0.0092 -0.0072 0.0069 1.8356 4.0198 0.0055 0.0022 0.0093 -0.0065 0.0082 1.7040 3.5680 0.0060 0.0021 0.0095 -0.0060 0.0094 1.5725 3.1450 0.0065 0.0019 0.0097 -0.0055 0.0104 1.4474 2.7545 0.0070 0.0018 0.0099 -0.0050 0.0113 1.3328 2.3968 0.0075 0.0017 0.0102 -0.0
19、045 0.0121 1.2307 2.0702 0.0080 0.0017 0.0104 -0.0041 0.0128 1.1425 1.7716 0.0085 0.0016 0.0107 -0.0037 0.0134 1.0687 1.4971 0.0090 0.0015 0.0110 -0.0034 0.0138 1.0095 1.2426 0.0095 0.0014 0.0112 -0.0030 0.0142 0.9653 1.0035 0.0100 0.0014 0.0115 -0.0027 0.0145 0.9364 0.7752 0.0105 0.0013 0.0118 -0.0
20、024 0.0148 0.9232 0.5530 0.0110 0.0013 0.0121 -0.0020 0.0149 0.9269 0.3319 0.0115 0.0013 0.0124 -0.0017 0.0150 0.9485 0.1069 0.0120 0.0012 0.0127 -0.0014 0.0150 0.9899 -0.1276 0.0125 0.0012 0.0130 -0.0010 0.0149 1.0530 -0.3773 0.0130 0.0012 0.0133 -0.0006 0.0147 1.1404 -0.6481 0.0135 0.0012 0.0136 -
21、0.0002 0.0145 1.2544 -0.9455 0.0140 0.0012 0.0139 0.0002 0.0141 1.3967 -1.2743 0.0145 0.0012 0.0142 0.0008 0.0136 1.5677 -1.6368 0.0150 0.0012 0.0144 0.0013 0.0129 1.7648 -2.0314 0.0155 0.0012 0.0147 0.0020 0.0121 1.9807 -2.4495 0.0160 0.0013 0.0149 0.0027 0.0112 2.2018 -2.8735 0.0165 0.0013 0.0151
22、0.0035 0.0101 2.4071 -3.2754 0.0170 0.0014 0.0153 0.0044 0.0089 2.5697 -3.6186 0.0175 0.0015 0.0155 0.0053 0.0076 2.6616 -3.8650 0.0180 0.0016 0.0156 0.0063 0.0063 2.6609 -3.9849 0.0185 0.0018 0.0157 0.0072 0.0049 2.5591 -3.9674 0.0190 0.0019 0.0158 0.0080 0.0035 2.3638 -3.8244 0.0195 0.0021 0.0159
23、0.0088 0.0022 2.0959 -3.5866 0.0200 0.0023 0.0159 0.0095 0.0010 1.7823 -3.2931 0.0205 0.0025 0.0159 0.0100 -0.0001 1.4487 -2.9815 0.0210 0.0027 0.0159 0.0105 -0.0011 1.1152 -2.6809 0.0215 0.0029 0.0159 0.0108 -0.0020 0.7942 -2.4103 0.0220 0.0031 0.0158 0.0111 -0.0028 0.4916 -2.1794 0.0225 0.0033 0.0
24、158 0.0112 -0.0035 0.2086 -1.9913 0.0230 0.0036 0.0157 0.0112 -0.0042 -0.0565 -1.8450 0.0235 0.0038 0.0156 0.0111 -0.0048 -0.3071 -1.7375 0.0240 0.0040 0.0155 0.0110 -0.0054 -0.5475 -1.6650 0.0245 0.0042 0.0154 0.0108 -0.0060 -0.7817 -1.6233 0.0250 0.0044 0.0153 0.0104 -0.0065 -1.0139 -1.6089 0.0255
25、 0.0046 0.0151 0.0100 -0.0071 -1.2479 -1.6181 0.0260 0.0048 0.0150 0.0096 -0.0077 -1.4868 -1.6480 0.0265 0.0050 0.0148 0.0090 -0.0082 -1.7336 -1.6955 0.0270 0.0052 0.0146 0.0084 -0.0088 -1.9905 -1.7574 0.0275 0.0054 0.0145 0.0076 -0.0095 -2.2588 -1.8304 0.0280 0.0055 0.0143 0.0068 -0.0101 -2.5391 -1
26、.9100 0.0285 0.0056 0.0141 0.0058 -0.0108 -2.8305 -1.9910 0.0290 0.0057 0.0138 0.0048 -0.0115 -3.1300 -2.0660 0.0295 0.0058 0.0136 0.0037 -0.0122 -3.4326 -2.1255 0.0300 0.0059 0.0133 0.0024 -0.0130 -3.7297 -2.1572 0.0305 0.0059 0.0131 0.0011 -0.0137 -4.0091 -2.1451 0.0310 0.0059 0.0128 -0.0004 -0.01
27、45 -4.2538 -2.0696 0.0315 0.0059 0.0125 -0.0019 -0.0152 -4.4419 -1.9079 0.0320 0.0058 0.0122 -0.0035 -0.0158 -4.5473 -1.6352 0.0325 0.0058 0.0119 -0.0051 -0.0163 -4.5411 -1.2273 0.0330 0.0056 0.0115 -0.0066 -0.0166 -4.3954 -0.6661 0.0335 0.0055 0.0112 -0.0081 -0.0167 -4.0889 0.0551 0.0340 0.0053 0.0
28、109 -0.0095 -0.0166 -3.6129 0.9243 0.0345 0.0051 0.0105 -0.0106 -0.0161 -2.9781 1.9058 0.0350 0.0049 0.0102 -0.0115 -0.0152 -2.2178 2.9395 0.0355 0.0047 0.0099 -0.0122 -0.0140 -1.3857 3.9473 0.0360 0.0044 0.0097 -0.0125 -0.0125 -0.5478 4.8458图形输出: 图2 连杆3的几个位置点 图3 角位移线图 图4 角加速度线图 图5 角加速度线图3 基于MATLAB图
29、形界面设计所谓图形用户界面, 简称为GU I (Graph ic U ser In terface) , 是指包含了各种图形控制对象, 如图形窗口、菜单、对话框以及文本等内容的用户界面。利用这些用户界面, 用户可以和计算机之间进行信息交流。用户可以通过某种方式来选择或者激活这些图形对象, 来运行一些特性的M 文件。最常见的激活方式是利用鼠标或者其它设备来点击这些对象。对于一个用户来说, 图形用户界面就是他所面对的应用程序, 对图形界面的操作直接影响应用程序的应用前途。对于以往专门用于科学计算的语言, 如FORTRAN 语言等, 编写图形界面的功能较弱, 因而用其开发的程序, 其界面往往不够友好
30、, 用户使用起来很不方便。而目前流行的可视化语言, 对科学计算的功能又相对弱一些。MATLAB提供了非常强大的编写图形用户界面的功能。用户只和前台界面下的控件发生交互,而所有运算、绘图等内部操作都封装在内部,终端用户不需要区追究这些复杂过程的代码。图形用户界面大大提高用户使用MATLAB程序的易用性。因此,学习MATLAB图形用户界面编程,即GUI程序的创建,是MATLAB编程用户应该掌握的重要一环。对于一个MATLAB 中的图形用户界面, 它的设计过程一般可以分为两个部分:用户界面的外观设计。在这里, 主要是通过不同的对话框、按钮、文本框等许多工具的使用, 设计出一个图形用户界面。同时也应搞
31、清楚这个图形界面的功能是什么, 也即在图形界面上的操作会引发什么样的结果。图形界面的完成。在这里, 用户将根据在外观设计阶段所确定的图形界面的功能, 针对各个不同的图形对象来编写出能够实现该功能的函数代码, 确保这个图形界面能够完成所预定的功能。3.1 界面设计首先我们新建一个GUI文件,如下图所示: 图6 新建GUI文件选择Blank GUI(Default)。进入GUI开发环境以后添加5个编辑文本框,8个静态文本框,和1个下拉菜单。利用菜单编辑器,创建Open、Print、Close三个菜单。创建好GUI界面需要的各交互控件并调整好大概的位置后,设置这些控件的属性。最后的界面效果如下图示:
32、 图7 界面效果3.2 代码设计(1)打开M文件编辑器(M-file Edit),点击向下的三角图标,可以看到各个对象的回调函数(Callback),某些对象的创建函数或打开函数等。通过选中相应项就可以跳动对应函数位置进行程序编辑。 选中edit_callback选项,光标跳到 function edit1_Callback(hObject, eventdata, handles)下面空白处,添加以下代码:user_entry=str2double(get(hObject,String);if isnan(user_entry) errordlg(请输入数值!,Bad Input)end该语句
33、严格限制编辑框内必须输入数值,否则出现错误对话框(如下图所示)。同理在其他四个编辑框的回调函数下输入相同的代码。 图8 错误对话框 (2)打开M文件编辑器(M-file Edit),点击向下的三角图标,设置下拉菜单返回函数,光标跳到 function popupmenu1_Callback(hObject, eventdata, handles)下面空白处。由于下拉菜单是本界面设计关键控件,与本设计相关的程序都放在这个返回函数下。添加代码如下:L1=str2double(get(handles.edit1,String);L2=str2double(get(handles.edit2,Stri
34、ng);L3=str2double(get(handles.edit3,String);L4=str2double(get(handles.edit4,String);w2=str2double(get(handles.edit5,String);th2=0:2/72:2*pi; th34=zeros(length(th2),2);options=optimset(display,off);for m=1:length(th2)th34(m,:)=fsolve(fourbarposition,1 1,options,th2(m),L2,L3,L4,L1);endw2=250;for i=1:l
35、ength(th2)A=-L3*sin(th34(i,1) L4*sin(th34(i,2); L3*cos(th34(i,1) -L4*cos(th34(i,2);B=w2*L2*sin(th2(i); -w2*L2*cos(th2(i);w=inv(A)*B; w3(i)=w(1);w4(i)=w(2);endfor i=1:length(th2)C=-L3*sin(th34(i,1) L4*sin(th34(i,2);L3*cos(th34(i,1) -L4*cos(th34(i,2);D=w22*L2*cos(th2(i)+w3(i)2*L3*cos(th34(i,1)-w4(i)2*
36、L4*cos(th34(i,2);. w22*L2*sin(th2(i)+w3(i)2*L3*sin(th34(i,1)-w4(i)2*L4*sin(th34(i,2);a=inv(C)*D;a3(i)=a(1);a4(i)=a(2);endval=get(hObject,Value);str=get(hObject,String);switch strvalcase 连杆3的几个位置点th2=0:1/6:2*pi; th34=zeros(length(th2),2); options=optimset(display,off); for m=1:length(th2) th34(m,:)=f
37、solve(fourbarposition,1 1,options,th2(m),L2,L3,L4,L1); end y=L2*sin(th2)+L3*sin(th34(:,1); x=L2*cos(th2)+L3*cos(th34(:,1); xx=L2*cos(th2); yy=L2*sin(th2); plot(x;xx,y;yy,k,0 L1,0 0,k-,x,y,ko,xx,yy,ks) title(连杆3的几个位置点) xlabel(水平方向) ylabel(垂直方向) axis equal grid oncase 角位移线图 plot(th2*180/pi,th34(:,1)*1
38、80/pi,th2*180/pi,th34(:,2)*180/pi) axis(0 360 0 170) grid on xlabel(主动件转角theta_2(度) ylabel(从动件角位移(度) title(角位移线图) text(120,120,摇杆4角位移) text(150,40,连杆3角位移)case 角速度线图 plot(th2*180/pi,w3,th2*180/pi,w4); axis(0 360 -175 200) text(50,160,摇杆4角速度(omega_4) text(220,130,连杆3角速度(omega_3) grid on xlabel(主动件转角th
39、eta_2(度) ylabel(从动件角速度(radcdot s-1) title(角速度线图)case 角加速度线图plot(th2*180/pi,a3,th2*180/pi,a4); axis(0 360 -50000 65000) text(50,50000,摇杆4角加速度(alpha_4) text(220,12000,连杆3角加速度(alpha_3) grid on xlabel(主动件转角theta_2(度) ylabel(从动件角加速度(radcdot s-2) title(角加速度线图)endguidata(hObject,handles)%其中,guidata(hObject
40、,handles)命令用于更新句柄,当输入不同参数是,程序能够做出相应的相应。(3)打开M文件编辑器(M-file Edit),点击向下的三角图标,在Open菜单回调函数下添加以下代码:file = uigetfile(*.fig);if isequal(file, 0) open(file);end此菜单用以打开fig文件。其相应界面如图9所示: 图9(4)打开M文件编辑器(M-file Edit),点击向下的三角图标,在Print菜单回调函数下添加以下代码:printdlg(handles.figure1) %用于图形输出。(5)打开M文件编辑器(M-file Edit),点击向下的三角图
41、标,在Close菜单回调函数下添加以下代码:selection = questdlg(Close get(handles.figure1,Name) ?,. Close get(handles.figure1,Name) .,Yes,No,Yes);if strcmp(selection,No) return;enddelete(handles.figure1)此菜单用于关闭界面,其响应界面如图10所示: 图10(6)完成M文件编写后,运行程序进行检验,单击图标或M文件工具栏的图标,在编辑栏输入个构件参数,运行结果如图11: 图11 界面运行效果图 分别点击下拉菜单下各选项,则在绘图区域分别显
42、示图2图5。4 小结在本次基于MATLAB平面四杆机构机构的运动分析课程设计中,不仅用到了MATLAB的m语言编程,还有GUI图形用户界面设计。对于课程的设计来说,m语言本身来说,功能相当强大,但是由于其复杂的编程方法,让大多数初学者望而却步;而GUI图形界面则正好弥补了它的不足,它采用的是所见即所得的编程方式,用它来做软件的界面就如图制作网页一样简单明了,用它制作出来的软件不需要太多的编程知识都可以轻松搞定;在此次课程设计中,本人尽量扬长避短,把这些工具的优点结合到一起,发挥其最大的作用。通过此次课程设计,不仅使我们对使我们对四杆机构有了进一步认识,并且使我们认识到计算机技术对工程应用的重要
43、性。本此设计凝结了团队合作的结晶,是我们利用三周的时间努力学习、设计的成果,同时,在设计过成中得到了郑雪飞老师的悉心指导,在此表示衷心的感谢!参考文献1 孙桓,陈作模.机械原理M.7版.北京:高等教育出版社,2006.2 符炜.机构设计学.M.1版. 长沙:中南工业大学出版社,1995.3 MATLAB原理与工程应用M.1版.北京:电子工业出版社,2002.4 电子版源文件下载地址: HYPERLINK /s/1smS1vOD /s/1smS1vOD密码:kl7h附录资料:不需要的可以自行删除Pascal/C/C+语句对比(补充版)一、Hello world 先看三种语言的样例:Pascalb
44、egin writeln(Hello world);end.C#include int main() printf(Hello world!n); return 0;C+#include using namespace std;int main()cout Hello world! endl; return 0; 从这三个程序可以看到一些最基本的东西。在Pascal中的begin和end,在C/C+里就是;Pascal主程序没有返回值,而C/C+返回0(好像在C中可以为NULL)。在C/C+中,main函数以前的是头文件,样例中C为stdio.h,C+除了iostream还有第二行的using
45、 namespace std,这个是打开命名空间的,NOIP不会考这个,可以不管,只要知道就行了。 此外说明 注释单行用/,段落的话Pascal为,C/C+为/* */。* 常用头文件(模板)#include #include #include #include #include #include using namespace std;int main() system(“pause”);return 0;二、数据类型及定义 这里只列出常用的类型。1、整型PascalC/C+范围shortint-128 127integershort-32768 32767longintInt -21474
46、83648 2147483647int64long long-9223372036854775808 9223372036854775807byte-0 255wordunsigned short0 65535longwordunsigned int0 4294967295qwordunsigned long long0 18446744073709551615 * 当对long long 变量赋值时,后要加LLLong long x=6327844632743269843LL* 如果位移 x2LL* Linux: printf(“%lldn”,x);* Windows: printf(“%I
47、64dn”,x);2、实型PascalC/C+范围realfloat2.9E-39 1.7E38single-1.5E-45 3.4E38doubledouble5.0E-324 1.7E3083、字符即字符串 字符在三种语言中都为char,C里没有字符串,只有用字符数组来代替字符串,Pascal和C+均为string。Pascal中字符串长度有限制,为255,C+则没有。 字符串和字符在Pascal中均用单引号注明,在C/C+中字符用单引号,字符串用双引号。4、布尔类型 Pascal 中为 boolean,C/C+ 为 bool。值均为True 或 False。C/C+中除0外bool都为真
48、。5、定义 常量的定义均为 const,只是在C/C+中必须要注明常量的类型。在C/C+中还可以用宏来定义常量,此时不注明类型。PascalC/C+const a = 60; b = -a + 30; d = ;const int a = 60;const int b = - a + 30;const string d = “”;define MAXN 501 /这个是宏 * 宏定义其实就是直接在程序相应的位置替换: #define randomize srand(unsigned time(NULL) #define wait for(int w=0;w a;cout a;cout a en
49、dl;特别说明C+中cin一个字符的话会自动跳过空格和回车,Pascal和C则会读入空格和回车。在Pascal中writeln(a:n:m) 表示在n个字符宽的输出域上输出a保留m位小数。例如:pascal write(a:6) c/c+ printf(“%6d”,a) Pascal write(a:6:2) c/c+ printf(“%6.2f”,a) C+ 如果用 cout ? (繁琐!) 需要加头文件 #inlude cout setprecision(2)a; /作用永久 cout setw(6)a; /作用临时 以下三个进制设定都是永久作用: cout deca; 相当 printf
50、(“%d”,a); /十进制 cout hexa; 相当 printf(“%X”,a); /十六进制 cout octa; 相当 printf(“%o”,a); /八进制例如:cout 12hex12oct1212endl;输出:12c1414 C 的输入输出里面的字符串中%表示变量,%后面的字目表示变量类型。下面是类型表:%hd1个short型整数%d1个int型整数%u1个unsigned int型整数%I64d1个long long型整数%c1个字符%s1个C字符串%f1个float型实数%lf1个double型实数%10.4f输出1个总宽度为10,保留4位小数的实数 文件输入输出:Pa
51、scalassign(input, test.in);assign(output, test.out);reset(input);rewrite(output);read(a, b);writeln(a, b);close(input);close(output);CFILE *fin = fopen(“test.in”, “r”);FILE *fout = fopen(“test.out”, “w”);fscanf(fin, “%d%d”, &a, &b);fprintf(fout, “%d%d”, a, b);fclose(fin); fclose(fout);C+#include usi
52、ng namespace std;ifstream fin(“test.in”);ofstream fout(“test.out”);fin a b;fout a b endl;fin.close(); fout.close();因为C+的读入较慢,个人建议C+的话使用C的输入方式。当然也有人用C的读入,C+的输出的,这种方式我们称之为城乡结合。*中国计算机学会竞赛须知发布的C读写程序:(C+ 也能用,cin,cout,scanf,printf 可混用)#include int main() int a,b; freopen(“sum.in”,”r”,stdin);freopen(“sum.o
53、ut”,”w”,stdout); scanf(“%d%d”,&a,&b); printf(“%dn”,a+b); return 0; 或者:freopen(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout);ios:sync_with_stdio(false); 取消同步,cin,cout的速度就不慢了! cinab;couta+bendl; return 0;以下扩充c/c+混用是可行的:#include #include using namespace std;int main() int a,b,c,d; freopen(sum.in,r,
54、stdin); freopen(sum.out,w,stdout); scanf(%d%d,&a,&b); cincd; printf(%dn,a+b); couta+b+c+dsn).Cwhile(scanf(%s%d,s,&n)!=EOF).四、赋值语句及运算符号 一一对应的关系PascalC/C+赋值运算赋值:=基本运算加+减-乘*除(实数)/ (double)除法取整div(int) / (int)取余mod%比较等于=不等于!=大于大于等于=小于小于等于=逻辑且and&或or|非not!位运算左移(*2)shl且and&或or|非not异或xor其他增一inc(x)x+减一dec(x
55、)x- 在C/C+中对某个变量自身进行运算可以简写为 变量名 运算符号= 改变量 如 x += 8 就表示 x = x + 8, 即 inc(x, 8)。 在 C/C+里还存在一种三目运算 变量名 = 条件 ? 值A : 值B 如 x = x 0 ? x : -x; /表示若x 0 则取 x, 否则取 x, 同 if x 0 then x := x else x := -x;五、条件语句1、if C/C+中if 语句的条件必须要用括号括起来,后面不使用then。PascalC/C+if a b then flag := true else flag := false;if (a b) flag
56、 = true;else flag = false;2、多种分支 C/C+中为switch,Pascal为case:PascalC/C+case x of 1: inc(x); 2: dec(x); else x := x * x;end;switch (x) case 1: x +; break; case 2: x -; break; default: x *= x; 切记C/C+中一定要写break,后果你可以去掉break,运行看看就知道了。六、循环语句1、forPascalC/C+for 变量名 := 初始值 to(downto) 终止值 dofor (变量名=初始值;条件;改变方式
57、)for i := 5 to 10 do dec(a);/终止值大于初始值用 tofor i := 5 downto 1 do dec(a);/终止值小于于初始值用 downtofor (i = 5; i = 1; i-) a-;/*只要i 满足条件就会一直循环。C/C+中i是实数、指针都可以*/C/C+中for的特殊用法:/变量为实数for (double i = 1; i 符号为间接引用,后面会提到。for (type1 *p = head - next; p; p = p - next) printf(“%d”, p - k);2、whilePascalC/C+while 条件 dowh
58、ile (条件)while i 0 do dec(i);while (i != 0) i-;/也可写作 while (i) i-;/在C/C+中非0即为真。3、repeat-until & do-whilePascalC/C+repeat 语句 until 结束条件;do while (运行条件)repeat int(i) until i 100;do i+; while (i = 100);七、数组 Pascal中数组的下标可以随意定义,而C/C+下标始终为从0开始到(数组大小1)。PascalC/C+定义a : array 1.100 of integer;b :array 1.10,1.
59、10 of int64;int a100;int b1010;含义a 为大小为100的integer数组,合法下标为1到100b 为大小为10*10的int64数组,合法下标为1,1到10,10a 为大小为100的int数组,合法下标为0到99b 为大小为10*10的int数组,合法下标为0,0到9,9;使用inc(a21);b2,2:=b1,1+b1,2+b2,1;a21+;b11=b01+b00+b10; 数组清零PascalC/C+Fillchar(a, sizeof(a), 0);memset(a, 0, sizeof(a);/头文件包含 string.h*如果要填最大: memset
60、(a,127,sizeof(a) (但达不到 INT_MAX) 如果要填最小: memset(a,128,sizeof(a) (但达不到 INT_MIN) 如果填0: memset(a,0,sizeof(a) 如果填-1: memset(a,-1,sizeof(a)八、字符串 C风格的字符串就是字符数组。 C+和Pascal的字符串使用基本相同,只是C+中字符串下标以0开始,Pascal以1开始。字符串处理很多这里不一一列举,只写最常用的几个。PascalC (包含)定义用:char sC+(包含)定义用:string s输入输出Readln(s);Writeln(s);Scanf(“%s”,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论