程序编程范例6篇

前言:中文期刊网精心挑选了程序编程范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

程序编程

程序编程范文1

在最初编写的JDBC应用程序代码中,所有的数据信息都是编写到Java中的,这其实是一种不可取的方式。那么,我们把这些数据信息提取出来,放到属性文件中进行程序优化。

一、配置文件优化程序

Java的属性文件是一种配置文件,主要用来表达配置信息,它的后缀是properties,其实就是一个纯文本文件。创建Java配置文件的方法是选中src右键单击新建,选择other选项,再选择向导中General下的File,将文件起名为dbConfig.properties,点击Add按钮来添加属性及属性值,例如,属性name为driver,属性value为com.mysql.jdbc.Driver;属性name为dburl,属性value为jdbc:mysql://localhost:3306/xqy_db;属性name为user,属性value为root;属性name为password,属性value为admin。

二、创建连接工厂类优化程序

1、定义connectionFactory类,并创建包名为com.xqy.until;

2、定义四个静态成员变量用来保存从属性配置文件 中读取的数据库配置文件信息值;

3、定义静态代码块用来初始化类,可以为类的属性赋值,因为当加载类的时候会执行静态代码块,该静态代码块只能被执行一次。

其中核心代码为:

Properties prop=new Properties();

InputStream in=connectionFactory.class.getClassLoader().getResourceAsStream(“dbConfig.properties”);

prop.load(in);

driver=prop.getProperties(“driver”);//对静态成员变量driver初始化

url=prop.getProperties(“dburl”);//对静态成员变量url初始化

user=prop.getProperties(“user”);//对静态成员变量user初始化

pwd=prop.getProperties(“password”);//对静态成员变量pwd初始化

4、定义一个连接工厂类的对象factory,并编写静态方法getInstance来返回连接工厂类对象实例,以确保在程序支行过程中只有一个实例。

5、定义数据连接类的对象conn,通过定义makeConnection()方法来返回配置属性文件中的数据连接对象。

Class.forName(drive);

conn=DriverManager.getConnection(url,user,pwd);

return conn;

6、创建应用程序connectionFactoryDemo.java测试属性配置文件和连接工厂类,具体操作如下:

将主方法抛出SQLException异常,在主方法中添加代码为:

connectionFactory factory=connectionFactory.getInstrance( );

Connection conn=factory.makeConnection( );

System.out.println(conn.getActionCommit( ));

接下来继续优化JDBC程序,使其更加清晰,更加符合工业标准规范。

三、创建DTO类优化程序

创建两个DTO类,分别对应数据表tbl_user和tbl_address。

DTO是Data Transfer Object的缩写,是数据传输对象,主要用于远程大量数据调用的问题上,DTO一般只有成员变量,成员变量的setXX()方法和getXX()方法,还有构造函数,DTO不能包含业务逻辑。

1、在包com.xqy.entity下建立抽象类IdEntity,其中有保护成员变量Long id,使用setXX( )和getXX( )对成员变量进行初始化,定义无返回值的toStrig()抽象方法。

2、在com.xqy.entity包下,新建IdEntity类的子类User,该类具有name、password、email三个成员属性;添加父类中未实现的方法,为name、password、email三个成员属性添加setXX( )方法和getXX( )方法。

3、在com.xqy.entity包下,新建IdEntity类的子类Address,该类具有city、country、userId三个成员属性;添加父类中未实现的方法,为city、country、userId三个成员属性添加setXX( )方法和getXX( )方法。

四、创建DAO类优化程序

DAO是Data Access Object的缩写,数据访问对象,主要用来封装对数据库的访问,通过它可以把数据库中的表转化为DTO类。

1、 在包com.xqy.dao下建立接口UserDao,在该接口在添加抽象方法:

public void save(Connection conn,User user) throws SQLException;

public void update(Connection conn,Long id,User user) throws SQLException;

public void delete(Connection conn,User user) throws SQLException;

其中save( )方法用于保存用户信息,update( )方法用于更新用户信息,delete( )方法用于删除用户信息。

2、创建UserDao接口的实现类UserDaoImpl,该类位于com.xqy.dao.impl包下。首先实现save( )方法,具体操作如下:

String sql=“insert into tbl_user(name,password,email) values(?,?,?)”;

PreparedStatement ps=conn.prepareStatement(sql);

ps.setString(1,user.getName());

ps.setString(2,user.getPassword());

ps.setString(3,user.getEmail());

ps.execute( );

程序编程范文2

关键词: 倾斜椭圆 宏程序 编写

一、问题的题出

随着数控技术的不断进步,数控车床加工中各种复杂形面也日渐增多,如椭圆、抛物线、正弦曲线、余弦曲线、双曲线等各种非圆曲面。对于上述各种复杂成形面,利用CAM软件进行自动编程相对简单,但由于种种原因,在绝大多数情况下数控车床主要还是依靠手工编程。

椭圆轴线与数控车床Z轴重合的情形相对比较简单,其解决方案也多见于各类文献,但在本例中椭圆轴线与数控车床Z轴呈一定夹角,编程和加工难度陡增,主要原因如下:①机床数控系统本身既不存在加工椭圆等非圆曲线的G指令,又没有类似G68这样的旋转指令,使编程难度大大增加。②加工中变量的参数直接影响着加工的效率与质量,很容易产生过切报警,即使程序正确无误,实际加工时的参数调整也非常困难,直接影响着加工的进行和加工的精度。

二、问题的解决

椭圆轴线与数控车床Z轴呈一定夹角椭圆宏程序的编制步骤如下。

1.写出椭圆方程

椭圆轴线与数控车床Z轴呈一定夹角,宏程序主要利用各种数学公式进行运算加工,因此要编制旋转椭圆程序,操作者必须掌握椭圆方程和旋转公式等各种数学公式的计算方法并加以灵活运用。

椭圆方程有两种形式,分别是椭圆的标准方程和参数方程。

椭圆标准方程:

椭圆参数方程:

X=acosαZ=bsinα

其中a、b分别为X、Z所对应的椭圆半轴。

2.写出车床旋转公式

由于数控车床并不像加工中心那样存在着旋转指令,因此要利用旋转公式来进行椭圆的旋转。车床旋转公式为X′=Zsinθ+XcosθZ′=Zcosθ-Xsinθ,其中,X′、Z′为旋转后的坐标,X、Z为旋转之前的坐标值,θ为旋转角度。

3.计算终起点角度

在利用椭圆参数方程编制加工程序时,终点和起点的角度是重要的一步,因为终、起点直接影响着加工零件的几何形状。终点和起点的计算方法有两种,一种是三角函数计算法,该方法不作详细介绍。另一种是用旋转公式求得未旋转前X、Z的坐标。最后进行椭圆角度的计算。

旋转公式求椭圆角度先分别将A、B的坐标代入旋转变换公式中进行运算,最终分别求得A、B没有旋转之前的坐标值A′、B′的坐标,用椭圆参数方程求得没有旋转之前的椭圆角度。

例:如图1所示,以O′为原点,点A的坐标为(Z20,X13.105),点B的坐标为(Z-7.95,X12.95),其中椭圆的长半轴和短轴分别为25mm、15mm,旋转角度为20°。求没有旋转之前的椭圆起点和终点角度。

起点计算

AZ=AZ′cos(-θ)-AX′sin(-θ)

=20×cos(-20°)-13.105×sin(-20°)=23.276(mm)

cosα=Z/b=23.276/25=0.931

α≈21.4°

终点计算

BZ=BZ′cos(-θ)-BX′sin(-θ)

=-7.95cos(-20°)-12.95sin(-20°)=-3.041(mm)

cosθ=Z/b=-3.041/25=-0.122

θ≈97°

4.程序中变量的确定与注意事项

在旋转椭圆程序变量的赋值是一个重要的环节,因为宏程序是利用许多段微小的直线来逼近轮廓的,取值大了轮廓表面的逼近误差也大。在加工中,变量的赋值可以按粗车和精车来取值。粗加工程序变量的取值应根据预留加工余量的大小来确定,在保证加工不过切的前提下,我们可以选择较大的程序变量,但是也不能过大,变量过大会使精加工余量不均匀或形成过切。精加工时我们主要是保证工件的质量,为使工件的几何形状达到要求,需要减少拟合的误差,因此我们应该选择一个较小的程序变量。

三、应用实例(程序编制)

使用数控车床切削零件图如图2所示,毛坯材料为45钢,直径为50mm,长度为65mm(1号刀为粗车35°尖刀,2号刀为精车35号尖刀,3号刀为切断刀)。

倾斜椭圆宏程序部分(HNC21T数控系统):

#10 =15 短半轴

#11 =25 长半轴

G00 X26. 209 A点X坐标

G01 Z0 F0. 05

#12 =21.4 椭圆旋转前的起点角度

WHILE [ #12] GE 97ENDW 椭圆旋转前终点角度

#13 = SIN [ #12 * PI /180] * #10 SIN【弧度】 弧度编程

#14 = COS [ #12 * PI /180] * #11其中PI=3.14(π)

#15 = 20* PI /180 ( 赋值旋转角度20°)

#16 = #14* SIN [ #15] + #13 * COS [ #15] (车床旋转公式为 )

#17 = #14* COS [ #15] - #13* SIN [ #15]

G01 X [ #16* 2] Z [ #14 - 20 ] F0. 05 ( 运行加工椭圆轮廓)

#12 = #12 + 1 ( 自变量递增1 °)

END1

四、结语

程序编程范文3

本文简介了子程序编程的基础知识,以实例形式论述了子程序在模具平面、凸模和多腔铣削加工编程中的具体应用。实践表明,使用子程序编程解决了因平面铣削走刀次数多、分层铣削层数多、多腔铣削腔数多而导致的无法进行的手工编程的问题,并能够克服数控自动编程程序可读性差、柔性差的缺点,缩短编程时间和工作量。

数控编程是模具加工的关键环节,编制高质量的加工程序对工件质量、效率和成本有重要的影响。在模具加工中,经常会遇到平面铣削走刀次数多、分层铣削层数多、多腔铣削腔数多而导致的手工编程繁琐问题,甚至若不采用子程序无法进行手工编程的问题。因此,本文探讨利用子程序以简化模具加工手工编程具有重要的意义。

一、FNUAC 0i 系统子程序编程基础

1. 子程序的概念

数控机床的加工程序分为主程序和子程序两种。主程序是一个完整的零件加工程序,或是零件加工程序的主体部分,它和加工零件是一一对应的关系。在编制零件加工程序中,如果其中有些加工内容完全相同或相似,为了简化程序,可以把程序中某些重复出现的程序单独抽出来,按一定格式编成一个单独的程序,以供调用,这个程序即是子程序。

2. 子程序的调用

在FANUC 0i 系统中,子程序的调用可通过M98 指令进行,且在调用格式中将子程序的程序号地址O 改为P,其常用的子程序调用格式为:M98 P L。

其中地址P 后面的四位数字为子程序号,地址L 的数字表示重复调用的次数。若只调用1 次子程序,在地址L及其后的数字可省略不写。

3. 子程序的嵌套

在编程时让程序调用另一个子程序,这一功能称为子程序的嵌套。当主程序调用子程序时,该子程序被认为是一级子程序,为一级嵌套,一级子程序再调用子程序时,该子程序被认为是二级子程序,为二级嵌套,依次类推,FANUC 0i 系统中,子程序可以嵌套4 级。

主程序在运行过程中若需要执行某一级子程序,通过M98 调用指令来调用该一级子程序,如果该一级子程序需要执行某二级子程序,也是通过M98 指令来调用该二级子程序,依次类推。子程序返回时与调用次序相反,最终一级子程序运行结束后又返回到主程序调用程序段处,继续执行下面的程序段。

二、子程序的编程应用

1. 模具平面的编程

模具主要是由板类零件组成的,平面是典型加工表面,下面以某模板平面长、宽尺寸为300×250为例进行铣削编程。

(1)编程分析。

刀具选用直径为30mm 的平底立铣刀,以刀位点进行编程,铣削平面走刀路线由单向行切和双向行切,为保证加工表面质量采用单向不对称逆铣行切,步距一般为刀具直径的0.85 倍,故步距取26mm,工件宽度为250 除以步距26,得循环次数为9.6 次,而次数须为整数,因此,循环走刀次数确定为10 次。

(2)确定编程原点,设计走刀路线。

编程零点确定在工件上表面中心,所设计的每次走刀路线如图1 所示,即P1 P2 P3。

(3)确定基点坐标值。

考虑刀具半径15mm、刀具X 轴方向让刀距离3mm和步距26mm,采用CAD 尺寸标注法确定P1 点绝对坐标为P1(-18,11),P2、P3 点增量坐标为P1(336,0)、P2(-336,26)。

(4)编写加工程序源代码。

综合上述分析及设计,编写参考子程序如O6001 所示,编写主程序如O1 所示,根据加工平面尺寸只需修改所编程序中基点P1、P2、P3 坐标值,即可用于加工。

O6001;(子程序名)

G90G00Z5;(切换为绝对编程,刀具快速下降到Z坐标值5mm 处)

G01Z-1.5F50;(刀具切削进给至Z 值-1.5mm 处)

G91G01X336Y0F120;( 切换为增量编程,刀具切削进给从P1 到P2 点)

G90G00Z50;(切换为绝对编程,刀具快速抬刀至Z坐标值为50mm 处)

G91G00X-336Y26;(切换为增量编程,刀具快速至下一个下刀点)

M99;( 子程序结束)

O1;( 主程序名)

G91G28Z0;(刀具Z 轴回零)

G54G90G00X-18Y11S600M03;(建立XY 工件系,刀具快速至下刀点,主轴正转,转速600r/min)

G00Z50;(刀具快速至Z 坐标值50mm 处)

M98P6001L10;(调用O6001 子程序10 次)

G00Z200;(刀具快速至Z 坐标值200mm 处)

M30;(主程序结束)

2. 模具零件的分层铣削编程

某模具零件图如图2 所示,毛坯长、宽、高尺寸为:100×100×110。

(1)编程分析。

在模具实际加工中,特别高速加工,为减小切削抗力,避免机床负载的剧烈变化,刀具每次的切削深度必须限定在一定范围内。使用子程序编程可实现刀具Z 向的分层加工。一般要求加工高度和每层切削深度为整数倍关系,该冲模型芯高80mm,确定每层切削深度2mm,则需调用子程序40 次。刀具选用直径16mm 的合金刀具。

(2)确定编程零点,设计走刀路线。

编程零点确定在工件上表面中心,设计走刀路线时注意以下4 点:①走刀路线下刀点和返回点尽量重合,以简化编程;②精加工刀具要切向切入切出工件,防止接刀痕; ③ 刀具XY 下刀点尽量在工件以外, 必要时预加工工艺孔, 保护刀具; ④ 走刀路线尽量短, 有利于基点坐标计算。所设计的每层走刀路线如图3 所示,即P P1 P2 P3 P4 P5 P6 P2 P7 P。

(3)确定基点坐标值。

图3 中的刀具每层走刀路线图为精确设计,使用CAD软件查询法顺次确定基点坐标为:P(0,-60)、P1 (12,-52)、P2(0,-40)、P3(-30,-40)、P4(-30,10)、P5(30,10)、P6(30,-40)、P7(-12,-52)。

(4)编写加工程序源代码。

基于上述分析及设计,编写参考子程序如O6002 所示,编写主程序如O2 所示,以供参考。值得注意的是:①分层铣削子程序编程Z 向须用G91 编程;②主程序中程序段G01Z0F20,刀具须切削进给至Z 坐标值0 处,才能保证工件的加工高度尺寸。

O6002;(子程序名)

G91G01Z-2F20;(刀具每次切削深度-2mm)

G90G41G01X12Y-52D01F200;( 刀具从P 点切削进给到P1 点,建立刀具半径左补偿)

G03X0Y-40R12;( 刀具从P1 点切削进给到P2 点,圆弧切向切入工件)

G01X-30;( 刀具从P2 点切削进给到P3 点)

G01Y10;( 刀具从P3 点切削进给到P4 点)

G03X30R30; ( 刀具从P4 点切削进给到P5 点)

G01Y-40; ( 刀具从P5 点切削进给到P6 点)

G01X0; ( 刀具从P6 点切削进给到P2 点)

G03X-12Y-52R12;( 刀具从P3 点切削进给到P7 点,圆弧切向切出工件)

G40G01X0Y-60F1000;( 刀具从P7 点切削进给到P 点,取消刀具半径左补偿)

M99; ( 子程序结束)

O2;( 主程序名)

G91G28Z0;( 刀具Z 轴回零)

G54G90G00X0Y0S2000M03;( 建立工件系,刀具快速至下刀点P,主轴正转,转速2000r/min)

G00Z50;( 刀具快速下降到离工件顶面50mm)

G00Z5;( 刀具快速下降到离工件顶面5mm)

G01Z0F20;( 刀具切削进给到Z 坐标值0 处)

M98P6002L40;( 调用O6002 子程序40 次)

G00Z50;( 刀具快速抬刀至离工件顶面50mm)

G00Z200;( 刀具快速抬刀至离工件顶面200mm)

M30;( 主程序结束)

3. 模具的多腔铣削编程

假设刀具一次能加工深度为10mm,对图4 所示零件各腔进行精铣编程。

(1)编程分析。

刀具选用直径8mm 的键槽铣刀,零件各腔为精加工,为避免刀痕,设计走刀路线时,刀具圆弧切向切入切出工件,编写轮廓子程序使用G91 增量编程,实现工件轮廓形状编程与位置的无关。

(2)确定编程零点,设计走刀路线。

编程零点确定在工件上表面中心, 所设计的走刀路线如图5 所示, 各腔的加工顺序为①②③④⑥⑦⑧⑨,所设计的每腔走刀路线为O A1 A2 A3 A4 A5 A6 A2 A7 O。

(3)确定基点坐标值。

为使刀具加工形状与其位置无关,需采用G91 方式编程,因此,使用CAD 尺寸标注法确定各基点坐标增量坐标为:O(0,0)、A1(5,5)、A2(-5,5)、A3(-15,0)、A4(0,-20)、A5(30,0)、A6(0,20)、A7(-5,-5)、O(5,-5)。

(4)编写加工程序源代码。

根据以上分析及设计,编写子程序如O6003 所示,编写主程序如O3 所示,以供参考。

O6003;(子程序名)

G00Z5;(刀具快速下降到离工件顶面5mm 处)

G01Z-10F20;(刀具切削进给到切削深度-10mm)

G91G41G01X5Y5D01F60;( 切换为增量编程,建立刀具半径补偿左刀补,刀具从O 点进给到A1 点)

G03X-5Y5R5; ( 刀具从A1 点进给到A2 点)

G01X-15Y0,R5; ( 刀具从A2 点进给到A3 点)

G01X0Y-20,R5; ( 刀具从A3 点进给到A4)

G01X30Y0,R5; ( 刀具从A4 点进给到A5 点)

G01X0Y20,R5; ( 刀具从A5 点进给到A6 点)

G01X-15Y0;( 刀具从A6 点到进给A2 点)

G03X-5Y-5R5; ( 刀具从A2 点到进给A7 点)

G40G01X5Y-5F500;( 取消左刀补,刀具从A7 点进给到O 点)

G90G00Z50;( 切换为绝对编程,刀具快速抬刀至离工件顶面50mm)

M99;( 子程序结束)

O3;( 主程序)

G91G28Z0;(刀具Z 轴回零)

G54G90G00X0Y0S800M03;(建立工件坐标系,刀具快速定位至第1 个腔体中心)

G00Z50;( 刀具快速下降到离工件顶面50mm)

M98P6003L1;( 调用O6003 子程序1 次)

G00X35Y0;( 刀具快速至第2 个腔体中心)

M98 P6003L1; ( 调用O6003 子程序1 次)

……(刀具顺次定位至腔中心,调用子程序加工)

G00X35Y-25; ( 刀具快速至第9 个腔体中心)

M98 P6003L1;( 调用O6003 子程序1 次)

G00Z200;( 刀具快速抬刀至离工件顶面200mm)

M30;( 主程序结束)

程序编程范文4

关键词:汇编语言程序设计;教学改进

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)09-2111-02

Teaching Thinking of Assembly Language Programming Course

LUO Xing

(Hanshan Normal University, Hanshan 521041, China)

Abstract: This paper discusses the problem appear in teaching of assembly language programming course, propose some methods to improve student's ability to master the knowledge and learning interest. Discuss the assembly language teaching in Win32 platfrom in the last.

Key words: assembly language programming; teaching improvement

1 汇编语言程序设计课程教学现状

汇编语言程序设计作为一门计算机专业的课程,其存在的合理性在近年受到争议。有些人认为,汇编语言作为一种低级语言,指令繁多,难以掌握。另外,编程效率也不高,一个高级语言用一条语句实现的功能,在汇编语言中需要很多条指令才能实现。此外,汇编语言在时间上和空间上的优势由于高速CPU和大容量存储器的出现,也变得意义不大。

我认为学习汇编语言仍然具有重要意义。可以归纳如下:

1) 可以比较深入了解计算机硬件的底层工作原理,例如:CPU的工作模式,寄存器的概念,内存的寻址方式,中断的工作原理等。

2) 熟悉各种数据表示方法。如各种数制的转化,各种类型的数据在内存中的存储方式。学生在系统学习汇编语言程序设计这门课程后,对二进制,十进制以及十六进制相互间的转换应该非常熟练。对数据在内存中两种排列方式即大端方式(Big Endian,低地址存放高位字节)与小端方式(Little Endian,低地址存放低位字节)有清晰的理解。而这些相关的概念的牢固掌握对高级语言中的数据类型以及计算机网络编程的学习具有很大的帮助。

3) 通过汇编语言编程学习,可以促进对高级编程语言相关概念的理解。高级语言在编译的时候,一般都是先生成汇编代码,然后再生成的二进制代码。所以,通过对比分析汇编代码与高级语言代码的实现方式,对程序的执行效率,数据在内存中存放方式,堆栈的概念,函数的调用及参数传递的方式等都会有进一步的了解。

在教学中,我也遇到一些问题。一方面就是学生的积极性不高。主要原因包括:指令很多,难以记忆。对于几个大类的指令,如果每次课上一类,学生课后如果不进行主动复习,往往到下一次课的时候,就会忘记前面所学的内容或者发生混淆。另外,在学习汇编课程之前,他们已经学过一门高级语言,如C/C++等,汇编语言的学习方式与高级语言的学习方式有所不同,高级语言比较容易上机练习,也容易对程序运行结果验证,对于开发实用软件也相对容易,所以学生的兴趣比较大。而汇编语言一方面涉及到底层的硬件概念,比较难以理解,另一方面上机也比较困难,可以这么说,如果按照课本的顺序讲课,要到差不多讲完课,学生才可以上机完成一个功能比较完整的程序。

2 促进学生对知识的掌握

要解决这些问题,我认为要在学生的知识掌握方式以及学习兴趣的培养上下功夫。对于知识的掌握,除了每次新课内容讲完后,精心给学生布置作业习题之外。还应该注意到由于汇编语言的指令及相关的知识点很多,对于刚接触这门课程的学生一开始往往不大适应,容易混淆前面学过的内容,所以教师及时对所学过知识点进行比较和总结就很有必要。此外还应该定期对学生的学习效果进行检测,从过去的教学经验看,汇编语言这门课程是学生比较容易与教师的教学进度脱离的一门课程,不少学生在一开始由于在掌握知识遇到困难,问题越积越多,最终可能放弃听课。在检测的方法上,可以借助网上考试系统。教师可以自主出题,也可以让系统自动出题。通过分析学生的测试结果,教师可以及时调整教学进度,学生也会有一定的学习压力,使他们花更多时间查补缺漏的知识。

程序设计学习的最佳方法就是上机实践。汇编语言上机练习跟高级语言的上机练习相比,对于学生来说比较困难。一方面是由于一个完整的汇编程序涉及的知识点很多,而教材往往按知识点分类进行编排。所以学生要想在刚开始学习阶段,就编出完整的程序有一定的难度。另一方面,汇编程序的运行结果较难在屏幕上输出,汇编语言只有字符与字符串的输入输出,对于一道简单的算术运算题目,其结果的输出都要通过一大段的转换程序来实现。对于第一个问题,教师可以对教材内容进行选讲,把实验所涉及到的知识点先进行讲解。对于第二个问题, 我认为应该重点培养学生熟练使用调试工具的能力,通过掌握调试工具如DEBUG,CV等的使用,一方面学生可以直接观察程序的运行结果,另一方面,对于程序的逻辑错误也可以进行跟踪、分析以及解决。此外,由于汇编语言作为一种低级语言,编程都由一条条指令进行构造,所以相对繁琐,应尽早让学生应用模块化思路,掌握子程序及宏的使用方法。这样把一些常用功能做成模块,如输入输出功能,以后学生在编程的时候就可以直接调用这些模块,从而专注于实验的其它方面。

3 提高学生的学习积极性

对于如何提高学生的学习兴趣,我认为主要让学生意识到汇编语言的作用。一方面可以引入一些接口技术相关内容,使学生熟练掌握中断的概念以及I/O指令,然后上机编写中断程序,在中断控制器(8259A)进行验证,由于这些实验有按键输入,有屏幕输出,还能直接看到程序控制设备的效果,所以学生兴趣会比较大。此外,教师也可以适当拓展一些知识,如嵌入式编程相关概念,有兴趣的同学可以在课后自主进行学习。另外,由于不少学生对硬盘相关的问题感兴趣,比如硬盘数据的存放方式,数据的修复等。可以引导学生对这些问题进行思考,然后通过汇编语言提供的I/O指令和中断子功能,编程实现对硬盘的MBR,文件分配表等数据结构的读取,备份,修复等功能。教师通过布置一些学生比较感兴趣的课外作业,并适当提供协助,往往能提高学生的学习积极性。

另外,在汇编语言的学习过程中,教师应该有意识引导学生将汇编语言与高级语言的各个对应的部分进行比较。学生在学习汇编语言之前,通常已经学过一门高级语言,如C/C++等。高级语言在编译的时候,一般是先转换成汇编代码,所以它们具有相通性。大部分学生编写应用程序的时候是用高级语言,所以通过比较分析高级语言与低级语言在数据定义,程序流程控制,函数的定义及调用等的对应部分内容,对于学生更好的使用高级语言编写程序是很有帮助的。比如:汇编语言里有分段的概念,一般把变量定义到数据段,把代码定义的代码段。而C语言是把数据与代码都定义在一起,那么C语言编写的程序在编译成可执行文件后,它的全局变量,局部变量的空间是如何分配的。另外,对于动态内存分配,堆与栈的区别在哪里。还有函数的定义与调用,参数的传递顺序是如何的?这些疑问,都可以让学生编写简单的C语言程序,生成可执行文件后,然后通过调试工具进行反汇编进行分析。此外,在利用VC++,Dephi等IDE开发工具进行程序编写时,都会用到里面的调试功能。基本上调试功能都会包括反汇编与内存查看的功能,教师可以引导学生进行这方面的训练,使他们在以后编程时能熟练应用这个工具解决一些疑难问题,例如:内存非法访问,指针的非法引用等。

4 Win32平台下的汇编语言教学思考

目前很多高校在汇编程序设计教学中讲解的是8088/8086 CPU实模式环境,实际上是虚拟8086模式,因为真正的实模式工作DOS下,而现在汇编语言实验环境都是在windows 2000以上。由于现在大部分CPU都是32位以上,并且是工作上保护模式之上,此外这些CPU的寄存器类型以及寻址方式都已经发生较大变化。所以教师有必要对实模式与保护模式在逻辑地址转化为物理地址的方式的差异,还有16位与32位的指令在用法的不同点进行重点讲解。因为汇编语言现在的实际应用基本上采用工作于保护模式的Win32平台,在Windows操作系统控制下,汇编语言虽然不能再直接存取硬件,但是能通过调用系统提供的API函数完成各种功能。其实这里的API函数当于DOS下的中断调用,但是Window API函数无论从数量上、功能上还是易用性上都大大超过了DOS或BIOS的中断调用功能。所以现在在Win32平台下,汇编语言就像高级语言一样,可以方便的开发各种Windows应用程序。有些教师认为,既然在实模式讲解汇编语言很少涉及实用性,那就应该直接迁移到Win32汇编平台,讲解用汇编语言开发的Windows应用程序设计实例,从而提高学生积极性。我认为如果采用这种教学方法,可能会存在以下问题:首先由于上课时间有限,学生需要大量的时间才能熟练掌握各类指令,汇编语言的语法,程序结构等方面的知识。如果过多涉及Windows程序设计实例,对于不熟悉Windows编程机制的学生的来说,又多了一个不小的学习负担,这样子反而影响了汇编语言基础知识的掌握。另外,DOS下的实模式与Window下的保护模式下的编程在本质上并无很大的区别,只要学生熟练掌握各类指令用法,理解16位与32位的指令及寻址方式的区别,逻辑地址与物理地址转换机制等知识,他们就可以通过自主学习,较容易的掌握用汇编语言进行Win32应用程序的开发。对于教师,除了帮学生打好汇编语言的基础,可以适当以课外作业的形式,引入一些汇编语言在不同应用领域的简单实例,如加密与解密,软件的逆向工程等,这些课外作业的完成对学生汇编语言的应用能力的提高将会有不小的帮助。

5 结束语

汇编语言难教难学是教师与学生的共识,但是作为计算机科学中一门低级程序设计语言,通过对它的良好掌握,确实可以促进对计算机软硬件底层的了解,而这又能促进编程能力的提高。作为教师,在教学中应该不断尝新的教学方法,不断积累经验,只有这样,才能把这门课上好。

参考文献:

程序编程范文5

关键词:排序;数组;noip

中图分类号:TP311.11 文献标识码:A文章编号:1007-9599 (2011) 19-0000-02

New Method for Sorting Programming

Dai Qidi

(Beiya Middle School in Changsha,Changsha410008,China)

Abstract:In order programming language is frequently encountered problems.This paper presents a new method of sorting-sort an array of flexible use of the method.This sort of approach with previous methods to compare their advantages are:program structure is simple,easy to understand,to save running time and space,for different types of problems can be sorted according to this paper,several different methods,you can simple and easy solution to the problem.

Keywords:Sorting;Array;Noip

一、前言

在多年的初中信息奥赛培训中发现,noip中很多题目都涉及到排序问题,遇到排序问题时想要拿满分就必须用快速的排序方法,但是对于大部分初中生以及初学者来说,要想理解和记住复杂的快速排序方法是比较困难的。因此应该寻找一种结构简单,思路不太复杂的方法来解决这类问题。常见排序问题大体可分为两类:1.需要稳定结果的排序;2.可以是一个不稳定排序的结果;为了解决这些排序问题,我们可以将排序所针对的数据进行分析确定这些数据的范围,如果数据的范围在允许的范围内,即可通过数组简单快的速解决排序问题。如果问题没用给出数据的范围(极少数问题)那就不一定能使用这种方法了。

二、常用排序说明

(一)直接插入排序。直接插入排序是稳定的。算法时间复杂度O(n2)--[n的平方]。(二)冒泡排序。冒泡排序是稳定的。算法时间复杂度O(n2)--[n的平方]。(三)快速排序。快速排序是不稳定的。最理想情况算法时间复杂度O(nlog2n),最坏O(n2)

三、利用数组快速排序的研究

首先来了解一下这个排序方法的思路:

先确定参与排序的元素个数为n,以及所有元素的范围,如:个数为100000,范围是0-2000;确定范围后就定义一个该宽度的数组a[2001]并初始化所有元素为0;然后在读取数据的同时将对应的数组元素进行累加;数据读完后实际上排序就已经完成了,只是相同的数据放在了一起,只需要将这些数据分开就可以了。

算法时间复杂度为数据宽度与数据量的和即n+x,如果数据宽度较小的话,这个时间复杂度就很低了;同时空间占用量也很小,一般的排序方法需要定义100000个元素的数组,这里只使用了2000个就解决了。

如果要求排序过程的稳定,则需要定义一个二维数组来解决,第一列来保存相同元素的个数,后面的n列保存元素的ID,这里假设同种元素的个数不超过100个,那么就可以通过定义数组a[2001][101]来解决问题了。

程序结构:略

可以发现在C语言中用这个方法排序时,如果碰到元素范围包含了负数是,数组就无法处理了,如元素范围为:-1000

现在我们用这个排序方法与比较复杂的快排进行比较,测试的工具是cena0.8.2,测试点3个,数据量都是100000个,数据范围是-1000到1000之间,稳定性不做要求,应为快排是不稳定的。

从上面的对比可以看出快排对于数据量较大的排序就处理不了了,一种是超时,应为快排的时间复杂度O(nlog2n),最坏O(n2),所以数据量较大时会超时,而数组的时间复杂度O(n+x),只要数据范围不超过C对数组下标范围的限制,数据量不超过百万级,数组排序是不会超时的。另一种是访问无效内存,数组定义过大造成的,由于C对数组大小的限制,快排以及其他排序要把数据都保留下载在进行排序,这样就会导致大的数据量无法保存或者占用大量空间,而数组排序的空间量只是数据范围的一个空间量,只要数据范围不超过数组下标,数据量再大都没什么问题了。

说了这么多数组排序的好处,当然数组排序法也有它不足的地方,当数据量较小,但是数据范围x又很宽的话数组排序的时间复杂度O(n+x)就不及其他排序的O(n2)或O(nlog2n)了;所以数据量较小(1000内)数据宽度较大(100000以上)时,推荐使用普通的排序发放就可以了,1000的数据量用冒泡就可以了。

四、解题应用举例

NOIP2007普及组第二题《纪念品分组》:

【题目描述】略。

初学学生拿到该题最开始以普通的冒泡做,有3个点超时,经过指点后使用数组做。

该程序测试点全部通过,只有一个点是0.03s,其他9点全是0.01通过。

五、结语

从以上的举例可以看出,只要熟练运用数组知识,将题目的问题和数据对象分析清楚就可以简单快速的解决与排序有关的很多问题了,这对程序的时间和空间的优化是很有帮助的。

参考文献:

程序编程范文6

关键词:螺纹; 宏程序; 循环功能; 参数化

中图分类号:TG62

文献标识码:A文章编号:16749944(2017)8024002

1引言

螺纹是机械零部件之间的主要连接方式,所以机械加工中螺纹的加工是非常重要的环节。

数控镗铣床设备上加工2400 t压力机滑块上的一组规格的螺纹,原有的加工方法存在一些弊端,除了对操作者的编程水平有一定要求外,加工效率也得不到提高,因此改进一种实用、简便的螺纹铣削方法对提高公司生产线生产效率具有重大意义。

公司数控M铣床班组加工该零件的多个规格螺纹时,手工编程要求操作者具备一定的编程水平,当更换不同规格的螺纹时就要重新编程,加工效率不高,对于简单的螺纹加工采用自动编程又不太适用。所以,上报设计部门后决定添加一种螺纹铣削“循环功能”。

2螺纹铣削工艺

螺纹铣削需要配合三轴以上联动机床,坐标系要在螺纹轴线与端面的交点处。采用数控镗铣床TK6920加工螺纹,选用单刃螺纹铣刀,铣削螺纹时螺纹的导程跟转速没关系,仅跟程序设定刀具的圈数和下刀距离有关系。转速和进给根据螺纹导程设置,转速高进给快,会因为切削力太大导致丝锥或板牙损坏。虽然转速慢进给慢在一定范围内能完成攻丝或套丝加工,但是转速也要限制在电机的实际使用扭矩范围内。

3问题的解决

首先利用宏程序加工标准右旋内螺纹M42×4.5,螺纹深度为50 mm,单刃螺纹铣刀半径13 mm。

为了安全起见,同时也为了确保螺纹深度为Z-50,通过计算可知:

50÷4.5=11余0.5(mm),

应考虑每次应距初始面一定高度开始加工,安全高度值可为:

h=p-0.5=4.5-0.5=4(mm)(1)

由于直螺纹特点(上下径线尺寸不变),这样就可确保经过11+1个循环后螺纹深度正好是50mm。

5结论

对螺纹铣削循环程序的生成,改进了传统铣削螺纹加工的方式,操作者能够简单、快速地解决加工不同规格螺纹铣削的问题。

值得肯定的是在此螺纹循环程序中涉及的计算多为基本的计算,对于新培训上岗的操作工也能完成操作。降低了编程难度,具有方便、快捷、浅显易懂的特点。刚好契合了参数化编程的理念,有利于节省人力成本。同时能满足在产品多样性情况下提高螺纹加工的生产效率的要求,直接为企业降低生产成本,提高企业的效益。

参考文献:

[1]

梅艳波.螺纹加工方法研究[J].长江大学学报,2009(1):279~280.

[2]刘明玺. 西门子系统数控车床螺纹加工参数化编程方法探究[J].电子测试,2013(23).

[3]刘金文. 浅析加工中心铣削螺纹的加工方法[J].数字技术与应用,2012(4) .

[4]李庆余. 机械制造装备设计[M].北京:机械工业出版社,2008.

[5]孙本绪. 机械加工余量手册[M].北京:国防工业出版社, 1999.

[6]艾兴,肖诗纲.切削用量简明手册[M].3版.北京:机械工业出版社,1994.

[7]陈国文,马芳薇,周瑜. 宏程序在螺纹铣削快速编程中的应用[J]. 金属加工(冷加工),2015(16):20~21.

[8]乔龙阳. 基于宏程序的螺纹数控铣削功能开发[J]. 机械研究与应用,2014(1):181~183.

[9]钟如全. 铣削螺纹固定循环指令的开发[J]. 组合机床与自动化加工技术,2013(10):121~122,126.

[10]刘玉春. 基于FANUC宏程序的螺纹铣削加工编程应用[J]. 金属加工(冷加工),2013(13):46~48.

[11]杨辉,万海鑫,张宣升. 基于螺纹铣削数控宏程序的优化设计[J]. 制造业自动化,2012(21):26~29,39.

[12]戴冠林. 基于MasterCAM 9.1的螺纹铣削工艺分析与编程[J]. 机械,2010(8):66~68.

上一篇环保督查

下一篇威武的盾牌