人人范文网 工作计划

编程工作计划(精选多篇)

发布时间:2020-04-05 08:38:14 来源:工作计划 收藏本文 下载本文 手机版

推荐第1篇:微机编程

DATA SEGMENT

STRING DB \'A,c,d,B,e,H,f\' LEN EQU $-STRING

BUF DB 7 DUP (?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV AX,DATA

MOV DS,AX

LEA SI,STRING

MOV CX,LEN

LEA DI,BUF

LOOP:

MOV AL,[SI]

CMP SI,60H

JA NEXT

DEC CX

INC SI

CMP CX,0

JNZ LOOP

NEXT:

SUB AL,20H

MOV [DI],AL

INC DI

MOV AH,4CH

INT 21H

CODE ENDS

END START

推荐第2篇:学习编程

当你能自如的运用数据结构和算法、TCP/IP原理、编译原理、操作系统原理、数据库以及Win32 API 调用、构造自己的C++库(网络库、数学库、测试库、图形库)以及各种引擎,出去毕业应该能在短短半年时间里薪水至少有7000以上甚至上万吧(其实毕业生出去95%以上可能没达到这个水平)。

其实也不用说太多,你问你自己几个问题,如果你都能做到或者学习半到2个月就能做到,那肯定是达标了:

1、我能用C++做出2D的RPG游戏吗?(C++与api或框架的结合运用能力)

2、我能用C++通过3种以上的方法写出四则运算表达式分析器吗?(C++与数据结构、算法的结合能力)

3、我能用C++写出类似STL的简化版的库吗?(库与框架设计能力与C++高级语法运用能力的结合)

补充:

①、你能这么问,说明你知道编程能力对IT行业高薪工作的重要性是至关重要的。②、你的目的性已较强(知道要深入下去),但是你也想有更加明确的目标,我可以给你讲一下怎么自己去寻找目标和路线以及怎样学习。

③、计算机专业领域一共有几个大方向,十几个分支方向,而每个分支方向又有几十个小方向,每一个方向的深入学习与熟练到一定火候都不是一朝一夕,互相之间也不是完全没联系的,但是你现在就应该选择一个大方向并在其中的一个小方向内深入(为什么要这么早就选择具体的分支方向?后面说)。

④、这里列出计算机的几个大方向(非编程开发类的我就不说了):

基本方向:

1、单片机、嵌入式方向

2、网络编程:涉及到服务器程序、客户端开发、脚本设计等。

3、系统编程:基础API开发、桌面开发、系统程序开发、服务程序

4、图形学:3D、2D、图像识别、人脸识别

5、音频:语音识别、音频解码、音频软件

6、编译原理:编译器设计、脚本解释器、虚拟机、非自然语言翻译系统

7、应用层开发:利用高层语言去开发表层应用

8、安全:反工程、病毒、反病毒、木马、反木马、软件破解、软件加壳

附加方向:

8、人工智能:遗传算法、神经网络、灰色系统等等

9、游戏设计:各种游戏引擎设计以及业务逻辑设计等

⑤、基本方向是你一定要选的,附加方向只是基于基本方向的一些锦上添花,但是不管你怎么选,最开始某些东西一定要深入而不是只是懂就够(当然你对自己要求似乎不会很低),我把这个列出来:

数据结构:下面其他理论的基础。

操作系统原理:理解操作系统的架构和细节,你才能对以后关于多线程、文件管理、内存管理、指令优先级等有一个正确理解和运用。

编译原理:能够升华你对计算机编程语言的理解,对以后出现的各种编译、解释、兼容、移植、优化、并发与并行算法等有一个深入理解。

数据库系统原理:这个是进入公司都要会的,也是大型软件开发的基础。

软件工程:这个是你能够在经验不足还能保证大项目正常完成的理论基础。

网络技术:这个是必须学的,因为目前几乎没有一款装几率很高的软件或者平台跟网络无关。

数学的话,主要是:离散数学、线性代数、高等数学、计算机图形学、概率论

以上几个基础就是你成为一个融汇各个主要分支牛人必须学的(当然不是指理论,而是理论+实践编码能力)

⑥以上都是大的基础,要一一攻破并深入学习,虽然网络时代计算机专业知识爆炸式的增长,但是以上几个基础掌握后,会发现,以后的什么新的理论和技术都是基于这些大基础,你就很容易理解了。

⑦我为什么开头不讲你要具体学什么怎么顺序学呢?因为那些技术你要掌握的话,根本可以自己解决,但是如果你由于兴趣,沉迷于一些自己可见的小范围技术的话,那么毕业后虽然也能找到不错的工作,薪水也可能高,但是不能成为一个大牛现在才开始讲学习顺序,虽然你说不要推荐书,不过我还是要用书来做顺序。

C语言是可以写很多核心和高级的东西,而不只是小东西,但是从你代码来看,居然用到了 goto,我不是说你那些程序用到GOTO有什么不好,而是一定要避免用GOTO,goto是错误之源,如果你有什么内容非要用到goto才能写到,说明你的编码技巧还有不少提高空间。

你的学习顺序应该是:

C:做一个超级马里奥出来,并能够读取文本脚本来更新关卡。

C++:写一个2D图形引擎,封装掉细节,实现面向对象设计和可复用设计,并且用到《设计模式》中提到的一些设计模式,这样才能算对C++有一个很好的掌握。

MFC:MFC技术虽然近期已经冷下来了,但是你能熟练掌握它,才能证明你的C++OO技术够纯熟,严格证明你掌握了MFC很简单,你只要用MFC做出一个杀毒引擎就差不多了。推荐的书有《深入浅出MFC》。

《Windows程序设计》:和MFC不同的是,用的是windows核心SDK,也就是API,这本书学完后,你才能从操作系统层面上算掌握了win32平台下的机理(其实win64和win32大部分机理类似)。

C#:C#里**了当代和前沿计算机科学里最先进的一些语法(虽然执行效率一直被人质疑),但是你学完C#并深入后,至少能够算是对计算机语言有一个更加深刻的理解了。如何证明你C#学的不错了?也很简单,再次写一个随便什么游戏,比如俄罗斯方块。如果更加证明自己呢?用它写一个P2P网络对战游戏。

(如果你注意的话,会发现我说的学习顺序都是沿着语言和某些技术的,为什么呢?因为这些语言和技术涉及到特定的领域技术和计算机理论思想,比如【真正】学完了C#的话,就不单指学完了C#,而是把多种语言范式都学习了一遍,以及现代的程序开发思维(因为里面用到了很多让你一劳永逸的技术))

以上5个步骤都是基础大步骤,要解决的话要没1-2年应该不够。

与此同时,要尽快选出文中你感兴趣的方向作为3-5年的长期方向,不要担心过早选择分支方向会有什么损失,因为计算机很多分支是相通的,只有你把分支方向深入进去,才能真正理解很多理论的实践意义。并且一旦你在某个分支领域形成了较强的优势(比如,到公司里只有你这方面最强),那么你就是稀缺人才。

关于大方向的步骤就不说了,你主要就是要把我说的这几个基础步骤先解决,同时平时要注重大方向理论结合实际去编码和开发。

如果只是看了一本经典的C++教材,基本上也就只能做一个基于控制台的的“图书管理系统或者类似而的东西”,而真正需要的东西往往总是与一些其它东西结合的。

比如如果要做一个Windows程序员,首先肯定要会开发Windows下的GUI程序,这就涉及了两个常用工具――MFC和.net framework。关于MFC有两本经典的书,候俊杰的《深入浅出MFC》和孙鑫的另外一本,如果要学习.net framework,那么不妨顺便学习一下C#,

经典书籍无疑是《C#入门经典》。顺便说一下,有了C++的基础,C#的语言部分基本上两三天就能熟悉了。

Windows程序员如果要对操作系统更加的熟悉,肯定还要了解Win32 API。无论是MFC还是VB、.net framework其本质都是对API的封装,在对API的了解过程中,可以更深刻的理解Windows的运行机制。这里推荐的无疑是《Windows核心编程》

如果需要开发Windows平台下比较底层的程序,比如RamDisk、杀毒软件、防火墙等,那么就又有两个必学的课题了。一个是Win32汇编,一个是基于C/C++的驱动程序编写。Win32汇编的书无疑就是罗云彬的《琢石成器》,而驱动程序的书实在是太少了,将WDM的书可能还有一两本算是经典,WDF就是开玩笑了。

如果要用C++开发Windows下的游戏,那么DirectX无疑是一个必学项目。

如果要用C++开发嵌入式系统,那么当然要看看单片机和ARM的书籍了(顺便说一下,单片机程序基本上都用汇编或者C语言来写)

如果是编写用于Linux的GUI程序,那么就有必要了解几个流行的GUI库。QT、GTK+、wxWidgets是其中最优秀的几个。顺便说一下,QT还是跨平台的,一次编写,然后就可以编译到Linux、Windows、Mac不同的系统中。关于QT的书这里推荐《C++ GUI Qt4 编程》,官方教材。

如果是编写涉及网络的程序,比如说类似eMule这样涉及应用层协议的东西,那么首先学习一下网络的基本知识是很必要的,这里推荐的是《计算机网络:自顶向下方法》最后再加一些比较根本的东西:算法。算法始终是软件的灵魂,经典教材有《算法导论》和《具体数学》等

C++的高级技巧。一般的C++通用教材不会涉及的,而在实践中又会遇到的某些很别扭的、比较难回答的问题。这类涉及C++高级技巧的书,最经典的无疑是《Effective C++》,另外关于C语言的《C陷阱和缺陷》、《C专家编程》也不错。

______________________网摘

推荐第3篇:shell编程

shell的作用: 是一个软件, 一个cli, 一门解释型的面向过程的程序设计语言

shell如何解析一个完整的命令行? 命令行的处理过程如下:

1.历史命令替换

2.命令行拆分为token(单词)(以空格或tab隔开, 即以空白隔开)

3.历史更新

4.处理引用

5.定义别名替换和函数

6.建立重定向、后台、管道

7.变量替换($USER、$NUM等)

8.命令替换(echo \"abc `date` def\")

9.文件名替换(*.conf ->a.conf b.conf)

10.程序执行(内部命令、外部命令、shell脚本等)

一个命令行在执行之前, shell先将其参数进行替换(解析、扩展)

如将变量替换、命令替换、文件名替换, 最后才执行命令

对二进制程序它解析不了, 它解析的是程序执行之前命令行中的参数

推荐第4篇:编程心得

1. 对于液晶点阵,做任何图形的子函数,一定要注意,必须为整数,即像素必须为整数,

否则将出现错误,比如划三角形,必须让三角形的斜率为直线,不然不能得到预期的结果。

2. 对于变量的定义,如果在条件语句里面必须放在语句最前面,如果在整个函数的里面,

必须放在整个函数的最前面。

3. GDB来调试已经生成的可执行程序hello.命令如下:Gdbhello ,参数-d指示源代码所

在的目录去搜寻。一旦出现GDB的命令提示符(gdb),就表明GDB已经准备好接收来自用户的各种调试命令了。如果想在调试环境下运行这个程序,可以使用GDB提供的“run”命令,而程序在正常运行时所需的各种参数可以作为“run”命令的参数传入,或者使用单独的“set args”命令进行设置。如果在执行“run”命令时没有给出任何参数,GDB将使用上一次“run”或“set args”命令指定的参数。如果想取消上次设置的参数,可以执行不带任何参数的“set args”命令。

GDB是一个源代码级的调试器,使用“list”命令可以查看当前调试对象的源代码。该命令的通用格式为“list [m,n]”,表示显示从m行开始到n行结束的代码段,而不带任何参数的“list”命令将显示最近10行源代码。

要根据行号设置断点,可以使用“ break linenum”命令。要根据函数名设置断点,则应该使用“break funcname”命令。

条件断点允许当一定条件满足时暂时停止程序的执行。它对于调试来讲非常有用。设置条件断点的正确语法如下:

break linenum if expr

break funcname if expr

使用“continue”命令继续执行程序,直到遇到下一个断点。如果在调试时设置了很多断点,可以随时使用“info breakpoints”命令来查看设置的断点。此外,开发人员还可以使用“delete”命令删除断点,或者使用“disable”命令来使设置的断点暂时无效。被设置为无效的断点在需要的时候可以用“enable”命令使其重新生效。

为了单步跟踪代码,可以使用单步跟踪命令“step”,它每次执行源代码中的一行。

4、程序调试过程中,如果出现segment,一般来说是指针没有赋值,找不到原型。比如线程里面如果要调用screen_mm,那么必须传递参数screen_mm,而且需要在线程里面定义参数。

5、如果线程里面用到串口的操作,则最好把串口初始化程序放到线程里面进行。也可以把初始化作成模块,这样不会影响串口的收发数据。如果将串口初始化放到主程序里面,则最后将初始化程序放在线程的属性定义和建立线程之前,否则其他地方可能导致串口收发数据产生问题。还有对于串口操作的定义最好放在所有变量定义的最前面。

6、对于段错误这种问题。可以分析以下原因:

(1):指针非法,比如使用没有初始化的指针(没有为此指针指向的对象分配空间),或着Free掉之后再次使用。

(2):数组访问越界,访问的元素下标超过数组围长

(3):缓存溢出,对于这种while(1) {do}的程序,这个问题最容易发生,多此sprintf或着strcat有可能将某个

buff填满,溢出,所以每次使用前,最好memset一下,不过要是一开始就是段错误,而不是运行了一会儿出现的,(3)的可能性就比较小。

推荐第5篇:编程经验

1.当性能遇到问题时,如果能在应用层进行计算和处理,那就把它从数据库层拿出来。

序和分组就是典型的例子。在应用层做性能提升总是要比在数据库层容易的多。就像对于MySQL,sqlite更容易掌控。

2.关于并行计算,如果能避免就尽量避免。如果无法避免,记住,能力越大,责任越大。

如果有可能,尽量避免直接对线程操作。尽可能在更高的抽象层上操作。例如,在iOS中,GCD,分发和队列操作是你的好朋友。人类的大脑没有被设计成用来分析那些无穷临时状态——这是我的惨痛教训所得。

3.尽可能简化状态,尽可能局部本地化,适用至上。

4.短小可组合的方法是你的好朋友。

5.代码注释是危险的,因为它们很容易更新不及时或给人误导,但这不能成为不写注释的

理由。不要注释鸡毛蒜皮的事情,但如果需要,在某些特殊地方,战略性的长篇注释是需要的。你的记忆会背叛你,也许会在明天早上,也许会在一杯咖啡后。

6.如果你认为一个用例场景也许“不会有问题吧”,它也许就是一个月后让你在发布的产品

中遭受惨痛失败的地方。做一个怀疑主义者,测试,验证。

7.有疑问时,和团队中所有相关人交流。

8.做正确的事情——你通常会知道这指的是什么。

9.你的用户并不傻,他们只是没有耐心理解你的捷径。

10.如果一个开发人员没有被安排长期的维护你们开发的系统,对他保持警惕。80%的血、

汗、泪水都是在软件发布后的时间里流的——那时你会变成一个厌世者,但也是更聪明的“行家”。

11.任务清单是你的好朋友。

12.主动让你的工作更有乐趣,有时这需要你付出努力。

13.悄无声息的崩溃,我仍然会为此从噩梦中惊醒。监控,日志,警报。清楚各种的假警报

和不可避免的感觉钝化。保持你的系统对故障的敏感和及时警报。

14.复杂是大敌。

推荐第6篇:编程小结

编程小结

(一)

一.累加:加数1+加数2+加数3+„„+加数n (n个加数相加) 假设我们用i表示我们的加数数目,例如:当i=9时,就表示加数9 模版:int i,sum=0; (注意:如果是分数或者小数sum就是float类型)

for(i=1;i

可能是i--,或者i+=2等等) {通项a; (通项:用一个通用的式子表示所有的加数) sum+=a; } printf(“%d”,sum); (注意:如果是float类型就是%f)

1、求1+2+3„„+100的和,则通项a就是i。

分析:因为a就是i的值,所以这里不需要通项这一行了,因此整个大括号中间就只有一句话,所以大括号可以省略。整理之后就是: int i,sum=0; for(i=1;i

2、求2+4+6„„+100的和。

分析:因为a就是i的值,所以这里不需要通项这一行了,因此整个大括号中间就只有一句话,所以大括号可以省略,再分析,再分析我们发现每个加数都是偶数,那么i的变化就是i+=2,并且i是从2开始变化,那么在赋值的时候就应该是i=2。整理之后就是: int i,sum=0; for(i=2;i

3、求1+3+5„„+99的和。

分析:因为a就是i的值,所以这里不需要通项这一行了,因此整个大括号中间就只有一句话,所以大括号可以省略,再分析,再分析我们发现每个加数都是奇数,那么i的变化就是i+=2。整理之后就是: int i,sum=0; for(i=1;i

4、求1+5+9+13+17+„„的前100项的和,则通项为j+4,则程序为: int i,sum=0,j=1; for(i=1;i

5、求1+4+9+16+„„的前100项的和

分析可知:每个加数就是对应的加数数目的平方,则通项为i*i,则程序为: int i,sum=0; for(i=1;i

6、求1+(1+2)+(1+2+3)+(1+2+3+4)+„„的前100项的和。

分析可知每一个加数本身又是一个累加的式子,进一步观察可以发现,每个累加的式子都是加到这个加数所在的加数数目,即第35个加数就是1+2+3„„+35,并且是在前面一个加数的基础上加上这个加数所在的加数数目,也就是说第36个加数就是在前一个加数的基础上加上36,即:1+2+3„„+35+36。假设第k个加数是j,那么第k+1个加数就可以表示为j+(k+1),然后第k+2个加数就是j+(k+1)+(k+2)„„那么我们的通项就可以表示为a=a+i,则程序为: int i,sum=0, a=0; for(i=1;i

7、求1+1+2+3+5+8+13+21+„„的前100项的和。

分析可知从第三个加数开始,每一个加数是其前两个加数之和,假设第k个加数是m,第k+1个加数是n,然后第k+2个加数就是m+n,那么我们的通项就可以表示为a=m+n,但是要注意每次加数所对应的m和n不一样,所以我们要在求出每个加数之后,找出其对应的m和n;再分析我们可以发现当前的n是下一次的m,当前的加数a是下一次的n,假设接着上面的推导,那么第k+3个加数就是n+(m+n),对应我们的通项a=m+n,理解前面一句话。则程序为: int i,sum=0, m=1,n=1,a; for(i=3;i

8、求1+1/2+1/3+„„+1/100 分析可知每一个加数就是我们的加数数目的倒数,则通项a就是1/i,我们说循环变量i一般定义为整型,那么1/i的结果就是整型,这样的话小数点后面的就会被省略,所以正确的应该写为a=1.0/i,则程序为:

int i; float sum=0; for(i=1;i

9、求1+1/2+2/3+3/5+5/8+„„的前100项的和。

分析可从第三个加数开始观察,每一个加数的分母是其前一个加数的分子和分母之和,每一个加数的分子是其前一个加数的分母。可以将第一个加数看成1/1,那么第二个加数也符合我们的规律,只有第一个不符合,那么我们可以先将第一个加数加到sum,然后再变下一个加数,但是要注意每次加数所对应的分子和分母不一样,所以我们要在求出每个加数之后,找出下一个加数所对应的分子和分母。设通项表示为a=m/n, 那么下一个加数是n/(m+n),然后下下一个加数就是(m+n)/(m+n+n);再分析我们可以发现当前的分子和分母之和(m+n)是下一次的分母n,当前的分母n是下一次的分子m,注意这里在做数据交换的时候需要中间变量,对应我们的通项a=m/n,理解前面一句话。则程序为: int i; float sum=0, m=1,n=1,t; for(i=1;i

二.累乘:乘数1*乘数2*乘数3*„„*乘数n (n个乘数相乘) 假设我们用i表示我们的乘数数目,例如:当i=9时,就表示乘数9 模版:int i,sum=1; (注意:如果是分数或者小数sum就是float类型)

for(i=1;i

可能是i--,或者i+=2等等) {通项a; (通项:用一个通用的式子表示所有的乘数) sum*=a; } printf(“%d”,sum); (注意:如果是float类型就是%f)

1、求1*2*3„„*100的积,则通项a就是i。

分析:因为a就是i的值,所以这里不需要通项这一行了,因此整个大括号中间就只有一句话,所以大括号可以省略。整理之后就是: int i,sum=1; for(i=1;i

2、求2*4*6„„*100的和。分析:因为a就是i的值,所以这里不需要通项这一行了,因此整个大括号中间就只有一句话,所以大括号可以省略,再分析,再分析我们发现每个乘数都是偶数,那么i的变化就是i+=2,并且i是从2开始变化,那么在赋值的时候就应该是i=2。整理之后就是: int i,sum=1; for(i=2;i

3、求1*3*5„„*99的和。

分析:因为a就是i的值,所以这里不需要通项这一行了,因此整个大括号中间就只有一句话,所以大括号可以省略,再分析,再分析我们发现每个乘数都是奇数,那么i的变化就是i+=2。整理之后就是: int i,sum=1; for(i=1;i

4、求1*5*9*13*17*„„的前100项的积,则通项为j*4,则程序为: 分析:因为乘数的第一项是1,所以赋初值的时候j=1,然后乘数进行变化,变成5乘到sum里面,所以这里要将通项和求积这两句话互换位置。

int i,sum=1,j=1; for(i=1;i

5、求1*4*9*16*„„的前100项的积

分析可知:每个乘数就是对应的乘数数目的平方,则通项为i*i,则程序为: int i,sum=1; for(i=1;i

6、求1*(1*2)*(1*2*3)*(1*2*3*4)*„„的前100项的积。分析可知每一个乘数本身又是一个累乘的式子,进一步观察可以发现,每个累乘的式子都是乘到这个乘数所在的乘数数目,即第35个乘数就是1*2*3„„*35,并且是在前面一个乘数的基础上乘上这个乘数所在的乘数数目,也就是说第36个乘数就是在前一个乘数的基础上乘上36,即:1*2*3„„*35*36。假设第k个乘数是j,那么第k+1个乘数就可以表示为j*(k+1),然后第k+2个乘数就是j*(k+1)*(k+2)„„那么我们的通项就可以表示为a=a*i,则程序为: int i,sum=1, a=0; for(i=1;i

7、求1*1*2*3*5*8*13*21*„„的前100项的积。

分析可知从第三个乘数开始,每一个乘数是其前两个乘数之和,假设第k个乘数是m,第k+1个乘数是n,然后第k+2个乘数就是m+n,那么我们的通项就可以表示为a=m+n,但是要注意每次乘数所对应的m和n不一样,所以我们要在求出每个乘数之后,找出其对应的m和n;再分析我们可以发现当前的n是下一次的m,当前的乘数a是下一次的n,假设接着上面的推导,那么第k+3个乘数就是n*(m+n),对应我们的通项a=m*n,理解前面一句话。则程序为: int i,sum=1, m=1,n=1,a; for(i=3;i

8、求1*1/2*1/3*„„*1/100 分析可知每一个乘数就是我们的乘数数目的倒数,则通项a就是1/i,我们说循环变量i一般定义为整型,那么1/i的结果就是整型,这样的话小数点后面的就会被省略,所以正确的应该写为a=1.0/i,则程序为:

int i; float sum=1; for(i=1;i

9、求1*1/2*2/3*3/5*5/8*„„的前100项的积。

分析可从第三个乘数开始观察,每一个乘数的分母是其前一个乘数的分子和分母之和,每一个乘数的分子是其前一个乘数的分母。可以将第一个乘数看成1/1,那么第二个乘数也符合我们的规律,只有第一个不符合,那么我们可以先将第一个乘数乘到sum,然后再变下一个乘数,但是要注意每次乘数所对应的分子和分母不一样,所以我们要在求出每个乘数之后,找出下一个乘数所对应的分子和分母。设通项表示为a=m/n, 那么下一个乘数是n/(m+n),然后下下一个乘数就是(m+n)/(m+n+n);再分析我们可以发现当前的分子和分母之和(m+n)是下一次的分母n,当前的分母n是下一次的分子m,注意这里在做数据交换的时候需要中间变量,对应我们的通项a=m/n,理解前面一句话。则程序为: int i; float sum=1, m=1,n=1,t; for(i=1;i

10、求1+(1*2)+(1*2*3)+(1*2*3*4)+„„的前100项的和。

分析可知每一个加数本身是一个累乘的式子,进一步观察可以发现,每个累乘的式子都是乘到这个乘数所在的乘数数目,即第35个乘数就是1*2*3„„*35,并且是在前面一个乘数的基础上乘上这个乘数所在的乘数数目,也就是说第36个乘数就是在前一个乘数的基础上乘上36,即:1*2*3„„*35*36。假设第k个乘数是j,那么第k+1个乘数就可以表示为j*(k+1),然后第k+2个乘数就是j*(k+1)*(k+2)„„那么我们的通项就可以表示为a=a*i,再利用累加的模版,则程序为:

int i,sum=0, a=1; for(i=1;i

11、求1*(1+2)*(1+2+3)*(1+2+3+4)*„„的前100项的积。

分析可知每一个乘数本身又是一个累加的式子,进一步观察可以发现,每个累加的式子都是加到这个乘数所在的乘数数目,即第35个乘数就是1+2+3„„+35,并且是在前面一个乘数的基础上加上这个乘数所在的乘数数目,也就是说第36个乘数就是在前一个乘数的基础上加上36,即:1+2+3„„+35+36。假设第k个乘数是j,那么第k+1个乘数就可以表示为j+(k+1),然后第k+2个乘数就是j+(k+1)+(k+2)„„那么我们的通项就可以表示为a=a+i, 再利用累乘的模版,则程序为:

int i,sum=1, a=0; for(i=1;i

三.最大值和最小值:数字0,数字1,数字2,„„数字n-1(一共n个数字) 假设我们用i表示我们的数字所在的位置,并且第一个位置是0,例如:当i=9时,就表示这个数字在第10个位子

模版: int i,max,a[n]; (注意:如果是分数或者小数max和a[n]就是float

类型,注意这里定义的时候根据题目所给的具体数字把n换掉,千万不可以写a[n]o哦~~~~)

for(i=0;i

了数字,就在定义的时候直接赋值,这个循环就不需要了;如果要求产生给数组赋a到b之间的随机数,那么就用a[i]= a + rand()% (b-a);这句话代替这句。注意如果是float类型就是%f) max=a[0]; for(i=0;i”) max=a[i]; } printf(“%d”, max); (注意:如果是float类型就是%f)

1、求20个数字的最大值和最小值,要求赋1到100之间的随机数,并且输出它们及其下标。

分析:因为这里还要输出其下标,所以还有定义一个row来存放,并且要对其赋值为0,因为我们给max赋值为a[0],则程序为:

int i,max,min,a[20],row1=0,row2=0; for(i=0;ia[i]) (这里是找出最小值) { min=a[i]; row2=i; } } printf(“max =%d, row=%d\\n min =%d, row=%d\\n”, max,row1,min,row2);

2、求4*5矩阵的最大值和最小值,要求赋值随机数,并且输出它们及其下标。分析:虽然这是一个二维的数组,但是其思路仍然和一维数组的一样,区别只是这里需要用嵌套循环。要求还要输出其下标,二维数组的下标是两个,所以还要定义一个row和一个col来存放,并且要对它们赋值为0,因为我们给max赋值为a[0] [0],则程序为:

int i,j,max,min,a[4] [5],row1=0,row2=0,col1=0,col2=0; for(i=0;ia[i] [j]) (这里是找出最小值) { min=a[i] [j]; row2=i; col2=j; } } printf(“max =%d, row=%d, col=%d \\n min =%d, row=%d, col=%d \\n”, max,row1, col1, min,row2, col2);

3、求4*5矩阵的每一行最大值和最小值,要求赋值随机数,并且输出它们及其下标。

分析:虽然这是一个二维的数组,但是要求的是每一行的最大最小值,我们知道二维数组的每一行本身就是一个数组,那么我们就还需要一个控制行数的循环。要求还要输出其下标,二维数组的下标是两个,每一行的最大最小值其行号不就是i,所以还要定义一个存放列号的col,并且要对它赋值为0,因为我们给max赋值为每一行的第一个元素,也就是a[i] [0],则程序为: int i,j,max,min,a[4] [5],col1=0,col2=0; for(i=0;i

一维数组的最大最小值的程序)

{max=a[i] [0]; min=a[i] [0]; for(j=0;ja[i] [j]) (这里是找出最小值) { min=a[i] [j]; col2=j; } } printf(“max =%d, row=%d, col=%d \\n min =%d, row=%d, col=%d \\n”,

max,i, col1, min,i, col2); }

4、求4*5矩阵的每一列最大值和最小值,要求赋值随机数,并且输出它们及其下标。

分析:虽然这是一个二维的数组,但是要求的是每一列的最大最小值,二维数组的每一列可以看成一个数组,那么我们就还需要一个控制列数的循环。要求还要输出其下标,二维数组的下标是两个,每一列的最大最小值其列号不就是j,所以还要定义一个存放行号的row,并且要对它赋值为0,因为我们给max赋值为每一列的第一个元素,也就是a[0] [j],则程序为: int i,j,max,min,a[4] [5],row1=0,row2=0; for(i=0;i

一维数组的最大最小值的程序) {max=a[0] [j]; min=a[0] [j]; for(i=0;ia[i] [j]) (这里是找出最小值) { min=a[i] [j]; row2=i; } } printf(“max =%d, row=%d, col=%d \\n min =%d, row=%d, col=%d \\n”,

max, row1,j, min, row2,j); }

5、排序(冒泡法) 比如说 对于5个数字排序,首先要把5个数字放到一个一维的数组里面去 所以编程的前几句为:int a[5]

for(i=0;i

那接下来就是排序了,为了方便理解就将数组实际化:比如 a[5]里面放着{7,9,0,12,3}那画图出来就是

a[5]

a[0]

a[1]

a[2]

a[3]

a[4] 那我们排序的方法是这样的采用这样几步:

1,用a[0]与后面的(a[1]~a[4]里面的每一个成员比较即是说:a[0]~a[1]比较

a[0]~a[2]比较 a[0]~a[3]比较 a[0]~a[4]比较 )当后面的成员只要发现比a[0]小的就与他的位置交换 这部做完之后数组就应 该是这个样子:

a[0]

a[1]

a[2]

a[3]

a[4] 2,用a[1]与后面的(a[2]~a[4]里面的每一个成员比较即是说: a[1]~a[2]比较

a[1]~a[3]比较 a[1]~a[4]比较 )当后面的成员只要发现比a[1]小的就与他的位置交换 这部做完之后数 组该是这个样子:这个时候的a1不是我们赋初值时候的a1老就是我们改变后的数组所以这个时候的a1=9哦。

a[0]

a[1]

a[2]

a[3]

a[4] 3,用a[2]与后面的(a[3]~a[4]里面的每一个成员比较即是说: a[2]~a[3]比较

a[2]~a[4]比较 )当后面的成员只要发现比a[2]小的就与他的位置交换 这部做完之后数组就应 该是这个样子:

a[0]

a[1]

a[2]

a[3]

a[4] 4,用a[3]与后面的(a[4]~a[4]里面的每一个成员比较即是说: a[3]~a[4]比较 )当后面的成员只要发现比a[2]小的就与他的位置交换 这部做完之后数组就应 该是这个样子:

a[0]

a[1]

a[2]

a[3]

a[4] 循环就是 写成这个样子的哦:

for(i=0;i

for(j=i+1;j

{c=a[i];a[i]=a[j];a[j]=c;} (这个复合语句表示交换a[i]与a[j]进行交换)你把这个 循环好好的分析一下,当i=0 j可以取(1 2 3 4) 那if是不是就是a0跟a1—a4之间的所有进行比较并且交换。其他的以此类推。

最后是不是要对排好序的数组进行输出:

for(i=0;i

6、排序(选择法) 比如说 对于5个数字排序,首先要把5个数字放到一个一维的数组里面去 所以编程的前几句为:int a[5]

for(i=0;i

那接下来就是排序了,为了方便理解就将数组实际化:比如 a[5]里面放着{7,9,0,12,3}那画图出来就是

a[5]

a[0]

a[1]

a[2]

a[3]

a[4] 那我们排序的方法是这样的采用这样几步:

1,先把a[0]的下标储存起来,即赋值给k,然后用a[0]与后面的比较

(a[1]~a[4]里面的每一个成员比较即是说:a[0]~a[1]比较 a[0]~a[2]比较 a[0]~a[3]比较 a[0]~a[4]比较)当后面的成员只要发现比a[0]小的就把他的下标赋值给k,最后将a[0]和a[k]的位置交换,这步做完之后数组就应该是这个样子:

a[0]

a[1]

a[2]

a[3]

a[4] 2,先把a[1]的下标储存起来,即赋值给k,然后用a[1]与后面的比较

(a[2]~a[4]里面的每一个成员比较即是说: a[1]~a[2]比较 a[1]~a[3]比较 a[1]~a[4]比较)当后面的成员只要发现比a[1]小的就把他的下标赋值给k,最后将a[1]和a[k]的位置交换 这步做完之后数组就应该是这个样子:

a[0]

a[1]

a[2]

a[3]

a[4] 3,先把a[2]的下标储存起来,即赋值给k,然后用a[2]与后面的比较

(a[3]~a[4]里面的每一个成员比较即是说:a[2]~a[3]比较 a[2]~a[4]比较)当后面的成员只要发现比a[2]小的就把他的下标赋值给k,最后将a[2]和a[k]的位置交换 这步做完之后数组就应该是这个样子:

a[0]

a[1]

a[2]

a[3]

a[4]

4,先把a[3]的下标储存起来,即赋值给k,然后用a[3]与后面的比较 (a[4]里面的每一个成员比较即是说: a[3]~a[4]比较)当后面的成员只要发现比a[3]小的就把他的下标赋值给k,最后将a[3]和a[k]的位置交换 这步做完之后数组就应该是这个样子:

a[0]

a[1]

a[2]

a[3]

a[4]

循环就是 写成这个样子的哦:

for(i=0;i

{k=i; for(j=i+1;j

if(a[i]

k=j; if(k!=i)

{c=a[i];a[i]=a[j];a[j]=c;} }(这个复合语句表示交换a[i]与a[j]进行交换) 把这个循环好好的分析一下,当i=0, j可以取(1 2 3 4) 那if是不是就是a0跟a1—a4之间的所有进行比较并且交换。其他的以此类推。

最后是不是要对排好序的数组进行输出:

for(i=0;i

四.寻找特殊的数字或解应用题:输出a到b之间的所有的具有某个特点的数字 模版: int n,a,b; (注意:如果是分数或者小数a和b就是float类型)

scanf(“%d,%d”,&a,&b); (从键盘输入查找的范围;如果题目已经给

了范围,就在循环的时候直接带值,这句话就不需要了。注意如果是float类型就是%f。注意如果运行程序,在输入数据验证的时候注意格式要匹配) for(n=a;n

据题目把a和b换掉) {if(条件) (注意:这句话是这类题目的核心,有时候也许不是一

句话,这句话放在这的意思是判定是否是特殊数字) printf(“%d”, n); (注意:如果是float类型就是%f) }

1、输出3到1000之间的所有素数

分析:在做本题之前,先要搞明白什么是素数,它又是如何判定的。 补充:

素数 又叫质数,如果一个数只能被1和它本身整除,那么我们就说它是素数。 分析:既然一个素数只可以被1和它本身整除,那么当我们判断一个数n是不是素数的时候,就用这个数去除2到(n-1),一旦我们发现可以整除这个区间的某一个数,那么我们就不再去除别的数了,因为在2到(n-1)这个范围内,n可以整除其中的某一个数,那么就肯定不是素数。这个过程需要一个循环和停止循环的break来实现。继续分析,当我们在2到(n-1)这个范围内找不到n可以整除的数,那么就说明这个数是素数,那么我们就判断上面的循环时候做完了,如果中间就跳出循环,则说明不是素数,反之,如果做完了,那么就是素数。P判断能否整除,就是求余看是否为0,则程序如下:

int n; (n是要判断的数,具体根据题意赋值或从键盘输入) for(i=2;i=n) (也可以填i==n,因为如果上面的循环做完了,那么循环变量i=n) printf(“%d is a primenumber!\\n”,n); else printf(“%d is not a primenumber!\\n”,n); (这个if„else结构是判断

上面的循环有没有做完) 本题分析:只要用上面的程序替换掉模版的那个if就可以了,注意这里不再需要else了,因为题目只要求输出素数,输出语句也只需要一句,则程序如下: int n,i; for(n=3;n=n) printf(“%d is a primenumber!\\n”,n); }

2、输出1到100之间的所有同构数

分析:在做本题之前,先要搞明白什么是同构数,它又是如何判定的。 补充:

同构数 如果一个数出现在自己的平方数的右边,,那么我们就说它是同构数。 分析:既然一个同构数会出现在它自己的平方数的右边,那么当我们判断一个数n是不是同构数的时候,先要做的就是求出这个数的平方,然后该怎么判断是不是出现在右边呢?我们人有眼睛,可以直接看,但是电脑不长眼睛的,它看不到,它只能分析,那么它怎么分析呢?1到100之间的所有数只有一位或者两位,那么我们在取平方数右边的时候,只要取这个平方数的最右边的一位或者两位,与我们的数进行比较,看是否一样,如果一样就是同构数,反之就不是。怎么取一个数的最右边一位或者两位呢?求余!!!一个数对10求余就是取它的最右边一位,也就是个位;如果对100求余就是取它的最右边两位,也就是十位和个位。则程序如下:

int n; (n是要判断的数,具体根据题意赋值或从键盘输入) if(n*n%10==n|| n*n %100==n) printf(“%d is a isomorphic number!\\n”,n); 本题分析:直接带模版,则程序如下: int n; for(n=1;n

3、输出1到1000之间的所有回文数

分析:在做本题之前,先要搞明白什么是回文数,它又是如何判定的。 补充:

回文数 如果一个数字正读和倒读一样,那么这个数字就是回文数。例如:98789, 这个数字正读是98789,倒读也是98789,所以这个数字就是回文数。

分析:既然一个回文数正读和倒读一样,也就是它的最高位和最低位一样,它的次高位和次低位一样,那么当我们判断一个数n是不是回文数的时候,先要确定这个数有几位,才可以确定谁与谁进行比较,然后确定这个数每一位都是谁。1到1000之间的数,除了1000其余最多三位数,显然1000不是回文数,先不考虑,怎么确定这个数是几位呢?如果它的百位是0,那么肯定不是三位数,如果百位和十位都是0,那么肯定是一位数,我们知道一位数肯定都是回文数;对于一个两位数,只要判断它的个位和十位是不是一样就可以了,如果一样,那么肯定是回文数;对于一个三位数只要判断他的个位和百位就可以了,如果一样就是回文数。求一个最多是三位数的每一位,就是将这个数对10求余得到个位;然后这个数除以10,再对10求余得到十位;最后除以100得到百位。则程序如下: int n; (n是要判断的数,具体根据题意赋值或从键盘输入) if(n>0&&n0&&n

4、输出1到1000之间的所有完数

分析:在做本题之前,先要搞明白什么是完数,它又是如何判定的。 补充:

再做完数之前先讲怎么求两个数的最大公约数和最小公倍数。

分析:假设求a和b两个数的最大公约数和最小公倍数,并且a>b,如果a0&&n0&&n

5、输出1到999之间的所有水仙花数

分析:在做本题之前,先要搞明白什么是水仙花数,它又是如何判定的。 补充:

水仙花数 如果一个三位数的各个位数字的立方和等于该数字本身,那么这个数就是水仙花数。例如:153,1*1*1+5*5*5+3*3*3=153,所以这个数字就是回文数。 分析:既然一个水仙花数的各个位数字的立方和等于该数字本身,那么当我们判断一个数n是不是水仙花数的时候,先要求出各个位数字,然后求其立方和,判断是不是和该数本身一样,如果一样就是水仙花数,否则就不是。求一个三位数的每一位,就是将这个数对10求余得到个位;然后这个数除以10,再对10求余得到十位;最后除以100得到百位。则程序如下:

int n,a,b,c; (n是要判断的数,具体根据题意赋值或从键盘输入) a=n/100; b=n/10%10; c=n%10; if(a*a*a+b*b*b+c*c*c==n) printf(“%d is the shuixianhua number!\\n”,n); 本题分析:只要用上面的程序替换掉模版的那个if就可以了,则程序如下: int n; for(n=1;n

6、用一张100的钱换100张零钞,假设面额有5元,3元,1/2元三种,问有多少种方法?

分析:这是一道解方程组的题,根据我们的小学知识可以列出方程组,其中有三个未知数,所以应该是三层嵌套循环,再分析题目我们知道1/2的张数只能是偶数张,则程序为: int i,j,k,n; for(i=0;i

7、爱因斯坦阶梯问题。设有一阶梯,每步跨2阶,最后剩1阶;每步跨3阶,最后剩2阶;每步跨5阶,最后剩4阶;每步跨6阶,最后剩5阶;每步跨7阶,正好到阶梯顶。问满足条件的最少阶梯数是多少?

分析:这道题的实质是找满足上述条件的数,而且要最小的,那么我们就写一个循环,循环变量从最小的数开始递增,分析题目我们可知从7开始递增即可(如果不从7,从1开始也是可以的),一旦满足上述条件,循环变量就不需要增加了,输出循环变量即可,所以我们选择while循环结构,当不满足上述条件我们就做循环变量的递增,如果满足就输出,则程序为: int n=7; while( !(n%2==1&&n%3==2&&n%5==4&&n%6==5&&n%7==0)) { n++; } printf(\"%d\\n\",n);

8、求一句英文所含有的单词数。

分析:一句英文里面每个单词之间都用空格隔开,所以我们只要数空格的个数即可,但是注意最后一个单词后面是没有空格的。一句英文肯定要存放在数组中,我们选择简单的一维数组。从字符数组中的第一个元素开始查看,先查看第一个元素,如果不是空格,那就证明是第一个单词,单词个数加一,然后一直做循环,直到遇到空格,就说明这个单词结束了,然后再判断是不是到数组的结尾,如果没有就继续查找,直到数组结束为止,则程序如下: #include #include void main() {char s[100]; int i=0,j,num=0; gets(s); j=strlen(s); while(i

}

五.图案:输出n行的具有规律的字符,组成我们所想要的图案。 模版: int i,j,k; for(i=0;i

具体对待) for(k;;) printf(“%d”,); (注意:如果是char类型就是%c) }

1、输出下列图案

* *** *****

printf(\" There are %d words.\\n\",num); ******* ********* ******* ***** *** * 分析:这种图案一般我们会将其分为两部分,从最多一行隔开,分为上下两个部分,先输出上面的图案,再输出下面的。通过分析我们可以发现每行既要输出空格,又要输出*,所以循环体里面需要两个循环,循环体里面的循环变量的控制最好和外层的控制行数的循环变量相关联。我们用i控制行数,用j控制每行的空格数,用k控制每行的*数,通过观察我们发现如下规律: i j k 0 4 1 1 3 3 2 2 5 3 1 7 4 0 9 那么,i+j=4,k均为奇数,再分析发现k=2i+1,每行输完还要输出换行,则程序如下: int i,j,k; for(i=0;i

2、输出下列图案

A BBB CCCCC DDDDDDD EEEEEEEEE FFFFFFF GGGGG HHH I 分析:这种图案一般我们会将其分为两部分,从最多一行隔开,分为上下两个部分,先输出上面的图案,再输出下面的。通过分析我们可以发现每行既要输出空格,又要输出字母,所以循环体里面需要两个循环,循环体里面的循环变量的控制最好和外层的控制行数的循环变量相关联。我们用i控制行数,用j控制每行的空格数,用k控制每行的字母数,通过观察我们发现如下规律: i j k 0 4 1 1 3 3 2 2 5 3 1 7 4 0 9 那么,i+j=4,k均为奇数,再分析发现k=2i+1。每行的字母相同但是和上下行的不相同,观察发现字母是按照顺序递增的,那么我们就先把字母存放在一个变量里面,然后在输出每行所需的字符之后,改变字母。每行输完还要输出换行,则程序如下: int i,j,k; char c=’A’; for(i=0;i

3、输出下列图案

1 121 12321 1234321 123454321 1234321 12321 121 1 分析:这种图案一般我们会将其分为两部分,从最多一行隔开,分为上下两个部分,先输出上面的图案,再输出下面的。通过分析我们可以发现每行既要输出空格,又要输出数字,所以循环体里面需要两个循环,循环体里面的循环变量的控制最好和外层的控制行数的循环变量相关联。我们用i控制行数,用j控制每行的空格数,用k控制每行的数字数,每行的数字还不相同,观察发现数字是按照顺序递增递减的,那么我们输出数字的循环又要分为两个循环,继续观察我们发现每次输出的数字和循环变量k有关,通过观察我们发现如下规律: i j k 0 4 1 1 3 2 2 2 3 3 1 4 4 0 5 那么,i+j=4,k均为奇数,再分析发现k的递增从1开始到i+1为止,递减是从i开始到1为止。每行输完还要输出换行,则程序如下: int i,j,k; for(i=0;i0;k--) printf(“%d”,k); printf(“\\n”); } for(i=0;i0;k--) printf(“%d”,k); printf(“\\n”); }

4、输出九九乘法表

1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 „„ „„

分析:如果用i表示行,j表示列,那么每行输出i个式子,分析发现每个式子可以用j*i表示。每行输完还要输出换行,则程序如下: int i,j; for(i=1;i

5、输出杨辉三角的前10行

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1 分析:如果用i表示行,j表示列,那么每行输出i个数字,分析发现除了两头的数字为1以外,其余的每个数字每个数字等于上一行的左右两个数字之和,所以用二维数组比较简单。每行输完还要输出换行,则程序如下: int a[10][10],i,j; for(i=0;i

五.字符串操作:

1.函数的原型说明为int chrn(char *s,char c);,其功能是测试c在s中出现的次数,编制该函数并用相应的主调函数对其进行测试。 #include int chrn(char *s,char c) { int n=0,i; for(i=0;s[i];i++) if(s[i]= =c) n++; return n; } void main() { int k=0; char a[100],b; gets(a); getchar(b); k=chrn(a,b); printf(“%d”,k); } 2.编写函数void fun(char *s),实现将字符串s逆序存放,例如:“abcd”改为“dcba”,请完成程序,并在主函数中实现调用 #include #include void fun(char *s) { int k,i; char t; k=strlen(s); for(i=0;i #include void mystrcat(char *str1, char *str2) { int i,j; i=strlen(str1); for(j=0;j #include int mystrcmp(char *str1,char*str2) { int i=0; while(*(str1+i)= =*str(str2+i)) if(*(str1+i++)= =’\\0’) return 0; return *(str1+i)-*(str2+i); } void main() { char a[100],b[100]; int n; gets(a); gets(b); n=mystrcmp(a,b); pirntf(“%d”,n); }

推荐第7篇:编程教案

常用编程指令的应用

车削加工编程一般包含X和Z坐标运动及绕Z轴旋转的转角坐标C 。

(1)快速定位(G00或G0) 刀具以点位控制方式从当前所在位置快速移动到指令给出的目标位置。

指令格式:G00 X(U) Z(W) ; (2)直线插补(G01或G1)

指令格式:G01 X(U) Z(W) F ;

图1 快速定位 图2 直线插补

G00 X40.0 Z56.0; G01 X40.0 Z20.1 F0.2;

/绝对坐标,直径编程; /绝对坐标,直径编程,切削进给率0.2mm/r G00 U-60.0 W-30 G01 U20.0 W-25.9 F0.2;

/增量坐标,直径编程 /增量坐标,直径编程,切削进给率0.2mm/r (3)圆弧插补(G02或G2,G03或G3) 1)指令格式: G02 X(U)_Z(W)_I_K_F_ ; G02 X(U) Z(W) R F ;

G03 X(U)_Z(W)_I_K_F_ ; G03 X(U) Z(W) R F ;

2)指令功能: 3)指令说明: ①G02为顺时针圆弧插补指令,G03为逆时针圆弧插补指令。圆弧的顺、逆方向判断见图3左图,朝着与圆弧所在平面相垂直的坐标轴的负方向看,顺时针为G02,逆时针为G03,图3右图分别表示了车床前置刀架和后置刀架对圆弧顺与逆方向的判断;

图3 圆弧的顺逆方向

②如图4,采用绝对坐标编程,X、Z为圆弧终点坐标值;采用增量坐标编程,U、W为圆弧终点相对圆弧起点的坐标增量,R是圆弧半径,当圆弧所对圆心角为0°~180°时,R取正值;当圆心角为180°~360°时,R取负值。I、K为 圆心在X、Z轴方向上相对圆弧起点的坐标增量(用半径值表示),I、K为零时可以省略。

图4 圆弧绝对坐标,相对坐标

图5 圆弧插补

G02 X50.0 Z30.0 I25.0 F0.3; G03 X87.98 Z50.0 I-30.0 K-40.0 F0.3;

G02 U20.0 W-20.0 I25.0 F0.3; /绝对坐标,直径编程

G02 X50.Z30.0 R25.0 F0.3; G03 U37.98 W-30.0 I-30.0 K-40.0 F0.3; G02 U20.0 W-20.0 R25.0 F0.3; /相对坐标,直径编程

(4)主轴转速设置(S) 车床主轴的转速(r/min)为:

式中υ为圆周切削速度,单位缺省为m/min、D为工件的外径,单位为mm。

例如,工件的外径为200mm,要求的切削速度为300m/min,经计算可得

因此主轴转速应为478r/min,表示为S478。 (5)主轴速度控制指令

数控车削加工时,按需要可以设置恒切削速度(例如,为保证车削后工件的表面粗糙度一致,应设置恒切削速度),车削过程中数控系统根据车削时工件不同位置处的直径计算主轴的转速。

恒切削速度设置方法如下:G96 S ; 其中S后面数字的单位为r/min。

设置恒切削速度后,如果不需要时可以取消,其方式如下:G97 S ; 其中S后面数字的单位为r/min。

在设置恒切削速度后,由于主轴的转速在工件不同截面上是变化的,为防止主轴转速过高而发生危险,在设置恒切削速度前,可以将主轴最高转速设置在某一个最高值。切削过程中当执行恒切削速度时,主轴最高转速将被限制在这个最高值。 设置方法如下:G50 S ; 其中S的单位为r/min。

图6 主轴速度控制

例如:在刀具T01切削外形时用G96设置恒切削速度为200m/min,而在钻头T02钻中心孔时用G97取消恒切削速度,并设置主轴转速为1100r/min。 这两部分的程序头如下:

G50 S2500 T0101 M08; /G50限定最高主轴转速为2500r/min;

G96 S200 M03; / G96设置恒切削速度为200m/min,主轴顺时针转动 G00 X48.0 Z3.0; / 快速走到点(48.0,3.0) G01 Z-27.1 F0.3; /车削外形 G00 Ul.0 Z3.0; /快速退回 T0202; /调02号刀具

G97 Sll00 M03; /G97取消恒切削速度,设置主轴转速为ll00r/min G00 X0.0 Z5.0 M08; /快速走到点(0,5.0),冷却液打开 G01 Z-5.0 F0.12; /钻中心孔 (6)进给率和进给速度设置指令

在数控车削中有两种切削进给模式设置方法,即进给率(每转进给模式)和进给速度(每分钟进给模式)。

1)进给率,单位为mm/r,其指令为: G99; / 进给率转换指令,

G01 X Z F ; / F的单位为mm/r 2)进给速度,单位为mm/min,其指令为: G98; / 进给速度转换指令

G01 X Z F ; / F的单位为mm/min

图7 进给率和进给速度

a:G99 G01 Z-27.1 F0.3; b:G98 G01 Z-10.0 F80; 表示进给率为0.3mm/r 表示进给速度为80mm/min CNC系统缺省进给模式是进给率,即每转进给模式。 (7)工件原点设置

工件坐标系的原点有两种设置方法。

1)用G50指令进行工件原点设置,分以下两种设置情况:

图8 工件原点设置 ①坐标原点设置在卡盘端面

如图8a所示,这种情况下z坐标是正值。 工件原点设置在卡盘端面:

G50 X85.Z210.;/* 将刀尖当前位置的坐标值定为工件坐标系中的一点(85.,210.)。 ②坐标原点设置在零件右端面

如图8b所示,这种情况下Z坐标值是负值。 工件原点设置在工件右端面:G50 X85.0 Z90.0; 则刀尖当前位置即为工件坐标系原点。 (8)端面及外圆车削加工

端面及外圆的车削加工要用到插补指令G01。

为正确地编写数控程序,应在编写程序前根据工件的情况选择工件原点。确定好工件原点后,还必须确定刀具的起始点。

编程时还应考虑车削外圆的始点和端面车削的始点,这两点的确定应结合考虑工件的毛坯情况。如果毛坯余量较大,应进行多次粗车,最后进行一次精车,因而每次的车削始点都不相同。

图9 确定车削原点

a)工件原点在左端面时 b) 工件原点在右端面时 1)工件原点在左端面 o0001 /* 程序编号o0001 N0 G50 X85.0 Z210.0; /* 设置工件原点在左端面 N1 G30 U0 W0; /* 返回第二参考点

N2 G50 S1500 T0101 M08; /* 限制最高主轴转速为1500r/min,调01号刀具,M08为打开冷却液

N3 G96 S200 M03; /* 指定恒切削速度为200m/min N4 G00 X40.4 Z153.0; /* 快速走到外圆粗车始点 N5 G01 Z40.2 F0.3; /* 以进给率0.3mm/r车削外圆 N6 X60.4; /* 台阶车削

N7 Z20.0; /*φ60.4mm处长度为20.0mm的一段外圆 N8 G00 X62.0 Z150.2; /* 刀具快速退到点(62.0,150.2) N9 X41.0; /*刀具快速走到点(41.0,150.2) N10 G01 X-1.6; /* 车削右端面

N1l G00 Zl52.0; /* 刀具快速退到点(-1.6,152.0) N12 G30 U0 W0; /* 直接回第二参考点以进行换刀 N13 (Finishing); /*精车开始,括号为程序说明

N14 G50 S1500 T0202; /*限制最高主轴转速为1500r/min,调02号刀具 N15 G96 S250; /* 指定恒切削速度为250m/min N16 G00 X40.0 Z153.0 ;/*快速走到外圆精车始点(40.0,153) N17 G42 G01 Z151.0 F0.15; /*调刀尖半径补偿,右偏 N18 Z40.0; /*φ40.4mm一段外圆的精车 N19 X60.0; /*台阶精车

N20 Z20.0; /*φ60.0mm处长度为20.0mm外圆的精车 N21 G40 G00 X62.0 Z150.0; /*取消刀补 N22 X41.0; /*刀具快速走到点(41.0,150.0) N23 G41 G01 X40.0; /*调刀尖半径补偿,左偏 N24 G01 X-1.6; /*精车右端面

N25 G40 G00 Zl52.0 M09; /*取消刀补,切削液关

N26 G30 U0 W0 M05; /*返回第二参考点,主轴停止 N27 M30; /*程序结束 2)工件原点在右端面:工件原点设置在右端面与设置在左端面的区别仅在于Z坐标为负值,程序编写过程完全相同。 O0002 ; /* 程序编号

N0 G50 X85.0 Z90.0 /* 设置工件原点在右端面 N2 G30 U0 W0; /* 返回第二参考点

N4 G50 S1500 T0101 M08; /* 限制最高主轴转速 N6 G96 S200 M03; /* 指定恒切削速度为 200m/min,主轴逆时针旋转

N8 G00 X30.4 Z3.0; /*快速走到点(30.4,3.0) N10 G01 W-33.0 F0.3; /*以进给率0.3mm/r粗车φ30.4处外圆 N12 U30.0 W-50.0; /*粗车锥面

N14 W-10.0; /*粗车φ60.4mm处长度为10的一段外圆 N16 G00 Ul.6 W90.2; /*刀具快速走到点(62.0,0.2) N18 U-31.0; /*刀具快速走到点(3l,0.2) N20 G01 U-32.6; /*粗车端面

N22 G00 W2.0; /*刀具快速走到点(-1.6,2) N24 G30 U0 W0; /*返回第二参考点 N26 (Finishing); /*精车开始

N28 G50 S1500 T0202; /*设置主轴最高转速1500r/min,调2号刀具 N30 G96 S250; /* 指定恒切削速度为250m/min N32 G00 X30.0 Z3.0;/*刀具快速走到精车始点(30.0,3.0) N34 G42 G01 W-2.0 F0.15; /*调刀尖半径补偿,右偏 N36 W-31.0; /*精车ф30.4mm处外圆 N38 U30.0 W-50.0; /*精车锥面

N40 W-10.0; /*精车ф60.0mm处外圆

N42 G40 G00 U2.0 W90.0; /*取消刀补,刀具快速走到点(62,0.0) N44 U-31.0; /*刀具快速走到点(31,0.0) N46 G41 G01 U-1.0; /*调刀尖半径补偿,左偏

N48 G01 U-32.6; /*精车端面

N50 G40 G00 W2.0 M09; /*取消刀补,刀具快速走到点(1.6,2.0) N52 G30 U0 W0 M30; /*返回参考点,程序结束 实例:

如图10所示零件

图10 数控车削综合编程实例

N0050 G01 X32 Z0; N0110 G02 X16 Z-15 R2; N0060 G01 X-0.5; N0120 G01 X20;

N0070 G00 Z1; N0130 G01 Z35; N0080 G00 X10; N0140 X26; N0090 G01 X12 Z1; N0150 Z50; N0100 G01 X12 Z1; N0160 X32; 为1500r/min,调1号刀具,M08为打开冷却液在这种情况下,如果设置指令写成: G50 X0 Z0;

G0

2、G03指令表示刀具以F进给速度从圆弧起点向圆弧终点进行圆弧插补。刀具以一定的进给速度从当前所在位置沿直线移动到指令给出的目标位置。

2.循环加工指令

当车削加工余量较大,需要多次进刀切削加工时,可采用循环指令编写加工程序,这样可减少程序段的数量,缩短编程时间和提高数控机床工作效率。根据刀具切削加工的循环路线不同,循环指令可分为单一固定循环指令和多重复合循环指令。 (1)单一固定循环指令

对于加工几何形状简单、刀具走刀路线单一的工件,可采用固定循环指令编程,即只需用一条指令、一个程序段完成刀具的多步动作。固定循环指令中刀具的运动分四步:进刀、切削、退刀与返回。

1)外圆切削循环指令(G90)

指令格式 : G90 X(U)_ Z(W)_ R_ F_ 指令功能: 实现外圆切削循环和锥面切削循环。

刀具从循环起点按图11与图12所示走刀路线,最后返回到循环起点,图中虚线表示按R快速移动,实线表示按F指定的工件进给速度移动。

图11 外圆切削循环

图12 锥面切削循环

指令说明: ① X、Z 表示切削终点坐标值;

② U、W 表示切削终点相对循环起点的坐标分量;

③ R 表示切削始点与切削终点在X轴方向的坐标增量(半径值),外圆切削循环时R为零,可省略;

④F表示进给速度。 例题 如图13所示,运用外圆切削循环指令编程。

G90 X40 Z20 F30

A-B-C-D-A X30

A-E-F-D-A X20

A-G-H-D-A

图13 外圆切削循环例题

例题 如图14所示,运用锥面切削循环指令编程。

G90 X40 Z20 R-5 F30 A-B-C-D-A X30

A-E-F-D-A X20

A-G-H-D-A

图14 锥面切削循环例题

2) 端面切削循环指令(G94)

指令格式: G94 X(U)_ Z(W)_ R_ F_ 指令功能: 实现端面切削循环和带锥度的端面切削循环。

刀具从循环起点,按图15与图16所示走刀路线,最后返回到循环起点,图中虚线表示按R快速移动,实线按F指定的进给速度移动。

图15 端面切削循环 图16 带锥度的端面切削循环

① X、Z表示端平面切削终点坐标值;

② U、W表示端面切削终点相对循环起点的坐标分量;

③ R 表示端面切削始点至切削终点位移在Z轴方向的坐标增量,端面切削循环时R为零,可省略;

④ F表示进给速度。

例题: 如图17所示,运用端面切削循环指令编程。

G94 X20 Z16 F30

A-B-C-D-A Z13

A-E-F-D-A Z10

A-G-H-D-A

图17 端面切削循环例题 图18 带锥度的端面切削循环例题

例题: 如图18所示,运用带锥度端面切削循环指令编程。

G94 X20 Z34 R-4 F30

A-B-C-D-A Z32

A-E-F-D-A Z29

A-G-H-D-A (2)多重复合循环指令(G70——G76) 运用这组G代码,可以加工形状较复杂的零件,编程时只须指定精加工路线、径向轴向精车留量和粗加工背吃刀量,系统会自动计算出粗加工路线和加工次数,因此编程效率更高。

在这组指令中,G71、G7

2、G73是粗车加工指令,G70是G7

1、G7

2、G73粗加工后的精加工指令,G74 是深孔钻削固定循环指令,G75 是切槽固定循环指令,G76是螺纹加工固定循环指令。

1)外圆粗加工复合循环(G71) 指令格式 : G71 UΔd Re G71 Pns Qnf UΔu WΔw Ff Ss Tt

指令功能: 切除棒料毛坯大部分加工余量,切削是沿平行Z轴方向进行,如图19所示。 A为循环起点,A-A\'-B为精加工路线。

图19 外圆粗加工复合循环 图20 端面粗加工复合循环 指令说明:①Δd表示每次切削深度(半径值),无正负号; ② e表示退刀量(半径值),无正负号;

③ ns表示精加工路线第一个程序段的顺序号; ④ nf表示精加工路线最后一个程序段的顺序号;

⑤ Δu表示X方向的精加工余量,直径值;

例题 :如图21所示,运用外圆粗加工循环指令编程。

图21 外圆粗加工复合循环例题 N010 G50 X150 Z100 N020 G00 X41 Z0 N030 G71 U2 R1 N040 G71 P50 Q120 U0.5 W0.2 F100 N050 G01 X0 Z0 N060 G03 X11 W-5.5 R5.5 N070 G01 W-10 N080 X17 W-10 N090 W-15 N100 G02 X29 W-7.348 R7.5 N110 G01 W-12.652 N120 X41 N130 G70 P50 Q120 F30

2)端面粗加工复合循环(G72) 指令格式: G72 WΔd Re

G72 Pns Qnf UΔu WΔw Ff Ss Tt

指令功能: 除切削是沿平行X轴方向进行外,该指令功能与G71相同,如图20所示。 指令说明 :

Δd、e、ns、nf、Δu、Δw的含义与G71相同。 例题:如图22,运用端面粗加工循环指令编程。

图22 端面粗加工复合循环例题 图23 固定形状切削复合循环 N010 G50 X150 Z100 N020 G00 X41 Z1 N030 G72 W1 R1 N040 G72 P50 Q80 U0.1 W0.2 F100 N050 G00 X41 Z-31 N060 G01 X20 Z-20 N070 Z-2 N080 X14 Z1 N090 G70 P50 Q80 F30 3)固定形状切削复合循环(G73) 指令格式: G73 UΔi WΔk Rd G73 Pns Qnf UΔu WΔw Ff Ss Tt

指令功能:适合加工铸造、锻造成形的一类工件,见图23所示。 指令说明: Δi 表示X轴向总退刀量(半径值); ΔK 表示Z轴向总退刀量; d 表示循环次数;

ns 表示精加工路线第一个程序段的顺序号; nf 表示精加工路线最后一个程序段的顺序号; Δu 表示X方向的精加工余量(直径值); Δw 表示Z方向的精加工余量。

①固定形状切削复合循环指令的特点:

a.刀具轨迹平行于工件的轮廓,故适合加工铸造和锻造成形的坯料; b.背吃刀量分别通过X轴方向总退刀量Δi和Z轴方向总退刀量ΔK除以循环次数d求得; c.总退刀量Δi与ΔK值的设定与工件的切削深度有关。

②使用固定形状切削复合循环指令,首先要确定换刀点、循环点A、切削始点A’和切削终点B的坐标位置。分析上图,A点为循环点,A’→B是工件的轮廓线,A→A’→B为刀具的精加工路线,粗加工时刀具从A点后退至C点,后退距离分别为Δi+Δu /2,Δk+Δw,这样粗加工循环之后自动留出精加工余量Δu /

2、Δw。

③顺序号ns至nf之间的程序段描述刀具切削加工的路线。 例题: 如图14所示,运用固定形状切削复合循环指令编程。

图24 固定形状切削复合循环例题 图25 复合固定循环举例

N010 G50 X100 Z100 N020 G00 X50 Z10 N030 G73 U18 W5 R10 N040 G73 P50 Q100 U0.5 W0.5 F100 N050 G01 X0 Z1 N060 G03 X12 W-6 R6 N070 G01 W-10 N080 X20 W-15 N090 W-13 N100 G02 X34 W-7 R7 N110 G70 P50 Q100 F30 4)精车复合循环(G70) 指令格式: G70 Pns Qnf

指令功能:用G7

1、G7

2、G73指令粗加工完毕后,可用精加工循环指令,使刀具进行A-A`-B的精加工,(如图24)

指令说明:

ns表示指定精加工路线第一个程序段的顺序号; nf表示指定精加工路线最后一个程序段的顺序号;

G70~G73循环指令调用N(ns)至N(nf)之间程序段,其中程序段中不能调用子程序。 5)复合固定循环举例 (G71与G70编程)

加工图25所示零件,其毛坯为棒料。工艺设计参数为:粗加工时切深为7mm,进给速度0.3mm/r,主轴转速500r/min; X向(直径上)精加工余量为4 mm,z向精加工余量为2mm,进给速度为0.15mm/r,主轴转速800mm/min。程序设计如下: N01 G50 X200.0 Z220.0; N02 G00 X160.0 Z180.0 M03 S800; N03 G71 P04 Q10 U4.0 W2.0 D7.0 F0.3 S500; N04 G00 X40.0 S800; N05 G01 W-40.0 F0.15; N06 X60.0 W-30.0; N07 W-20.0; N08 X100.0 W-10.0; N09 W-20.0; N10 X140.0 W-20.0; N11 G70 P04 Q10; N12 G00 X200.0 Z220.0; N13 M05; N14 M30; 3.螺纹加工自动循环指令

(1)单行程螺纹切削指令G32(G33,G34) 指令格式 : G32 X(U)_ Z(W)_ F_

指令功能:切削加工圆柱螺纹、圆锥螺纹和平面螺纹。 指令说明:

格式中的X(U)、Z(W)为螺纹中点坐标,F为以螺纹长度L给出的每转进给率。L表示螺纹导程,对于圆锥螺纹(图26),其斜角α在45°以下时,螺纹导程以Z轴方向指定;斜角α在45°~90°时,以X轴方向指定。

①圆柱螺纹切削加工时,X、U值可以省略,格式为: G32 Z(W)_ F _ ; ②端面螺纹切削加工时,Z、W值可以省略,格式为: G32 X(U)_ F_;

③螺纹切削应注意在两端设置足够的升速进刀段δ1和降速退刀段δ2,即在程序设计时,应将车刀的切入、切出、返回均应编入程序中。

图26 螺纹切削 图27 螺纹切削应用 螺纹切削例题: 如图27所示,走刀路线为A-B-C-D-A,切削圆锥螺纹,螺纹导程为4mm , δ1 = 3mm,δ2 = 2mm,每次背吃刀量为1mm,切削深度为2mm。 G00 X16 G32 X44 W-45 F4 G00 X50 W45 X14 G32 X42 W-45 F4 G00 X50 W45 (2)螺纹切削循环指令(G92)

指令格式 : G92 X(U)_ Z(W)_ R_ F_ 指令功能: 切削圆柱螺纹和锥螺纹,刀具从循环起点,按图28与图29所示走刀路线,最后返回到循环起点,图中虚线表示按R快速移动,实线按F指定的进给速度移动。

图28 切削圆柱螺纹 图29 切削锥螺纹 指令说明:

①X、Z表示螺纹终点坐标值; ②U、W表示螺纹终点相对循环起点的坐标分量;

③R表示锥螺纹始点与终点在X轴方向的坐标增量(半径值),圆柱螺纹切削循环时R为零,可省略;

④F表示螺纹导程。

例题: 如图30所示,运用圆柱螺纹切削循环指令编程。

图30 切削圆柱螺纹例题 图31 切削锥螺纹例题 G50 X100 Z50 G97 S300 T0101 M03 G00 X35 Z3 G92 X29.2 Z-21 F1.5 X28.6 X28.2 X28.04 G00 X100 Z50 T0000 M05 M02

例题 : 如图31所示,运用锥螺纹切削循环指令编程。 G50 X100 Z50 G97 S300 T0101 M03 G00 X80 Z2 G92 X49.6 Z-48 R-5 F2 X48.7 X48.1 X47.5 X47.1 X47 G00 X100 Z50 T0000 M05 M02

(3)螺纹切削复合循环(G76)

指令格式 : G76 Pm r a QΔdmin Rd G76 X(U)_ Z(W)_Ri Pk QΔd Ff

指令功能:该螺纹切削循环的工艺性比较合理,编程效率较高,螺纹切削循环路线及进刀方法如图32所示。

图32 螺纹切削复合循环路线及进刀法 指令说明:

②r表示斜向退刀量单位数,或螺纹尾端倒角值,在0.0f—9.9f之间,以0.1f为一单位,(即为0.1的整数倍),用00—99两位数字指定,(其中f为螺纹导程); ③a表示刀尖角度;从80°、60°、55°、30°、29°、0°六个角度选择;

④Δdmin:表示最小切削深度,当计算深度小于Δdmin,则取Δdmin作为切削深度; ⑤d:表示精加工余量,用半径编程指定;Δd :表示第一次粗切深(半径值); ⑥X、Z:表示螺纹终点的坐标值; ⑦U:表示增量坐标值; ⑧W:表示增量坐标值;

⑨I:表示锥螺纹的半径差,若I=0,则为直螺纹; ⑩k:表示螺纹高度(X方向半径值); G76螺纹车削实例

图33所示为零件轴上 的一段直螺纹,螺纹高度为3.68,螺距为6,螺纹尾端倒角为1.1L,刀尖角为60°,第一次车削深度1.8,最小车削深度0.1,精车余量0.2,精车削次数1次,螺纹车削前先精车削外圆柱面,其数控程序如下:

图33 螺纹切削多次循环G76指令编程实例 O0028 /程序编号

N0 G50 X80.0 Z130.0; /设置工件原点在左端面 N2 G30 U0 W0; /返回第二参考点

N4 G96 S200 T0101 M08 M03; /指定切削速度为200m/min,调外圆车刀 N6 G00 X68.0 Z132.0; /快速走到外圆车削起点(68.0,132.0) N7 G42 G01 Z130.0 F0.2; N8 Z29.0 F0.2; /外圆车削 N9 G40 G00 U10.0; N10 G30 U0 W0; N12 G97 S800 T0202 M08 M03; /取消恒切削速度,指定主轴转速800r/min,调螺纹车刀 N14 G00 X80.0 Z130.0; /快速走到螺纹车削循环始点(80.0,130.0) N16 G76 P011160 Q0.1 R0.2; /循环车削螺纹 N18 G76 X60.64 Z25.0 P3.68 Q1.8 F6.0; N20 G30 U0 W0 M09; N22 M30; ①m表示精车重复次数,从1—99;

推荐第8篇:消防车编程

浅谈编组编程在现代灭火救援中的应用

参谋长 王海柱 2004-10-29 9:46:44 沈阳消防支队

消防中队编组编程理论在很早以前就已经有专家提出,并应用于灭火战斗实践。但随着形势、任务以及部队自身的发展,编组编程理论也在不断发展变化。现在谈及编组编程,我个人肤浅地认为:是根据灭火救援工作的实际需要,对部队自身拥有的战斗实力,尤其是支队整体的人员、车辆器材装备预先进行科学整合编组,并编制不同的战斗展开程序,应用编组编程,是计划指挥在形式和内容上的拓展和丰富。熟话说,“凡事预则立,不预则废”。在现代灭火救援现场,尤其是大型灭火救援现场,使用和发挥好这一有效的指挥形式,尤显必要和重要。这也是我们从事灭火救援的指挥人员一直不懈努力研究探讨和解决的课题。就此笔者想结合沈阳支队开展和应用编组编程的情况,谈几点个人的粗浅看法。

一、要正视编组编程的特殊作用

随着社会和经济的不断发展进步,消防部队所承担的灭火救援任务也日益繁重和复杂,如何更好地履行职责,保卫国家和人民群众的生命财产安全,已毫无置疑地摆在我们消防人的面前。诚然,人民消防意识的不断提高,政府对消防投入的不断增加,车辆器材装备数量、质量、功能的不断的增加、拓宽和提高,科技强警步伐的不断加快,科技练兵的不断深入,都为我们更好地完成灭火救援任务奠定了深厚的基础。但是,我们必须清醒地看到,在许多灭火救援现场,尤其是在多个单位联合作战的大型现场,车辆器材装备和人员还没有达到充分的整合利用,还没有发挥最大的效能。组织指挥指挥混乱、作战行动缓慢、前方主阵地不能保证相对不间断供水、贻误战机等现象还偶有发生。为了实现灭火救援工作的有序施行,避免现场杂乱,提高工作效率,实现人与装备的最佳结合,发挥最大的效能,更好地完成职责所赋,我们必须事先研究现有装备,优化资源配置,进行有效的匹配编组,充分进行整合利用,按照施救要求编排科学的战斗展开程序。在现代灭火救援工作中有效应用预先设置好的编组编程,能够使计划指挥更加科学有效,能够简化现场组织指挥程序,能够使到场的参战力量密切协同配合,从而真正达到事半功倍之效。

二、要针对拥有实力合理编组编程

要打赢现代扑火救灾战斗,发挥编组编程的作用至关重要。这就要求我们必须事先对拥有战斗实力进行科学合理有效的编组编程。

首先要合理装备独立作战单元的人员及车辆器材装备。这是形成中队级编组编程的前提和基础,是中队独立作战能力强弱的决定性因素。如在我们沈阳支队为市区普通消防中队装备了中巴抢险救援车、轻型水罐消防车、重型水罐消防车(15吨以上)、泡沫消防车、登高消防车等基本战斗车型,郊县中队装备有轻型水罐消防车、中型水罐消防车、泡沫消防车、登高消防车等基本战斗车型,从而使每个中队都能保证扑救常见火灾的基本战斗编队。同时,根据管区火灾的不同特点,在市区中队分别装备了遥控化学水炮车、移动炮车、二氧化碳车、干粉车、泡沫液供给车、破拆清障车、水带消防车、高压喷雾消防车、高喷消防车、运载移动炮和扇形水幕的翼展车、防爆消防车等特殊战斗车辆。成立了三个特勤消防中队,一个是装备有中巴抢险救援车、照明车、18米高喷消防车、30米高喷消防车、42米高喷消防车、防化车、洗消车,并装备有特种器材,主要负责化工类火灾事故处置的特勤一中队;装备有中巴救援车、照明车、狂牛消防车、18米高喷消防车、42米高喷消防车、32米智能登高消防车、72米登高消防车,并装备有特种器材,主要负责高层、地下类火灾事故处置的特勤二中队;以及装备有40条搜救犬的特勤三中队。大力加强装备投入并进行科学合理的调配,保证了灭火救援工作的物质需要。

其次是立足更好地扑救各类火灾需要,对人员及车辆器材装备进行科学合理的编组编程,使之预先做好充足的战斗准备。一般常用的可分为中队级编组编程和支队级编组编程。 中队级编组编程是独立作战单元依据自身实力,针对不同需要而形成的各类战斗编组和战斗展开程序。科学编制并有效运用编组编程,能够使中队更好地独立完成作战任务,或者在中大型灭火战斗中,作为责任中队更好地完成救人、堵截控制火势等任务,是中队能否打好初战的关键。由于各中队编配实力、管区火灾特点各不相同,所编制的编组编程也不尽相同,因此这项工作主要由各中队来完成。常用的编组编程应根据灭火战斗的不同需要,视现场水源的不同情况,将本中队可在最前方出设阵地的车辆分别设定为主战车,并编配其他车辆与之组合形成战斗编组,并编制不同的战斗展开程序。就目前沈阳支队的情况看,可作为中队级编组编程主战车的车型有普通水罐(泡沫)消防车、中型(重型)水罐(泡沫)消防车、举高消防车等车辆,个别中队还有、高喷消防车、移动炮车(移动炮)、高压喷雾车、二氧化碳消防车车、干粉消防车等车辆。可形成的战斗编组编程一般有普通消防车直接占领水源的一车两枪型,重型大功率消防车(直接占领水源)的一车四枪型,普通(中型)水罐(泡沫)消防车做主战车,重型水罐(泡沫)消防车为之供水的两车两枪型和三车四枪型,高喷车(举高车、移动炮车、移动炮)与中低压泵(高低压泵)消防车(重型大功率消防车)组合使用的两车一炮型、三车一炮型,同型大功率重型水罐(泡沫)消防车编组使用的两车一炮型等。

支队级编组编程是就部队整体装备实力,打破中队界限,对所有力量(排除正在执行任务的力量)进行整合编组,并编制不同的战斗展开程序。科学编制并有效使用支队级编组编程,是更好地完成重特大灭火战斗任务的必要途径和重要手段。它需要根据重特大火灾现场的不同需要,视现场情况的不同,统筹兼顾,统筹安排;力求科学合理,有序高效。使用时必须由支队统一调度,统一指挥。就目前沈阳支队的情况看,支队级编组编程设定的主战车型有大功率消防车、高喷消防车、举高消防车、移动炮车等车型。其按使用车载炮为主阵地,在水源充足地区用两台大功率(吨位)水罐(泡沫)消防车作为主供水车、两台普通水罐(泡沫)消防车作为补充供水车形成战斗编组;在水源不充足地区用三台大功率(吨位)水罐(泡沫)消防车作为主供水车、三台普通水罐(泡沫)消防车作为补充供水车形成战斗编组;无水源地区用五台大功率(吨位)水罐(泡沫)消防车作为主供水车、三台普通水罐(泡沫)消防车作为补充供水车形成战斗编组。并按照不同需要,采取不同的战斗展开程序。目前沈阳支队最多可形成上述战斗编队15个,基本上满足了大型火场的战斗需要。

再次是针对特殊灾害事故,制定处置预案,对人员及车辆器材装备进行特殊编组编程。如建筑倒塌事故处置编组编程,应事先设置使用搜救犬、生命探测器、可燃气体检测仪、漏电检测仪等进行侦察检测的人员搜救编队;现场实施警戒的人员编队;多功能抢险救援车、破拆清障车、出设开花或喷雾枪阵地的消防车、大型铲车、吊车、推土机、120急救车,扩张、切割、起重等排险救生器材,以及供水、供电、供气等单位人员、车辆器材装备组成的救生排险编队。同时,要按照现场询情、侦察检测、设置警戒、救生排险、现场急救、清点人员和装备、移交撤离等处置程序,编制战斗展开程序。除此之外,还有核化事故处置编组编程、交通事故处置编组编程、自然灾害事故处置编组编程等。

三、要结合实际有效应用编组编程

编组编程作为实施现代灭火救援工作必须采取的有效形式和必要内容,在实战中必须得到合理有效的利用,才能彰显功效。

一是要按照建设信息化消防部队的要求,使编组编程实现信息化、网络化。应该说编组编程是随着消防部队和灭火救援工作不断发展而不断发展变化的系统化工程,执行任务的种类不同,参与战斗的车辆不同,所应采取的编组编程就不尽相同,可以说随时随地都会发生变化,尤其是大型灭火救援现场,需要使用多个编队时,指挥人员用人脑和手工现场临机编排显然笨拙混乱,起不到预先计划指挥的功效,可操作性不强。同时,受领任务的单位、人员也很难清晰明了,实际使用时会事倍功半。这就要求我们必须应用现代科学技术,充分发挥目前已经基本成型的计算机接警系统和计算机辅助灭火系统的功能,把编组编程制成软件,输入系统功能之中,使其形成计算机网络化,达到方便、准确、快捷、高效,便于操作使用的目的。如我们沈阳支队开发了《灭火救援战斗力量编组编程子系统》,并输入调度指挥中心接警系统。该软件将主战车、主供水车、补充供水车输入计算机接警系统,当某一地区发生火灾或有救援现场时,计算机按照给定指令,自动排除正在参加战斗的执勤力量,在电子地图上自动测出其它执勤力量距现场的距离,按照由近及远的原则,确定主战车,确定与其合成使用的主供水车辆和补充供水车辆,形成一个个战斗编队调往现场。同时,该软件实现了调度指挥中心与支队指挥车信息的时时传输,使现场指挥员随时掌握参战力量及编组编程情况,根据现场情况,进行合理有效的利用。该软件还输入了接警系统的每一个终端子系统。在原有出动指令包含的火灾或救援地址、行车参考路径、周围水源情况、部分电子地图等内容外,增加了编组编程任务栏,使参战车辆明确自己所在编队及任务分工,使调度指挥更加科学、规范、有效、合理。

二是要贯彻计划指挥与现场临机指挥相结合的原则。编组编程属计划指挥范畴,拟想调集的编队在灭火救援中不可能与实际需要完全相符。这就要求我们在实际作战指挥中,要在已经计划好的编组编程基础上,根据情况变化,根据现场需要,根据各编队以及编队各车辆到场的情况进行现场临机指挥。总指挥员按需部署前方主战车辆,后方供水指挥员要充分利用笔记本电脑、掌上电脑、车辆编组作战图版等工具对各个编队车辆随机进行调整,并随时将调整情况告知各编队及各参战车辆,使之随时掌握编队及任务的变化,使现场的计划指挥和临机指挥达到有机结合。

三是要贯彻灭火战术指导思想和基本原则,严格火场统一指挥的原则。在运用编组编程时,必须严格贯彻救人第一和准确、迅速、集中兵力打歼灭战的灭火战术指导思想。调集力量要力争一次调齐,避免零打碎敲。要首先考虑救人编队力量的应用,各参战编队到场后要按照命令迅速进入战斗状态,在最短的时间内发挥编组编程的战斗作用。要严格贯彻先控制后消灭的灭火战术基本原则。集中先期到场的编队力量于火场的主要方面,堵截火势蔓延。要根据火势发展,待总攻条件成熟,科学合理使用到场其它编队力量实施总攻灭火,以确保总攻灭火时,前方作战的各主阵地在一段时间内保持不间断供水,以期成功扑灭火灾。要严格贯彻集中统一指挥的原则。在调动时,要打破单位界限,按设定原则按编队统一调度。到场后要在火场指挥部的统一指挥下使用,避免因多头指挥出现力量使用上的混乱,来一台车用一台车,破坏编组编程的整体使用效能。

四是要贯彻练为战的原则,加强合成演练。由于不同类火灾使用编组编程各不相同,同类火灾的不同现场使用的编组编程也各不相同,参战力量的不同、发生火灾地点的不同,所形成的战斗编队各不相同,要想真正发挥编组编程在实战中的特殊功效,就必须加强合成演练,提高参战官兵按照编组编程作战的意识,加强不同编队之间的配合,加强不同编组的战斗展开程序的训练,使整个部队形成优良的战斗意识、战斗作风、战术素养,不断提高部队的整体作战能力,更好地完成党和人民赋予我们的灭火救援任务。

浅谈大型灭火救援战斗车辆编程及应用

随着我国经济社会快速发展,消防部队所承担的灭火救援任务也日趋复杂化、多样化,那么如何更好的履行消防部队职责,为构建和谐社会保驾护航,已毫无置疑的摆在当代消防人面前。近年来,各级政府不断加大对消防资金投入,车辆器材装备的数量、质量、功能不断提高,科技强警步伐的不断加快,科技练兵手段的不断深化,都为更好地完成灭火救援任务夯实了基础。但是,我们必须清醒地意识到,在许多灭火救援现场,尤其是在多个单位联合作战的大型现场,车辆器材装备和人员还没有达到充分的整合利用,还没有发挥最大的潜能。组织指挥指挥混乱、作战行动缓慢、前方主阵地不能保证相对不间断供水等现象时有发生。为实现灭火救援作战的有序化、程序化、规范化,避免现场杂乱,提高作战能力,实现人与装备的最佳结合,必须优化资源配置,进行有效的匹配编组。在现代灭火救援工作中有效应用编组编程,能使计划指挥更加科学有效,简化组织指挥程序,提高参战前后方之间协同作战能力,从而真正达到事半功倍之效。

一、科学合理划分灭火救援作战区域

为适应大型灭火救援现场作战的实际需要,基层消防部队应根据本市责任区消防给水管网的特点、供水能力,结合消防队(站)分布的现状及支队车辆装备的实际情况,科学合理的划分作战区域,即将城区(市区)划分为五个作战区域??东部地区、西部地区、南部地区、北部地区、中心地区,同时科学确立作战区域的道路水源情况,如:水源充足区域、水源不充足区域、无水

源区域等。

二、科学编程,充分发挥编队潜能

目前,大多数基层消防部队在大型灭火救援现场仍然采用以消防中队为作战单元的作战模式,这种做法有利也有弊,对此笔者不作过多的赘述。笔者认为在大型灭火救援现场应打破以中队为作战单元的模式,对部队所有战斗装备进行整合编组。科学编制并有效使用大型灭火救援战斗编程,是更好地完成大型灭火救援战斗任务的必要途径和重要手段。它需要根据大型灭火救援现场的不同需要,视现场情况的不同,统筹兼顾,统筹安排,力求科学合理,有序高效,并使战斗编程实现信息化、网络化。由于灭火救援任务的性质不同,参与战斗的车辆不同,所应采取的战斗编程也不尽相同,可以说随时随地都会发生变化,尤其是大型灭火救援现场,需要使用多个战斗编队时,采用人脑和手工现场临机编排显然笨拙混乱,达不到计划指挥的功效,可操作性不强。同时,受领任务的作战单位、人员也很难清晰明了作战任务,这就要求我们必须应用现代科学技术,充分发挥计算机接警系统和计算机灭火救援指挥辅助决策系统的功能,把编组编程制成软件,输入系统功能之中,使其形成计算机网络化,达到方便、准确、快捷、高效,便于操作使

用的目的。

主要是将主战车型、主供水车型以及辅助供水车型利用计算机软件编程(排除正在执行任务的力量),在灭火救援出动时,根据现场实际需要选定主战车型,电子计算机根据作战区域由近至远的调派原则,以灭火救援现场为中心在电子地图上自动扫描,自动形成战斗编队,同时下发给本编队车辆所在中队接警系统终端,并在输出指令上明确各自任务。

(一)主战车型的确立

首先我们应确立大型灭火救援现场主战车型,根据部队实际情况设定大功率水炮消防车、举高喷射消防车、移动炮消防车、大功率泡沫炮消防车、大功率遥控消防车等车型为大型灭火救援现场主战车(主要是指利用水炮射水、泡沫灭火,一般水炮流量为50升/秒-100升/秒)。

(二)主供水车型的确立

按使用车载炮为主阵地,在水源充足地区应采用3台大功率(大吨位)水罐(泡沫)消防车作为主战车的主供水车;在水源不足地区应采用4台大功率(大吨位)水罐(泡沫)消防车作为主战车的主供水车;在无水源地区应采用5-7台大功率(大吨位)水罐(泡沫)消防车作为主战

车的主供水车。

(三)辅助供水车型的确立

水源充足地区应采用2-3台小型或中型水罐(泡沫)消防车占领就近水源(地下消火栓、蓄水池、天然水源)作为主战车辅助供水车;水源不充足地区应采用3-4台小型或中型水罐(泡沫)消防车占领水源(实施长干线供水)作为主战车辅助供水车;无水源地区应采用4-5台小型或中型水罐(泡沫)消防车作为主战车辅助供水车或两个战斗编队进行有机合并。

主战车+主供水车+辅助供水车形成一个相对能独立作战的战斗编队,但在大型灭火救援作战现场,战斗编队的形成必须坚持一个原则:供水能力(水泵流量)相同的战斗车辆作为一个编队。例如:采用水炮流量100升?秒的高喷车作为主战车,那么主供水车的供水能力也必须与其相匹配否则是无法达到预期效果,失去实战能力,也无法保证火场供水不间断。

三、编队的调派与应用

(一)编队的调派

1、在火灾现场有可能使用大功率(大型登高车、高喷车)车载炮和移动炮射水(泡沫)的

情况下,应按战斗编队的形式调派。

2、战斗编队由主管中队指挥员、火场指挥部总(副总)指挥员负责调集,调度指挥中心调

度员负责操作完成。

3、战斗编队调派时必须明确编队主战车名称(例如:高喷车编队、举高车编队、大功率水罐车编队、大功率泡沫车编队等,同时明确高喷车、举高车的高度)。

(二)编队的使用

1、战斗编队主战车指挥员必须由主战车所在中队军、政主官担任,根据支队灭火救援指挥部下达的作战任务??主战车停车位置、出枪(炮)位置、数量,负责组织指挥作战任务的实施。

2、支队灭火救援指挥部没有到达现场前,增援战斗编队主战车指挥员必须在途中与主管中队指挥员联络,请领任务;支队灭火救援指挥部到达现场后,增援战斗编队主战车指挥员与支队

灭火救援指挥部联络,请领任务。

3、战斗编队主战车的第一主供水车指挥员,为本编队供水指挥员;编队供水指挥员负责组织本编队占领消防水源、铺设水带线路、选择供水形式和方法,保证本编队的供水任务完成,并负责汇报本编队供水情况。在途中必须主动与本战斗编队主战车指挥员联络,明确主战车位置及本编

队作战任务。

4、战斗编队供水指挥员组织本编队供水员和司机(班长)完成供水任务,其他战斗人员由

本编队指挥员负责组织任务实施。

5、战斗编队内其它主供水车和补充供水车指挥员,在途中必须与本编队供水指挥员联络,

明确水源使用、供水形式和方法。

6、战斗编队主战车指挥员必须与支队灭火救援指挥部下达作战任务的总(副总)指挥员或作战(水源)参谋联络,调度指挥中心要主动与支队灭火救援指挥部总(副总)指挥员联络,汇报编队力量调派等情况。通过联络使灭火救援现场指挥部成员清楚本编队的主战车和供水车,所

属中队名称及指挥员姓名。

7、战斗编队供水指挥员必须与支队灭火救援指挥部供水参谋保持联络,主动报告战斗编队

水源使用、供水形式和供水量等情况。

8、战斗编队任务变更必须由支队灭火救援指挥部总(副总)指挥员确定;编队供水车辆的调整必须由支队灭火救援指挥部总(副总)指挥员及指挥部供水参谋确定。编队任务变更由指挥部作战参谋负责调整,需要调整供水车辆时,必须通知指挥部供水参谋,由指挥部供水参谋负责调整。被支队灭火救援指挥部总(副总)指挥员调整的供水车辆所在中队指挥员必须及时向指挥

部供水参谋报告调整情况。

9、战斗编队出设水枪(移动炮)时,每个编队可出8?10支水枪(6.5升/秒)或3?4支移动炮(30-50升/秒)。在条件允许的范围内,尽可能使用同一台车辆或二台车作为主战车出阵

地,编队内其他车辆负责为其供水。

10、战斗编队供水指挥员在组织本编队供水中遇有紧急情况,应积极采取措施,并及时向指

挥部供水参谋报告处置情况。

11、指挥部供水参谋负责划分调整消火栓、消防水鹤使用数量、范围;市内增援中队的供水车辆,结合任务依据电子水源地图信息可直接就近占领消火栓,准确位置由主管中队后方供水指挥员负责提供。郊县增援中队的供水车辆,由支队灭火救援指挥部供水参谋负责组织占领水源供

水。

12、战斗编队大吨位和大功率水罐车,作为主供水车辆时,应采取运水方法使用,不应占领

消火栓吸水或接力供水。

13、使用特殊灭火器具(例如:移动遥控炮、消防机器人)时,应由车辆装备所在单位的指

挥员负责组织指挥,战斗员负责操作使用。

四、大力开展编队训练,不断磨合完善

针对大型灭火救援现场战斗编程,我们本着“从实战出发”的原则,达到人与装备有效结合

的目的,应有针对性的开展模拟训练。

一是练调度指挥。大型灭火救援作战现场战斗编队的形成,主要是通过调度指挥中心操作完成的,前方作战指挥员将调集增援力量的信息反馈到指挥中心,指挥中心能否科学合理、快速准确将战斗编队调出,是灭大火救大灾的关键;二是练编队配合。

通过调集不同作战功能的战斗编队进行模拟作战训练,是成功处置各类灾害事故的重要保障。主要是练习主战车、主供水车、辅助供水车在行车途中的通信联系,预先明确各自作战任务、停车位置、水源占领、到场大致时间等,从而使编队车辆到场后能快速有效地展开战斗,并不断检验编队使用规定是否有效,从中找出薄弱环节加以修改完善;三是练战术。所有战斗行动的展开是灭火战术的体现手段,通过模拟实战训练,组织者可不断变更灾情,逐步增加灾情的复杂性,能更好的锻炼各级指挥员的临机处置能力,逐步缩短训练与实战的距离。

一般大型灭火救援现场战斗编队可按分组训练、合成训练进行。分组训练,即按照支队统一编组编程,根据作战区域的划分,司令部门统一组织各单位按不同作战区域(消防教育训练基地)分别进行训练。在训练中逐步磨合、调整、完善,达到灵活掌握、熟练运用的目的;合成训练,即支队司令部门根据常见类型火灾预先选定模拟作战对象(实地),设定灾情,同过模拟报警的方式调派责任区中队到场实施扑救,然后指挥部按战斗编队调集几个编队增援力量到场实施救援。主要是练编队前后方配合、组织指挥、战术运用,从而达到大型灭火救援现场多个单位联合

作战忙而有序的作战目的。

五、战斗编队实际作用

(一)简化大型灭火救援现场组织指挥程序

灭火救援组织指挥具有较强的时效性,且实施过程较为复杂,为提高指挥作战过程的工作效率,必须尽可能的简化指挥活动的程序。我们平时通过建立编队基本模式,战时按编队调派,途中明确任务,到场明确主战车位置即可,从而删减了到场临时组合这一程序,简化了指挥过程,

指挥效率可以得到大大提高。

(二)方便大型灭火救援能力的估算

灭火救援作战能力估算是指挥决策的基本依据。大型灭火救援战斗编程和评估,能使各战斗编队的作战能力清楚直观的表述出来,从而使战斗方案更加趋于科学合理。

(三)有利于提高编队前后方之间协同作战能力

各战斗编队在灭火救援战斗中前后方协同的好坏,主要取决于平时的战术素养与合成训练。平时按编队进行训练,处警时按编队调派,作战时按编队展开,使开始出动时就形成一个相对稳定的作战体系,明确了各自任务,有利于合成作战能力的提高。

推荐第9篇:编程感想

编程感想

从C学到C++ , 就是从面向过程到对象 ,又从C++到JAVA , 就是从静态语言到动态语言 。 编程语言的学习无怪乎多写代码 , 多参考 ,多了解 , 那些所谓的牛人 , 又有多牛呢 ? 我想开始时也跟我们刚学时一样 , 但人家坚持住了 ,所以被牛了 ! 编程要养成好的习惯!

下面是我在一篇博文上看到的 , 很受用 , 与大家分享 态度篇

1.做实事 不要抱怨,发牢骚,指责他人,找出问题所在,想办法解决。对问题和错误,要勇于承担。

2.欲速则不达 用小聪明、权宜之计解决问题,求快而不顾代码质量,会给项目留下要命的死角。

3.对事不对人 就事论事,明智、真诚、虚心地讨论问题,提出创新方案。 4.排除万难,奋勇前进 勇气往往是克服困难的唯一方法。 学习篇

5.跟踪变化 新技术层出不穷并不可怕。坚持学习新技术,读书,读技术杂志,参加技术活动,与人交流。要多理解新词背后的所以然,把握技术大趋势,将新技术用于产品开发要谨慎。

6.对团队投资打造学习型团队,不断提高兄弟们的平均水平。 7.懂得丢弃 老的套路和技术,该丢,就得丢。不要固步自封。

8.打破砂锅问到底 不断追问,真正搞懂问题的本质。为什么?应该成为你的口头禅。 9.把握开发节奏 控制好时间,养成好习惯,不要加班。 开发流程篇

10.让客户做决定 让用户在现场,倾听他们的声音,对业务最重要的决策应该让他们说了算。

11.让设计指导而不是操纵开发 设计是前进的地图,它指引的是方向,而不是目的本身。设计的详略程度应该适当。

12.合理地使用技术 根据需要而不是其他因素选择技术。对各种技术方案进行严格地追问,真诚面对各种问题。

13.让应用随时都可以发布 通过善用持续集成和版本管理,你应该随时都能够编译、运行甚至部署应用。

14.提早集成,频繁集成 集成有风险,要尽早尽量多地集成。 15.提早实现自动化部署 16.使用演示获得频繁反馈 17.使用短迭代,增量发布

18.固定价格就意味着背叛承诺 估算应该基于实际的工作不断变化。 用户篇 19.守护天使 自动化单元测试是你的守护天使。 20.先用它再实现它 测试驱动开发其实是一种设计工具。 21.不同环境,就有不同问题 要重视多平台问题。 22.自动验收测试

23.度量真实的进度 在工作量估算上,不要自欺欺人。 24.倾听用户的声音 每一声抱怨都隐藏着宝贵的真理。 编程篇

25.代码要清晰地表达意图

代码是给人读的,不要耍小聪明。 26.用代码沟通 注释的艺术。

27.动态地进行取舍 记住,没有最佳解决方案。各种目标不可能面面俱到,关注对用户重要的需求。

28.增量式编程 写一点代码就构建、测试、重构、休息。让代码干净利落。

29.尽量简单 宁简勿繁。如果没有充足的理由,就不要使用什么模式、原则和特别的技术。 30.编写内聚的代码 类和组件应该足够小,任务单一。 31.告知,不要询问 多用消息传递,少用函数调用。 32.根据契约进行替换 委托往往优于继承。 调试篇

33.记录问题解决日志 ) 不要在同一地方摔倒两次。错误是最宝贵的财富。 34.警告就是错误 忽视编译器的警告可能铸成大错。

35.对问题各个击破

分而治之是计算机科学中最重要的思想之一。但是,要从设计和原型阶段就考虑各部分应该能够很好地分离。

36.报告所有的异常 37.提供有用的错误信息

稍微多花一点心思,出错的时候,将给你带来极大便利。 团队协作篇

38.定期安排会面时间 常开会,开短会。

39.架构师必须写代码

不写代码的架构师不是好架构师。好的设计都来自实际编程。编程可以带来深入的理解。

40.实行代码集体所有制 让开发人员在系统不同区域中不同的模块和任务之间轮岗。 41.成为指导者 教学相长。分享能提高团队的总体能力。

42.让大家自己想办法

指引方向,而不是直接提供解决方案。让每个人都有机会在干中学习。

43.准备好后再共享代码 不要提交无法编译或者没有通过单元测试的代码! 44.做代码复查 复查对提高代码质量、减少错误极为重要。 45.及时通报进展与问题

主动通报,不要让别人来问你。

推荐第10篇:编程员

1、大学生活丰富多彩,会令你一生都难忘,但难忘有很多种,你可以学了很多东西而难忘,也会因为什么都没学到而难忘!

2、计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。

3、记住:万丈高楼平地起!基础很重要,尤其是专业基础课,只有打好基础才能学得更深。

4、C语言是基础,很重要,如果你不学好C语言,那么什么高级语言你都学不好。

5、C语言与C++语言是两回事。就象大熊猫和小熊猫一样,只是名字很像!

6、请先学习专业课《数据结构》、《计算机组成原理》,不要刚开始就拿着一本VC在看,你连面向对象都搞不清楚,看VC没有任何用处。

7、对编程有一定的认识后,就可以学习C++了。(是C++而不是VC,这两个也是两码事!C++是一门语言,而VC教程则是讲解如何使用MFC类库,学习VC应建立在充分了解C++的基础之上。看VC的书,是学不了C++语言的。)

8、学习编程的秘诀是:编程,编程,再编程;

9、认真学习每一门专业课,那是你的吃饭碗。

10、在学校的实验室就算你做错一万次程序都不会有人骂你,如果你在公司你试试看!所以多去实验室上机,现在错的多了,毕业后就错的少了。

11、从现在开始,在写程序时就要养成良好的习惯。

12、不要漏掉书中任何一个练习题--请全部做完并记录下解题思路。

13、你会买好多参考书,那么请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码。

14、VC、C#、.NET这些东西都会过时,不会过时的是数据结构和优秀的算法!

15、记住:书到用时方恨少。不要让这种事发生在你身上,在学校你有充足的时间和条件读书,多读书,如果有条件多读原版书,你要知道,当一个翻译者翻译一本书时,他会不知不觉把他的理念写进书中,那本书就会变得像鸡肋!

16、我还是强调认真听专业课,因为有些课像《数据结构》、《编译原理》、《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月,有的甚至看了好几年都看不明白。

17、抓住在学校里的各种实践的机会,要为自己积累经验,就业时经验比什么都有用。

18、多去图书馆,每个学校的图书馆都有很多好书等你去看!

19、编程不是技术活,而是体力活。

20、如果你决定了要当一个好的程序员,那么请你放弃游戏,除非你是那种每天只要玩游戏就能写出好程序的天才!

21、你要有足够的韧性和毅力!有个高手出了一道题测试你的韧性和毅力:找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。

22、找到只属于你自己的学习方法!不要盲目的追随别人的方法,适合自己的才是最好的!

23、请热爱程序员这项工作!

招聘要求:

1、本科以上学历,电子信息、计算机等相关专业优先;

2、至少两年VC++编程经验,代码可读性好,熟悉STL和Socket编程,了解多种Windows通讯机制;

3、至少熟悉一种大型SQL数据库,熟练使用SQL语句,熟悉存储过程等脚本开发;

4、有电信增值业务或WEB底层开发经验者优先。

以下是程序员之家的一段(灌水):

1.把C++当成一门新的语言学习(和C没啥关系!真的。);

2.看《Thinking In C++》

3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己又是初学者所以就不看;

4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;

5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;

6.会用Visual C++,并不说明你会C++;

7.学cla并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;

8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;

9.看Visual C++的书,是学不了C++语言的;

10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?

11.浮躁的人容易问:我到底该学什么;——别问,学就对了;

12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;

13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!

14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;

15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;

16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;

17.C++不仅仅是支持面向对象的程序设计语言;

18.学习编程最好的方法之一就是阅读源代码;

19.在任何时刻都不要认为自己手中的书已经足够了;

20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;

21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;

22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;

23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;

24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;

25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;

26.请看《程序设计实践》,并严格的按照其要求去做;

27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;

28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;

29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;

答案补充

30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;

31.学习编程的秘诀是:编程,编程,再编程;

答案补充

32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;

33.记住:面向对象技术不只是C++专有的;

34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;

35.把在书中看到的有意义的例子扩充;

36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;

答案补充

37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;

38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;

39.C++语言和C++的集成开发环境要同时学习和掌握;

答案补充

40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;

41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;

42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);

43.别心急,设计C++的cla确实不容易;自己程序中的cla和自己的cla设计水平是在不断的编程实践中完善和发展的;

44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;

45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;

46.记录下在和别人交流时发现的自己忽视或不理解的知识点;

答案补充

47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;

48.保存好你写过的所有的程序——那是你最好的积累之一;

49.请不要做浮躁的人;

50.请热爱C++!

第11篇:编程 题目

第一题:

不使用任何库,编写一个函数char*remove(const char* src,char c ),参数src为输入的字符串,长度不确定,不为空。参数c为任何可能的字符返回值。Src中删除了所有字符c的字符串。对是否通过动态分配内存的方式返回这个字符串还是使用静态的内存不做限制。

第二题:

如下这段代码是否有错误,如果有,请找出错在哪里写出原因并改正

Voidf( )

{

Charstr[6]=”12345”,

Constchar*p1=str,

Char *constp2=str

P1[0]=’6’

P2{0}=’7’

P1=NULL

P2=NULL

}

第三题:

调用函数Function2之后,x, y, z三个变量的值是什么?

VoidFunction2(int x,int& y, int* z)

{

X=1;

Y=2

*z=3;

Return;

}

Intx,y,z=0

Function2(x, y, &z);

第四题:

正则表达式 .*\*123\d能与以下哪些选项匹配? CD

A.******123

B.*****_1234

C.******1234

D._*1234

E._*12

3写出下面的生活场景可以用那种数据结构描述

(1) 汽车进出加油站加油。(2)货车装货、卸货。____

第六题:

在32位操作系统中A占__ 字节,B占____字节

structA

{

inta;

int*b

charc;

}

union B

inta ;

charb;

char * c;

};

阅读下面的C/C++源代码,请指出哪些代码是错误的或有风险,如果有,请指出错误是什么? const int * foo1()

{

int a = 10;

return &a;

}

const int * foo2()

{

int a = new int(10);

return a;

}

const int * foo3()

{

static int a = 10;

return &a;

}

int main (int artc,char* argv[])

{

const int *p1=foo1();

const int *p2=foo2();

const int *p3=foo3();

return 0;

}

第八题:

调用函数Founction2之后,x,y,z三个变量的值是什么?

void Function2(int x,int &y,int *z)

{

X = 1;

y = 2;

*z=3;

Return ;

}

int x,y,z=0;

Function2(x,y,&z);

(必知必会)在32位X86平台,下述代码段输出结果是? unsigned int i=1;

unsigned int j=2;

printf(“0x%08x\n”,i,j);

if (i – j >0){

Printf(“%d>%d”,i,j);

}else{

printf(“%d

}

输出为:,

第九题:

请指出以下程序中的错误

Void test1()

{

char string [11];

char *str1=”Sinfor test”;

strcpy(string,str1);

}

第十题:

有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为__A__

A0;B1;C2;D3;

设有以下定义

Int a=0double b=1.25char c=’a’#define d 2 则下面语句中错误的是____

Aa++Bb++Cc++Dd++

第十一题:

请问运行TEST函数会有什么样的结果

Void test(void)

{

Char*str=(char*)malloc(100);

Strcpy(str,”hello”);

Free(str);

If(str!=NULL)

{

Strcpy(str,”world”);

Printf(str);

}

}

第12篇:编程心得体会

篇1:java编程心得体会 java编程心得

计算机3班 窦金霞 20104773 最近几周一直在弄程序,说实话真的很累,但累中也有成功的快乐。我觉得学到了很多东西,这是只看课本知识所不能学到的。

说实话,以前我一直没学过java虽然我也知道java的重要性,可是即使上课听了,不实践还是掌握不了。因为种种原因,今年我没有买笔记本。没有机器,仅仅靠每周一次的上机练习是绝对不够的。所以我就插空调程序,在舍友们不用的时候自己再接她们的电脑调。

调上一个web版的通讯录程序时我已经感觉到学的很吃力,好多东西都不懂。这次做的这个学生成绩管理系统更复杂了,所以一开始调的时候感觉特别吃力.所以我告诉自己不能放弃,慢慢来,就这样我从最基本的sql语句seion对象开始学起,我觉得我还有太多不懂得所以要比别人付出更多的努力。就这样我一点一点的学着?? 说心里话,在做上一个web版的通讯录时,我就感觉到成功的喜悦。好多地方我都是一点一点的问的,在问的过程中,我也学会了很多,像:servlet和jsp之间跳不过去时有两种解决办法,一是关闭底层类中的db.close;二是将servlet中的throws exception改成try catch以捕捉异常;我还学到了集中查找错误的方法,可以加上两个双斜杠“//”将具体的方法屏蔽掉,一检查是方法错误还是servlet错误,还有就是写上system.out.println()将获得的数据输出,用来检查数据传输过程有没有错误等等 。

虽然在别人看来,这些方法可能都很常规,但是确实我自己学会的,我觉得很有成就感。我已经做好计划了,暑假的时候去买本本用自己的本本练习一下java,虽然下学期不学java了,但是我对java的热情不会因为这个而削减的!

做完这个学生成绩管理系统后,我觉得我对java的看法已经改变了。一前总以为java很繁琐很难,听同学说java不好学,开始又有一些听不懂,所以一直很畏惧java。但真正做了这个系统以后我才感觉到其实任何事都没有难与不难之分,只要你肯努力的去做,世上无难事只怕有心人!

我现在对java学习充满了热情,我知道我还有很多的不足还有很多需要努力的地方,所以我的java之旅将继续进行??篇2:程序设计心得体会 程序设计心得体会 【收获及体会】

通过两个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。是啊,读了那么多年的书,课程设计可是第一次。看着劳动成果,很欣慰!虽然这不是我一个人做的,是大家的共同努力得来的。

刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于画图方面的,可是这点小进展远远不够,这只是一个小小的开始。下一步是上网查,找到了些与我们题目相似的,那时我们每个人都很高兴,可是那还不是我们要的,于是又上网查到了些有关的函数等等,终于在我们大家的努力下,完成了这个程序。 虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!世上无难事,只怕有心人,的确如此。做完这个程序最大的收获就是感受到了集体的力量,当然个人的智慧也是很重要的哦!

做完这个课程设计,我们的自信一下子提高了,我们也会写程序了;尽管对于有些人这种程序会很简单,可对我们c语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在很美妙啊! ——姜* 【收获及体会】

忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。

另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。为了解决此。类问题,最好就是多向同学,老师请教,不要怕难为情。尤其是老师,评他们多年的编写程序的经验,要解决我们的问题,对他们来说只是small case。

在设计这个程序时,我们刚开始是根据老师给我们提供的资料,用画图以及循环将框架设计出来,但是接下去便无从下手了,计算是个关键和难点,我们也查了相应的资料,但是它上面用得是坐标来做的,所以为了方便设计程序,我们也改为坐标来做的,这样计算问题解决了。接下去就是按键问题,我们的资料是用鼠标做的,所以关于按键这个函数就只能我们自己设计,还好手头有类似的资料,经过自己的反复尝试以及与与同学的讨论,这也不难,最好还是被我们搞定了。最后就是闪烁,这个设计的方法很死板,都一个类型,就是算坐标比较烦琐,要确定好它的位置,但是这些只要你自己愿意去尝试,问题都可以迎刃而解的。 从这一个多星期的设计过程中,我看到了大家的拼搏与努力,也让我知道团队精神得难能可贵,尽管一年下来大家不怎么有多大接触,但是彼此之间的友谊已经在我们心里扎根生底,在遇到问题时,我们会共同进退,每个人都很慷慨不会因为是通过自己艰辛劳动设计出来的东西而不准他人剽窃了。总之,这次设计程序让我受益良多,我会好好珍惜像这种难得的机会——薛** 【收获及体会】

自从记事以来就听过了电脑这个高科技,现在终于实现了自己的一个小小愿望——成为了计算机系的一名学生,这学期我们学的c语言,以前就听过这个名字,打开书一看简直一窍不通,学好这门科简直就是一个挑战,课前课后都要把书啃一遍,要不然上课就跟不上,终于学期快结束了,我们有一个课程设计,在两个星期内,完成一个复杂的程序,我们的题目是做一个计算器,计算器从小就见过但让我自己设计一个出来就有点困难了。

第一天,我们都按照老师教的画图函数画计算器的外貌,但发现一个一个画实在是太烦琐,后来在老师的点拨下,我们采取了for语句,果然很快地画出来了,接下来的事就是计算了,用什么函数?怎么用?那个上午就坐那发呆,没有什么新突破,自性心严重受到打击,下午立马找了份材料到图书馆去研究,还专门找了位高手教我,研究了一个下午终于有眉目了,第三天我们成功地把计算功能搞定了,但还有闪烁的功能没有搞,这确实是一个问题,这时团结的力量得到了充分的体现,大家齐心协力,有的找资料,有的帮忙改错,有的??俗话说:“三个臭皮匠顶个诸葛亮。”在大家的共同努力下,我们胜利了。

感谢刘金平老师的淳淳教诲,感谢同学的积极帮忙,我的程序终于顺利完成了,接下来的就是写报告收尾了,看着自己的劳动成果写起报告来特有劲,特有灵感。

很感谢这次的课程设计,它使我更加深刻地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题;另外,做任何事都要有耐心,不要一遇到困难就退缩;在学习和工作中要时刻谨记“团结”二字,它好比通向成功的铺路石,不可或缺。 人生的道路是曲折的,但正是因为曲折人生才光彩夺目,在人生的路上,总遇到重重困难,但正是因为困难我们才变的更坚强。今后的路还很长,面对困难,让我们用行动去俘虏它吧! ——毛** 【收获及体会】

做了两周的课程设计,有很多的心得体会,更多的是同学之间的合作精神, 这道课程设计花了我们一到两周的时间,几人合作,老师的帮忙才完成。我第一次完成这么完美的杰作,心理有一份别样的滋味,在设计过程中,我付出了很多,也懂得了只有付出才有回报。在这次设计中,我遇到了很多困难,但我没有向困难低头,通过查询资料,虚心向同学、老师请教,才一一得到了解决。我发现平时学的太少了,在今后我首先要把老师在课堂讲的弄懂,弄透,在此基础上利用课余时间多看课外书籍,拓宽知识面。在设计过程中,合作精神必不可少。单凭一个人的力量是不能完成的,毕竟一个人学的很有限。每个人掌握的不同。我相信:态度决定一切,只有努力才有收获。

第一天上机时对如何编计数器程序一点头绪都没有,只是将从图书馆借来的关于如何制作图形看了一遍,大体上有了了解。

第二天我就着手画计数器图形,虽然有些人图形已画好,可我没有着急,毕竟别人花的时间比我多,为了使图形美观我不断运行、调试,直到自己满意为止。

接下来是星期五,说实话那天蛮难熬的,一天都泡在机房。眼睛有点吃不消,可没有办法,将来我们就靠计算机吃饭,再苦再累也要坚持。在已编好的程序上又加了一点精髓,怎样使字符闪烁,这也是我们几个人互相讨论的结果。

第二周,通过周末到网上查的资料,和参考资料又加入计数器的灵魂算法。 接下来几天再将程序不断完善、加工,计数器程序初露头角。 最后小结:程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。可得最后结论。在程序设计中,可认为也是一个社会,每个一同的社会成员都有不同的想法。程序设计学得的好坏要看你在社会中解决问题的能力的高低,所以不同的人编程的结果是不同的。在这个社会中,经验与想法最为重要。 —左** 【收获及体会】

c语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可以激发创新意识,还可以开发创造能力、培养沟通能力。这次实习时间虽然仅有一个星期,但确实使我受益非浅。通过实习我丰富了计算机操作经验,更加深了对c语言的了解,熟悉了其环境,更增强了对turbo c的使用技巧。

另外,实习中老师对我们进行了细心、耐心的指导,鼓励我们对程序进行合理改进,培养了我们的创新意识和创新能力。原来是我认为可怕的课程设计,就在种种辅助条件下完成了,心里有说不出的高兴。

虽说捧着自己的成果很高兴,但成果背后总是付出很大的努力。

一个多礼拜中,我们有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。一个多礼拜的时间我们经历了很多,也收获了很多。与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题.一个多礼拜的挣扎,绞尽脑汁终于带着麻木的手指和大脑脱出那堆“泥潭”。现在的心情是如鱼得水,干涩的眼睛前方是万里晴空。终于,所有的努力即将化成了一个个铅字,打印机“滋滋”的声音仿佛已经宛如天籁般悦耳地篇3:程序设计心得 培训心得体会

《程序设计》是理工类专业必修的计算机技术基础课,是一门实践性很强的课程,不仅要求学生掌握概念,而且还要求学生动手编程并进行上机调试、运行。听了吴教授短短的14节课,受益匪浅。

对于这门课程,实践性非常强。吴教授从课程改革这道题目讲起,结合自身经验,重点突出生动形象。以下为我的几点体会:

1.程序设计必须自己亲自动手动脑上机调程序,否则是学不会编程序的。

其中讲到职业技术院校的实训环节很重要,锻炼学生的好机会好平台,培养学生动手编程的能力和合作精神。大家在一起学习,取长补短,在实训中长知识,提高同学们的学习热情和自学能力。我个人觉得这种教学方式效果非常好,还能激发学生的学习兴趣,用书本上的理论知识来指导实践、解决一些实际生活中的问题。 2.讲授的重要目的是激发学生的兴趣。

因为大多数学生初次接触计算机语言,觉得迷茫、不知所措,觉得这门课程

难、抽象、不易理解,学起来比较吃力,所以讲课过程中必须让学生主动愿意去思考,这就涉及到一个兴趣问题,因为难理解的东西好多学生时间长了都不愿意去学,这就需要教师在授课过程中做工作,如何抓住学生的心是关键。

吴教授授课中基本上不讲书本上的例子,书本上的例子留给学生自己下去自学,而是选择一些贴近生活的例子或者有故事背景的例子,从例子引出所涉及到的知识点,这样就能激发学生的兴趣。其中一个例子“韩信点兵”,从这个故事引出c语言当中函数的递归调用思想。 这就需要我们在上课前做足功课,想法设法吸引学生们的注意力,从一些感兴趣的例子中一步一步引导学生去思考,既增加了与学生间的互动,又锻炼了学生的思考能力。

3.遇到任何问题都不要盲目去解题,要抓住任何事物发展过程中的规律,按照规律再设定合适的算法。

同样授课也一样,首先要明确这门课程的教学目的:通过理论和实践上机教学,使学生较好地掌握 c语言的基本知识,掌握基本的程序设计过程和方法,具备初步的高级语言程序设计能力,并能熟练应用 vc++ 6.0集成环境进行c语言程序的编写、编译与调试,达到能应用c语言解决一般编程问题的水平。目的明确了再设定合适的教学方法。 以上3点就是我的体会。

第13篇:编程心得

由于大学的时候是网络方向的,没大接触编程,来到这个学校就开始自学C++,但是感觉不知道具体该做什么。听人说只学习C++的理论知识是不可能做出什么实际的东西的,而且VC和C++不是一回事,“VC只是一个开发环境,MFC才是它的精华”,我就是一只无头苍蝇,根本找不到学习编程的方向,因为导师没有项目,我不知道从何做起,同学告诉我从具体的小实例开始做,可以用MFC窗口界面编程。于是我就在图书馆借了本这方面的书(MFC Windows应用程序设计)。这种C++的高级应用,MFC跟以前的控制台编程有比较大的差异,实现了部分可视化编程。对我来说真的很难很难,这本书上面好多小例子都是可以实现的,我就按照上面的代码进行模仿着写,实现之后感觉挺有成就感的,可是MFC的符号确实是很长很难记。但是我觉得如果按照大学里学习C语言这门初级语言的方法来学习的话是很可怕的,就像我们学了十几年的英语一样,单词背了几千个,会做题,会写作文,但是一碰到老外的时候,却像哑巴和聋子,说不出听不懂,我们最初学习C语言时就是搞懂每一个细节,在课本上纠错,记住语法规则却很少上机实践,不解决实际问题,等到真正编程的时候,就不知如何下手了。

我个人感觉在学习MFC时MSDN帮助文档特别重要,那些难记住的类,方法都可以查看MSDN Library,很多代码可以直接复制粘贴。

我是看孙鑫老师的教程学习的,但是感觉这个教程好难懂,好多东西都是理论知识,对实践应用不是很大。

绘制窗口时会出现严重的刷屏问题,

问了解决这一问题,

通过改变背景位图来替代过多的部分的重绘达到更好效果。

一个满载的二维、三维数组都可以用一个足够长的一维数组来装下。 MFC基础细节学习:学习了位图的使用,CBrush类,CDC类,CDialog

类的基本使用,对于菜单的设置初步了解了。

3、mfc编程的初步理解:通过自学了解到mfc编程的实现是通过建立消息映射表来实现各个函数的调用。

(1)通过DECLARE_MESSAGE_MAP声明消息映射;

(2)通过BEGIN_MESSAGE_MAP和宏END_MESSAGE_MAP来包含消息映射宏, 创建消息映射列表;

(3)为消息处理函数添加代码,实现需要的响应。通过以上三大步实现消息映射。每种对话框的操作要通过先建立相应的CDialog类来具体进行。

MFC编程只是一种工具,而编程的核心还是代码的实现。我们在使用MFC编程时要想学得更好就要不断练习,更具体的了解其中的各种类、函数,各种工具,MFC是一个巨大的工具箱,但是如果不知道工具箱里面的工具怎么用,那在好的工具也无用武之地。所以,我认为此次编程小实习主要是让我初步接触了MFC如何实现可视化编程。未来要想真正掌握MFC编程还要不断的深入了解各种MFC工具,真正的与代码结合起来实现高效实用的编程效果.最令我痛苦的是,学了一段时间回过头来看,感觉好像什么都没学到。

API函数是Windows提供给应用程序的编程接口, 任何用户应用程序必须运行在API函数之上.直接使用API编程是了解操作系统运行细节的最佳方式, 而且熟知API函数也是对程序开发者的一个最基本的要求.这课程以API函数作为起点介绍Windows编程, 使我撇开C++的特性专心熟悉Win32编程思路和消息驱动机制.

虽然MFC仅仅是对API函数的简单封装, 由于我之前对C++语言的了解不够, 不清楚框架程序的工作机制, 即便是有经验的程序员在MFC复杂的结构面前也显得非常困惑.他们会\"用\"MFC, 却不知道为什么这么\"用\", 在运行程序出错时这种现象带来的问题就很明显, 他们不会改.

其实,系统的学起来MFC还是比较清晰的,MFC工程程序肯定有两个类,一个是CWND类,另一个就是应用程序类CWINAPP类。也就是必须有应用程序类,和窗口类。

在编写MFC程序的过程中我也着实体验到了MFC编写程序的局限性。MFC虽然给开发者提供了一个现成的框架,着实便利的开发者的开发。但同样也造成了一个巨大的问题,开发者很难开发出具有个人特色的软件,想要重新改写程序整体的外观就比较困难,并且C++在编写程序时需要开发者自己定义变量的空间开辟和回收,这点上没有JAVA开发时来的方便,尤其是C++当中的指针机制,一不注意还是很容易造成程序错误的。

虽然MFC中的方法比较难写,尤其是消息映射函数,庆幸的是好多都不需要自己去写,我们可以通过ClaWinzard类向导来指引我们进行选择,想添加什么消息映射只需鼠标操作即可。

通过MFC Windows应用程序设计的学习,我掌握了一些知识: 应用程序类,框架窗口类,视图类,文档类构成了MFC应用程序框架,框架的功能是通过各类之间的协调工作实现的类。

MFC采用文档/试图结构来实现数据和数据表现的分离,文档试图的分离有利于数据和数据表现的单独改变。

MFC用类信息存储了动态创建类对象时所需要的消息。

经过这门课程的学习不但使我掌握了Windows应用程序设计的基本方法,还可以使我进一步深刻,全面地理解面向对象程序设计的思想,从而把握程序设计方法的发展方向。

第14篇:数控编程

简答题

一、试述G83与G73的区别

答:G73每次以切削速度钻进Q深度后,再快速退刀d的距离,然后再进行下次切削,而G83则每次钻进一个Q深度后。匀快速退刀至安全平面高度,然后快速下降至前一个Q深度之上的d处,再以进给深度钻至下一个Q深度。

二、试述G8

5、G8

6、G8

7、G8

8、G89的主要区别。

答:它们的主要区别在于孔底动作和逃离方式的不同。即G85没有孔底动作,逃离方式为切削进给,用于铰孔循环;G86孔底动作为主轴停止,逃离方式为快速移动,用于镗孔循环;G87孔底动作为主轴停止,做径向移动,逃离方式为快速移动,用于反镗孔循环;G88孔底动作为进给暂停——主轴停止,逃离方式为手动操作;G89孔底动作为进给暂停,逃离方式为切削进给。

三、什么是工件坐标系,试述其工件坐标系的设计原则。

答:工件坐标系是编程人员为了编程方便人为的在工件工装夹具或者其他位置选定一点为原点坐标系。设定工件坐标原则:①应尽量满足编程简单,尺寸换算少,引起误差小等条件;②工件坐标系的坐标轴方向要与机床的坐标轴的方向一致。

四、什么是机床远点,机床参考点,编程原点?

答:①机床原点是机床制造商设计在机床上的一个物理位置,是数控机床的基准位置,用于使机床与控制系统的同步,建立测量机床运用坐标的起始点;②机床参考点是机床制造商在机床上用形成开关设置的一个物理位置,是各轴运动的极限位置点,是测量系统的极限位置点,与机床的原点相对位置是固定的,机床出厂前由制造商精密测量测定;③编程原点是编程人员在数控编程中定义在工件上的几何基准点,通常以此原点作为工件坐标系的原点。

五、简述刀具补偿的分类和作用。

答:刀具补偿分为半径补偿和长度补偿。其作用有:①因磨损重磨货换新刀引起刀具直径长度的改变后,不必修改编程,只需在刀具参考系设置中输入变化后的刀具直径、长度 ②同一程序中,对同一类型的刀具,利用刀具补偿可进行组精加工。

六、试述铣床坐标轴的正负方向的判断。

答:①规定正方向的前提,假定工件不动,刀具远离工件的方向为正方向②判断Z轴Z轴与主轴方向一致,刀具远离工件的方向为正方向③判断X轴X轴一般是水平的,平行于工件装夹面,且垂直于Z轴,从刀具和主轴向立柱看,右手方记为X轴的正方向④判断Y轴在确定X、Z轴的正方向后,用右手法则去决定Y轴及其正方向。

七、试述数控加工过程。

答:①零件工艺分析②编写加工程序③像数控系统输入加工程序④显示走刀路径⑤试切并根据加工结果调整程序⑥正式批量生产

选择题

1、数控机床的核心是数控装置,点位控制机床有;数控钻床、

数控冲床、数控镗床。

2、G01后面的X、Y、Z的含义是加工终点坐标值,如果是G91,

则是加工终点相对于加工起点的坐标增量,G01如果是在数控车床中,X用直径值表示

3、G02的X、Y、I、J,其中I、J的是指圆心相对于圆弧的起点坐

标增量,G02的X、Y、R 中,R指圆弧半径,如果是优弧,R取负值,如果是劣弧,R取正值。

4、G92 的X、Y是机床坐标原点或换刀点在工件坐标系下的坐标

值。

5、开机第一件事是手动回参考点

6、G90在数控铣和数控车中的含义:

数控铣:G90表示绝对坐标

数控车:G90表示单一固定循环

第15篇:CNC编程岗位职责

CNC编程岗位职责

负责整套模具的程序编制、设计出合理的电极并做出标准的EDM图纸,配合各部门做好需要设计变更工作以及跟踪CNC、EDM的现场加工,有些电极需W/C的做出2D图纸协助W/C完成.及时查看刀具的使用以及库存情况,并协助CNC现场加工出符合标准的工件,在不影响质量的情况下编制出高效合格的程序,从而提高加工效率,在工作中要仔细检查,要做好与有关部门的沟通工作来减少不必要的错误,做到防微杜渐。

第16篇:数控编程论文

数 控 编 程 实习报 告

分院:机电分院 班级:机制4班 姓名:宣

科 学号:20130410220403 日期:2016.12.21

数控编程是数控加工准备阶段的主要内容之一,通常包括分析零件图样,确定加工工艺过程;计算走刀轨迹,得出刀位数据;编写数控加工程序;制作控制介质;校对程序及首件试切。有手工编程和自动编程两种方法。总之,它是从零件图纸到获得数控加工程序的全过程。

本学期我分院布置了数控编程的实习任务为期2个周期共计2个课时,虽然时间短但是这次实习收益颇多。

每期的课堂讲座先是在机房进行理论学习然后下基地进行实践操作。

手工编程是指编程的各个阶段均由人工完成。利用一般的计算工具,通过各种三角函数计算方式,人工进行刀具轨迹的运算,并进行指令编制。这种方式比较简单,很容易掌握,适应性较大。使用于非模具加工的零件。

编程步骤

人工完成零件加工的数控工艺 分析零件图纸 制定工艺决策 确定加工路线 选择工艺参数 计算刀位轨迹坐标数据 编写数控加工程序单 验证程序 手工编程 刀轨仿真

优点

主要用于点位加工(如钻、铰孔)或几何形状简单(如平面、方形槽)零件的加工,计算量小,程序段数有限,编程直观易于实现的情况等。

缺点

对于具有空间自由曲面、复杂型腔的零件,刀具轨迹数据计算相当繁琐,工作量大,极易出错,且很难校对,有些甚至根本无法完成。

第 2 页 自动编程

定义

对于几何形状复杂的零件需借助计算机使用规定的数控语言编写零件源程序,经过处理后生成加工程序,称为自动编程。

随着数控技术的发展,先进的数控系统不仅向用户编程提供了一般的准备功能和辅助功能,而且为编程提供了扩展数控功能的手段。FANUC6M数控系统的参数编程,应用灵活,形式自由,具备计算机高级语言的表达式、逻辑运算及类似的程序流程,使加工程序简练易懂,实现普通编程难以实现的功能。

数控编程同计算机编程一样也有自己的"语言",但有一点不同的是,现在电脑发展到了以微软的Windows为绝对优势占领全球市场.数控机床就不同了,它还没发展到那种相互通用的程度,也就是说,它们在硬件上的差距造就了它们的数控系统一时还不能达到相互兼容.所以,当我要对一个毛坯进行加工时,首先要以我们已经拥有的数控机床采用的是什么型号的系统.

①通过这次实习我们了解了现代数控机床的生产方式和工艺过程。熟悉了一些材料的成形方法和主要机械加工方法及其所用主要设备的工作原理和典型结构、工夹量具的使用以及安全操作技术。了解了数控机床方面的知识和新工艺、新技术、新设备在机床生产上的应用。

②在数控机床的生产装配以及调试上,具有初步的独立操作技能。

③在了解、熟悉和掌握一定的数控机床的基础知识和操作技能过程中,培养、提高和加强了我的动手能力、创新意识和创新能力。

④这次实习,让我们明白做事要认真小心细致,不得有半点马虎。同时也培养了我们坚强不屈的本质,不到最后一秒决不放弃的毅力! ⑤培养和锻炼了劳动观点、质量和经济观念,强化遵守劳动纪律、遵守安全技术规则和爱护国家财产的自觉性,提高了我们的整体综合素质数控编程实习心得体会

第 3 页

第17篇:硬件编程规则

1、布局:

头文件布局

#ifndef 文件名_H(全大写) #define 文件名_H 其它条件编译选项

#include(依次为标准库头文件、非标准库头文件)

常量定义

全局宏

全局数据类型

类定义

模板(template)(包括C++中的类模板和函数模板) 全局函数原型 #endif

C文件文件头(参见第三章“注释”)

#include(依次为标准库头文件、非标准库头文件)

常量定义

文件内部使用的宏

文件内部使用的数据类型

全局变量

本地变量(即静态全局变量)

局部函数原型

类的实现

全局函数

局部函数

if、else、else if、for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 { }。

所有运算符两端应该各有至少一个空格

程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。{ }之内的代码块使用缩进规则对齐。 正例:

void Function(int iVar) {

// 独占一行并与引用语句左对齐。

while (condition) { DoSomething();

// 与{ }缩进4格 } }

Switch规则: Switch(iCode) { case 1: break;

case 2:

break;

default:

break; } 或者

Switch(iCode) { case 1: break;

case 2:

break;

default:

break; }

不同逻辑程序块之间要使用空行分隔。 正例:

void Foo::Hey(void) { [Hey实现代码] } // 空一行 void Foo::Ack(void) { [Ack实现代码] }

括号内空格添加规则 正例:

例子中的 凵 代表空格。

for凵(i凵=凵0;凵i凵

for(i凵=凵0;凵i凵

长表达式(超过80列)要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐。 说明:条件表达式的续行在第一个条件处对齐。

for循环语句的续行在初始化条件语句处对齐。 函数调用和函数声明的续行在第一个参数处对齐。 赋值语句的续行应在赋值号处对齐。 正例:

if ((iFormat == CH_A_Format_M)

&& (iOfficeType == CH_BSC_M)) // 条件表达式的续行在第一个条件处对齐 {

DoSomething(); }

for (long_initialization_statement; long_condiction_statement;

// for循环语句续行在初始化条件语句处对齐 long_update_statement) {

DoSomething(); }

// 函数声明的续行在第一个参数处对齐 BYTE ReportStatusCheckPara(HWND hWnd,

BYTE ucCallNo,

BYTE ucStatusReportNo);

// 赋值语句的续行应在赋值号处对齐

fTotalBill = fTotalBill + faCustomerPurchases[iID] + fSalesTax(faCustomerPurchases[iID]);

2、注释规则:

文件头部注释格式:(中英文不做硬性要求,假如多人次对已有注释存在异议,则建议修改)

文件头部的中文注释:

/********************************************************************* * 内容摘要: // 简要描述本文件的内容,包括主要模块、函数及其功能的说明 * 其它说明: // 其它内容的说明 * 当前版本: // 输入当前版本

* 作

者: // 输入作者名字及单位

* 完成日期: // 输入完成日期,例:2000年2月25日 *

* 修改记录1:// 修改历史记录,包括修改日期、修改者及修改内容 *

修改日期: *

版 本 号: *

修 改 人: *

修改内容:

* 修改记录2:…

**********************************************************************/

下面是文件头部的英文注释:

/*********************************************************************** * Description:

// 简要描述本文件的内容,完成的主要功能 * Others:

// 其它内容的说明 * Version:

// 输入当前版本 * Author:

// 输入作者名字及单位 * Date:

// 输入完成日期,例:2001-12-12 *

* History 1:

// 修改历史记录,包括修改日期、修改者及修改内容 *

Date: *

Version: *

Author:

*

Modification:

* History 2: …

**********************************************************************/

函数头部注释规则:(中英文不做硬性要求,假如多人次对已有注释存在异议,则建议修改)

下面是函数头部的中文注释:

/********************************************************************** * 功能描述: // 函数功能、性能等的描述

* 访问的表: //(可选)被访问的表,此项仅对于有数据库操作的程序 * 修改的表: //(可选)被修改的表,此项仅对于有数据库操作的程序

* 输入参数: // 输入参数说明,包括每个参数的作用、取值说明及参数间关系 *

//多行第二行 * 输出参数: // 对输出参数的说明。 * 返 回 值: // 函数返回值的说明

* 其它说明: // 其它说明

*修改记录1:// 修改历史记录,包括修改日期、修改者及修改内容 *

修改日期: *

版 本 号: *

修 改 人: *

修改内容:

***********************************************************************/

下面是函数头部的英文注释:

/********************************************************************** * Description:

* Table Acceed: * Table Updated: * Input:

// 函数功能、性能等的描述

//(可选)被访问的表,此项仅对于有数据库操作的程序 //(可选)被修改的表,此项仅对于有数据库操作的程序

// 输入参数说明,包括每个参数的作用、取值说明以及参数间关系

// 对输出参数的说明 // 函数返回值的说明

// 其它说明

// 修改历史记录,包括修改日期、修改者及修改内容 * Output: * Return: * Others:

* History 1:

*

Date: *

Version: *

Author:

*

Modification:

* History 2: …

**********************************************************************/

注释尽量多加(源程序有效注释量以20%为参考)在逻辑处理以及变量说明上;注释所加位置为代码上侧(代码过长时加在上方,且需要与代码对齐)或者右侧;

3、文件命名规则

以能将代码实现功能做一概括性描述为准则,大小写不限,最好全部小写

4、变量以及函数规则:

函数:

A、功能内部封装的尽量加static;

B、命名:功能描述+动词+名词(FuncDoSomething);

变量:

A、功能内部封装的尽量加static; B、非指针命名:类型+描述(s8Temp) C、指针命名:p+类型+描述(float *pfTemp uint8 *pu8Temp) D、部分只是用于循环的变量可不受此限制,比如(for i= 0;……

结构体:(以小写t开头,后缀Def) typedef struct tForExampleDef {

}tForExampleDef; tForExampleDef tTestDevice, *ptTestDevice;

联合:(以小写u开头,后缀Def) typedef union uForExampleDef {

}uForExampleDef, *puForExampleDef; uForExampleDef uTestDevice;

5、强制规则:

A、涉及常量的逻辑判断,常量放前面;

B、指针定义时置空,释放时置空,使用时判断是否为空;

第18篇:编程的学习方法

编程的学习方法:

编程的学习与别的课程的学习方法不一样,别的你可以等老师告诉你正确答案,然后你自己死记硬背,到考试的时候就可以得高分,现在的教育模式造就的是背书高手,学生的思想都被束缚了,但是你在学习编程的时候,不能把重点放在死记硬背上,它是一个综合性很强的东西。

不只是学编程,学电脑别的课程也是一样,它的工作原理是什么?有时候与现实中的事情联系起来学就很容易理解了,电脑原理也确实带有某些社会功能的缩影!

“授人以鱼,不如授人以渔”

现在都提倡素质教育,大家一定要注意学习方法,在学习中只背答案,读死书,这是个方法,但不是最好的学习方法,我看到过很多会考试的学生,会考试不一定有能力!实际上我平时成绩不行,但也很会考试,我也很会背书,小时候背书都是前几名,但是我很讨厌这种应试教育,整个教育体制都这样了,这个体制确实能出人才(主要培养会听话,不会思考的人才),如果有更好的体制,出的人才也许会更多!希望大家能找到一个自己很好的学习方法。

解题思路及方法:

有时候初学者拿到一个题目,要求自己动手写程序,总感到是老虎吃刺猬--无从下手 这个没有什么捷径可走,只有先从最简单的程序开始动手写,必须要自己亲自动手写,开始学习的时候,哪怕是PRINT \"HELLO QBASIC\"这个简单的语句,你都要动手写一遍,有时候书上看得是很明白,往电脑面前一坐大脑就短路了,上机一写不是这里错就那里错!

所以,动手上机运行程序是非常非常重要的!这个就是我学编程的方法。

另外,对于不懂的语句可以在程序中学习,比如不知道LEFT$的用法,你可以在HELP菜单中找到相关的语句介绍,然后把帮助里的示例程序复制 粘贴到程序中运行,然后该动其中的一些字,看看会发生什么情况,这样就可以把语句的用法学会,学的多了,就能总结出规律了!

学电脑不要怕出错,也不要怕把电脑弄坏了,只要你不用铁锤去打它,它不是那么容易坏的!

开动脑筋,学会举一反三:

如果一个题目要求自己做,这个是带有创造性的思维的,这个有时候和语句函数没有多大的关系,一个不会编程的人也会有解决问题的方法的,一种思路确定以后,用什么语言来解决都无所谓了,在程序本身的内涵上没有什么分别,这也是为什么推荐学编程的人先学QBASIC学起的目的。你学QBASIC并不是目的,不是要你用QBASIC去开发什么软件,而是学习编程中的规律,学习调试程序的技巧,学习解决问题的方法,这个才是学QBASIC的真正目的。其实,很多道理都是相通的!

下面我举个最简单的例子来告诉你开阔思路的方法!

比如一个题目:

编程显示下面的图形

*

**

***

****

*****

拿到这个题目,要研究它的规律,它的规律就是每行递增一个*号,所以可以用一个循环来做出这个程序,开始打印一个*,循环第二次打印2个*...一直到结束

for i=1 to 5

print string$(i,\"*\")\'string函数的用法:i为字符的数量,\"*\"是字符

next

书上的标准答案是两个FOR循环解决问题,这个方法通用性很好,也就是说别的语言中也可以用这种方法.当然,我们可以开动脑筋用别的方法来完成这个题目

比如

print \"*\"

print \"**\"

print \"***\"

print \"****\"

print \"*****\"

这个也未尝不可,反正是能做出来,而且又直观,这也是一种解决问题的方法.

当然还有更多的办法

也可以用DATA建立数据,然后程序中使用

或者是把要显示的东西放在一个文件里,然后需要的时候就可以读出来,这个方法也非常实用。

也可以不用print语句,直接去写显存,在dos时代的游戏就是这样做的.

总之,要开动脑筋多想想问题,还要多动手,别只想着玩,心不静下来是做不好任何事情的! 这篇帖子只是告诉你学习的方法,请不要在这个帖子里问作业等等

另外我还是要建议大家对qbasic有了一定了解后,对编程有认识后,马上去学别的语言,这样对你的提高会很有好处!

我只是叙述了我自己的一些学习感悟!不一定适合大家,只能供大家来参考,每个人都有自己的路!

大家学计算机或者别的什么也一样,心要静,心情浮躁的话真的学不深知识的,别在学习的时候还想着玩游戏、看卡通什么的!

另外,我要告诉大家的是目前学校里学习qbasic只是为了给大家编程打基础,所以大家只需要掌握基本的循环、判断.....程序的调试等基本规律就可以了,qbasic学的时间长了容易养成不好的编程习惯。

如果你今后立志要做一个职业程序员,那么最好在掌握基本的编程方法以后,马上学

学别的语言,如果只是业余的爱好就没什么了。

QB与VB有什么区别?

qb编程方法是面向过程的

vb编程方法是面向对象的

面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。

从程序设计的角度来看,面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。

如:窗体、标签、文本框、列表框、页框等等。每个对象有自己的属性和事件。

输入一个3位数,把这个数的百位、十位、个位分解后打印出来。

Cls

Input n

Print n \\ 100

Print n \\ 10 Mod 10

Print n Mod 10

End

百元买百鸡

用100元钱买100只鸡,公鸡每只5元,母鸡每只3元,小鸡3只1元,问能买公鸡、母鸡和小鸡分别多少只? DEFINT A-C

CLS

PRINT \"公鸡\", \"母鸡\", \"小鸡\"

FOR a = 0 TO 20

FOR b = 0 TO 33

c = 100b

IF 5 * a + 3 * b + c \\ 3 = 100 AND c MOD 3 = 0 THEN

PRINT a, b, c

END IF

NEXT

NEXT

1、找出3-100范围内的素数(难度1)

10 CLS

20 FOR i = 3 TO 100

30 k = 0

40 FOR j = 2 TO i – 1可用SQR(i)代替(I-1)

50 IF i / j = INT(i / j) THEN k = 1

60 NEXT j

70 IF k = 0 THEN PRINT i;

80 NEXT I

for i=2 to 100a=0

for j=2 to iif i/j=mod(i/j)then a=1exitforendifnext j

if a=0 then print i next i

第19篇:编程题小结

1011 字符逆序

Description:将一个字符串str的内容颠倒过来,并输出。Str的长度不超过100个字符。

Input:输入包括一行。第一行输入的字符串。 Output:输出转换好的逆序字符串。 Sample input:I am a student Sample output:tneduts a ma I 解答:

#include #include

int main() { int i = 0; char str[100]; gets(str); int len=strlen(str)-1; for(i=len;i>=0;i--) printf(\"%c\",str[i]); return 0; } 1541 课后习题9.1 Description:输入一行电报文字,将字母变成其下一字母(如a变成b,z变成a等) Input:一行字符

Output:加密处理后的字符 Sample Input:a b Sample Output:b c #include int main() { int i; char str[100]; gets(str); for(i=0;i

printf(\"%s\\n\",str); return 0; } 1888 #include int main() { int num; scanf(\"%d\",&num); int n,i,j; while(num) { scanf(\"%d\",&n); for(i=0;i

Input 输入只有三个正整数a、b、c。

Output 输出一行,包括三个的和、乘积、平均数。 数据之间用一个空格隔开,其中平均数保留小数后面两位。

Sample Input 1 2 3 Sample Output 6 6 2.00

#include int main() { int a,b,c,sum,cheng; float ave; scanf(\"%d%d%d\",&a,&b,&c); sum=a+b+c; cheng=a*b*c; ave=sum/3; printf(\"%d %d %.2f\",sum,cheng,ave); return 0; }

第20篇:游戏编程入门

游戏编程入门

经常有人问我,没有编程经验的人该如何开始开发游戏。在此之前,我总是一个个的尽力回答。然而,后来提相同问题的人数增长到难以处理的地步。我决定,是时候把我所有的建议写成文章,作为一个大概。

这篇文章是针对那些想要开发自己游戏,但几乎没有编程经验的人。事实上,我假设读者没有任何编程经验。我主要讨论游戏开发的程序和设计方面,而不是艺术性。我也不准备讲述如何进入游戏行业(这方面已经有足够的资料),而只是让你逐步的开始开发自己的游戏。最后,我所指出的这条道路也并不能作为唯一的,或是最好的路径来学习开发游戏,但至少对我和一些人很有用。 选择一门语言

你要做的第一件事就是选择一门开发语言。你有很多选择,包括

Basic,Pascal,C,C++,Java,等等。也经常会有人争论对于初学者那一门语言是最好的。对于这一系列流行语言的讨论,你可以参看John Hattan的著作,What Language Do I Use?(我用什么语言?)

我的建议是以C和C++开始。有些人会说这些语言对初学者来说太高级了,但因为我自己就是学C++,我并不同意这一说法。而且,C/C++是当今使用最广泛的语言(译者认为应该是汉语。。。),所以你可以找到大量学习资料和帮助。你先学C或C++都无所谓,因为只要学了一个,再学另外一个就很容易。但是,如果你先学C++,请保证在学习面向对象编程之前能理解和使用过程编程(等编程熟练再去学习类)。(译者:C是过程性语言,C++是面向对象语言)

如果你开始学习C/C++,发现太难,那再学一个简单一点的也没关系,比如Basic或Pascal。但是我真的认为,如果你坚持努力,而且有好的资料,学C/C++应该没有太大问题。

你的下一个问题可能会是:“我该怎么学C/C++?”我很高兴你这样问。最好的办法是上课。有老师可以回答你的问题,帮助你产生很大进步,编程练习作业也可以保证你能用到所学的东西。

如果你不觉得上课是个好主意,那最好的办法就是买一些好书。不要花太多时间去选一本什么“超级宝典”或“万用全书”,因为你最终可能会买几本。我建议你去一家书店,然后拿几本比较入眼的C或C++书看,直到找到一本或几本你能看懂,并且可以拿来学习的。同时,你可能会想要一些更深入的,或者一些材料,但是你一旦对于这门语言有了一些了解,我相信你应该有自己更好的选择。在这里,我有必要花一些时间,来说我看到很多初学者所关心的一个事情,特别是年轻人:没有钱买书和其他东西。首先,有很多免费资源可以利用,图书馆,Macmillan Computer Publishing(/personal),有成千上百的编程书籍。但是如果你真的想要成为一个好的程序员,还是应该投入一部分资金。应当想方设法(合法的)帮助你弄到一些钱。

网上也有很多C/C++的学习指南。但是我认为那只能作为补充而不是你自学的主要资源。

选择正确的编译器

你写的程序,或者代码,是以文本方式储存的,你甚至可以用记事本写C/C++程序。但是总需要有东西把他们转换成为可执行文件。对于C和C++,那就是编译器。

可用的编译器有好多种,包括很多免费的。选择一款自己适合的编译器很重要,免费的编译器就有这样的好处,你可以把它们试个遍,然后从中选择自己最喜欢的。然而,免费编译器比起商业版,可能会缺失一些功能和大部分服务。幸运的是,多数商业版编译器也兼售介绍版或学习版,这要便宜得多,通常功能却不见得少,唯一的限制是你不能发布用它编译的程序(短时间内你也根本用不着)。

总之,选择编译器取决于你能花多少钱,用什么操作系统,和为什么平台开发。如果要为windows开发,我强烈推荐Microsoft Visual C++。他强大的开发环境使得很多事做起来更方便,毫无疑问没有其他编译器更适合开发windows应用程序。如果你是个学生,你还可以折价买到。(译者:爽!)如果你在DOS平台开发,你最好的选择可能是DJGPP,免费的哦~。

选择开发平台

尽管最终你很可能为好几个平台开发,总要先选择一个来学。当你在学这门语言,还没有接触到图像的时候,你可能会想使用非图形用户界面的操作系统,比如DOS,Unix.这样可以避免接触高层,比如windows编程,让你集中精力学习语言本身。

一旦你做好开发游戏的准备,那么,应该考虑是否改变平台,让我们来看看每个选项的特征。

windows:如果你想成为游戏行业的专家,或者如果你想让许多人来玩你开发的游戏,那么,这就是你要选择的平台。因为多数你的用户使用windows,而且现在我也看不出有什么改变的迹象。当今大多数的windows游戏都是由一种你可能听说过技术---DirectX---开发的。你可以DirextX这个库直接访问硬件,这意味着你可以开发高性能的游戏。

DOS:DOS过去是占统治地位的游戏平台,但是已经一去不复返了。尽管可能有一些特殊爱好者还在为DOS开发游戏,现在没有一个为DOS开发的商业游戏,他也将继续衰落,直到微软不再支持。如果你只是想开发游戏,还是不要选择DOS,如果你非要这么做,也不要太久。记住:由于存在大量DOS游戏开发的书,可能还有人辩护从这些书中学习DOS游戏开发。但是,windows游戏开发的书越来越多,那些辩解也变得越来越无力。

Linux:Linux是Unix的一种,由于很多原因后来变得流行,包括稳定性,价格,和反微软情绪。尽管Linux用户还是相当少,但是围绕着他的热情和不断增长的市场潜力使其也成为不错的选择。

Macintosh:MAC有大量忠实粉丝并不能说明什么,几乎每一个和我讨论的MAC狂热者都需要更多更好的游戏。我没有见过多少MAC游戏开发资源,但我相信还是有的,因此这也是一个选择。

consoles:console(就是PS,N64,DC等等)的游戏市场十分巨大,当然

console游戏开发的前景也不错。然而以非商业的形式开发console游戏,出于各种原因,在现在似乎行不通。如果你开发console,很可能是在被商业游戏开发组雇用之后。

开始进入主题

现在是时候讨论开发游戏了。简单起见,我假设你选择用C/C++在windows平台开发,可能你选择别的,但大多数我说的还是有用的。

首先,甚至在你打算开始开发游戏之前,你必须很好掌握C和C++.你应该懂指针,数组,结构体,函数,可能还有类。如果你精通他们,就可以开始做游戏了。

这篇文章可能不能教会你所有关于开发游戏的东西。幸运的是,也没有这个必要。这方面有很多书,网上也有很多指南。GameDev.net应该有所有你想要的东西,这里我建议你怎么开始:

找一本或几本书。对于windows游戏开发初学者,Tricks of the Windows Game Programming Gurus是个完美的开始。除此之外,还有许多好书.读透这些书,试试所有的例子,不懂得部分多读几遍。

网上指南作为补充。除了弄清书上读到的,他们还涉及一些书上没有谈及的主题。

向专家寻求帮助。如果你不能在书上或指南找到问题的答案,好好利用我们的论坛和聊天室。那里有好多专家愿意帮助别人。

这并不是要你按照顺序执行的,而是可以同时并且不断的重复执行。

光学习还是不够的,你必须运用你所学到的。从一个小游戏开始,然后在这个基础上前进。你可以看一下Geoff Howlands 的著作: How do I Make Games?

A Path to Game Development.

开始,自己独立工作。不要急着加入团队,那样只会减缓学习过程。而且一旦你有了自己的几个游戏,你可以为团队做出更大的贡献。

还有关于书,你应该不仅仅看游戏开发的书。为了能够开发出你看到商店出售的游戏,你应该钻研比大多数游戏开发书籍更高级的一些主题。有一些可以在网上找到,但你也应该选一些图形学,人工智能,网络,物理学等方面的书。计算机科学学位看来唾手可得,但因为你被迫上这些课的时候可能认为他们和游戏开发无关----你错了!

包装

这里有一些提示很有用

不要只积累知识,用它:你永远不会知道会理解一些东西知道你是用他们。用你学的东西作些演示。做作书上的练习。

经常玩游戏:这样做会使你做出更好的游戏。而且可以减轻编程的枯燥。帮助别人:能帮别人的地方尽量帮助别人,教别人的过程中自己会学到更多。有始有终:不要有这样的想法“我能够完成这个游戏了,但是我又有一个新的想法,那就直接做下一个。”你可以学得更多如果你完成他,你也可以用事实证明你不是只会空谈。所以,尽量不要做很大很复杂的游戏,直到你有了一定经验。

开始吧!你现在可以开始准备QUAKE4了。可能你不是不是很了解,但是至少应该知道如何开始这条道路,找多些资料,加上多年努力工作,他一定会实现!

编程工作计划
《编程工作计划.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档