第一篇:编程心得
由于大学的时候是网络方向的,没大接触编程,来到这个学校就开始自学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中的方法比较难写,尤其是消息映射函数,庆幸的是好多都不需要自己去写,我们可以通过ClassWinzard类向导来指引我们进行选择,想添加什么消息映射只需鼠标操作即可。
通过MFC Windows应用程序设计的学习,我掌握了一些知识: 应用程序类,框架窗口类,视图类,文档类构成了MFC应用程序框架,框架的功能是通过各类之间的协调工作实现的类。
MFC采用文档/试图结构来实现数据和数据表现的分离,文档试图的分离有利于数据和数据表现的单独改变。
MFC用类信息存储了动态创建类对象时所需要的消息。
经过这门课程的学习不但使我掌握了Windows应用程序设计的基本方法,还可以使我进一步深刻,全面地理解面向对象程序设计的思想,从而把握程序设计方法的发展方向。
第二篇:编程心得
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)的可能性就比较小。
第三篇:编程培训心得
编程培训心得3篇
篇一:软件编程学_心得
软件编程学_心得
随着计算机技术的发展和工作的需要,为了能够更好的维护公司生产管理系统;公司安排我们到北大青鸟APTECH进修。我们选择了时下最流行、发展速度较快的语言C#。C#学_共分三个阶段,目前我只学_了第一个阶段;现将我在北大青鸟学_第一阶段为期两个月的学_心得总结如下:
C#是一种新的面向对象的编程语言,专门用于.NET运行时。C#编译器只能生成受管制的代码,也可以使用.NET基类。C#语言自C/C++演变而来。但是,它具有简单、现代、完全面向对象和类型安全等诸多特性。下面就简单说说简单和现代其中两种特性。
1、简单
C#具有C++所没有的一个优势就是学_简单。该语言首要的目标就是简单。很多功能(还不如说是缺少了C++的一些功能)有助于C#全方位的简单。
在C#中,没有C++中流行的指针。默认地,您工作在受管理的代码中,在那里不允许如直接存取内存等不安全的操作。我想没有C++程序员可以声称,从没有使用指针访问过不属于他们的内存。
C#弃用其它操作符,名字空间、成员和引用仅使用单个操作符
.。现在一个程序员所需要理解的就是嵌套名字的注解了。
C#使用统一的类型系统。这种系统充许您把各种类型作为一个对象查看,它是一个原始类型还是一个full-blown
类。和其它编程语言相比,由于加框(boxing)和消框(unboxing)的机制,把简单类型当作对象处理并不能获得性能的改善。稍后将详细解释加框和消框,但基本上仅当需要时才使用对象访问简单类型这种技术。
2、现代
投入学_C#的努力是一笔大投资,因为C#是为编写NGWS
应用程序的主要语言而。很多用C++可以实现或者很费力实现的功能,在C#中不过是一部分基本的功能而已。根据应用程序的特殊需求,可以很容易地创建出新的一种数据类型。
指针不再是编程武器的一部分。运行时NGWS提供了一个垃圾收集器,负责C#程序中的内存管理。因内存和应用程序都受到管理,所以很必要增强类型安全,以确保应用的稳定性。
异常处理是C#的主要功能。C#的异常处理与C++的不同点在于它是交叉语言的(运行时的另一个功能)。在没有C#之前,您必须处理怪异的HRESULTs,但现在由于使用了基于异常的健壮的出错处理,这一切都结束了。
对于现代的应用程序,安全是首要的,C#也不会例外。它提供了元数据语法,用于声明下述NGWS安全模式的能力和许可。元数据是NGWS运行时的一个关键的概念。
通两个多月学_,我能够很好的掌握C#语言的基本语句、语法以及老师补充的一些要点;能够编写简单的应用程序,例如电子邮件的收发等,为接下来的第二、第三阶段学_打下了良好的基础。
篇二:编程心得体会
篇一:java编程心得体会
java编程心得
计算机3班
窦金霞
4773
最近几周一直在弄程序,说实话真的很累,但累中也有成功的快乐。我觉得学到了很多东西,这是只看课本知识所不能学到的。
说实话,以前我一直没学过java虽然我也知道java的重要性,可是即使上课听了,不实践还是掌握不了。因为种种原因,今年我没有买笔记本。没有机器,仅仅靠每周一次的上机练_是绝对不够的。所以我就插空调程序,在舍友们不用的时候自己再接她们的电脑调。
调上一个web版的通讯录程序时我已经感觉到学的很吃力,好多东西都不懂。这次做的这个学生成绩管理系统更复杂了,所以一开始调的时候感觉特别吃力.所以我告诉自己不能放弃,慢慢来,就这样我从最基本的sql语句session对象开始学起,我觉得我还有太多不懂得所以要比别人付出更多的努力。就这样我一点一点的学着??
说心里话,在做上一个web版的通讯录时,我就感觉到成功的喜悦。好多地方我都是一点一点的问的,在问的过程中,我也学会了很多,像:servlet和jsp之间跳不过去时有两种解决办法,一是关闭底层类中的db.close;二是将servlet中的throws
exception改成try
catch以捕捉异常;我还学到了集中查找错误的方法,可以加上两个双斜杠“//”将具体的方法屏蔽掉,一检查是方法错误还是servlet错误,还有就是写上system.out.println()将获得的数据输出,用来检查数据传输过程有没有错误等等。
虽然在别人看来,这些方法可能都很常规,但是确实我自己学会的,我觉得很有成就感。我已经做好了,暑假的时候去买本本用自己的本本练_一下java,虽然下学期不学java了,但是我对java的热情不会因为这个而削减的!
做完这个学生成绩管理系统后,我觉得我对java的看法已经改变了。一前总以为java很繁琐很难,听同学说java不好学,开始又有一些听不懂,所以一直很畏惧java。但真正做了这个系统以后我才感觉到其实任何事都没有难与不难之分,只要你肯努力的去做,世上无难事只怕有心人!
我现在对java学_充满了热情,我知道我还有很多的不足还有很多需要努力的地方,所以我的java之旅将继续进行??篇二:程序设计体会
程序设计
【收获及体会】
通过两个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。是啊,读了那么多年的书,课程设计可是第一次。看着劳动成果,很欣慰!虽然这不是我一个人做的,是大家的共同努力得来的。
刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于画图方面的,可是这点小进展远远不够,这只是一个小小的开始。下一步是上网查,找到了些与我们题目相似的,那时我们每个人都很高兴,可是那还不是我们要的,于是又上网查到了些有关的函数等等,终于在我们大家的努力下,完成了这个程序。
虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!世上无难事,只怕有心人,的确如此。做完这个程序最大的收获就是感受到了集体的力量,当然个人的智慧也是很重要的哦!
做完这个课程设计,我们的自信一下子提高了,我们也会写程序了;尽管对于有些人这种程序会很简单,可对我们c语言初学者来说,已经很不容易了。这次体验为以后的学_计算机的我们增强了信心。享受劳动成果的滋味实在很美妙啊!
——姜*
【收获及体会】
忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计
第四篇:PLC编程心得
即使是同一个项目,同一个人,要他重新写一次,也会与原来的不同,我只是看别人的一种思路,是怎样把程序去组织好,如何规范合理分配好元件,我看简单也不一定好,我的编程习惯是要求流程要清晰,即使多花点步数也好。所以我现在一般都不用一个梯形图完成,而是用SFC去编排组织梯形图的执行顺序,这样就不用担心什么互锁连锁的问题,我现在在编写的程序我估计在18000步左右,若是用单一的梯形图来编,我估计对以后的维护和修改会做成很大的困难。
现在工控制软件大部份是可以破解,但如果不想别看懂的程序的话,把里面最好不放常数,全部是数据寄存器,多用一些功能指令,拿出点技术来,要把哭程序写少而精,不要多而杂。我不鼓欢太乱的程序。如果你把技巧都定上去啦,相信不是一般的高手都没办法看懂,那样别人是服了你的技术,而不是服你的乱!我一向都不怕别人看程序,我也不喜欢看别人程序,这就是这的风格!单一!宁可少而精,不可多而杂
上是高手啊,我公司有一台设备的PLC程序真的不放常数,全部是数据寄存器,下载下来的程序在另外一台PLC就不能使用!
我们公司有几台设备都是意大利进口的,都是几千万的设备,老外的程序都没见有常数,应用了好多数据块,一般的工程师都看不懂的
第五篇:C++编程心得
紧张忙碌的一周过去了,在这个星期里我们小组胜利地将我们选定的课题研究出来,我为我的小组骄傲,也为自己骄傲。
我们的题目是银行定期存款管理系统,在编程过程中,我预订的任务是学习并掌握MFC,并将其运用到我们的程序中。学习MFC的过程是我认为非常痛苦的事,因为完全都是自学,并且因为图书馆中的相关书籍全部被借阅出去,所以没有太多的自学资料,因此虽然费了很大的精力,但仍是无果。经过了很多的小组讨论和自己的心理斗争后最终决定放弃MFC而将自己能力以内的程序尽可能地优化,就这样,我开始在半路阶段加入了程序优化的工作,一遍遍的调试程序,遇到某个攻坚问题,几个人一起在网上查询,一起想解决的办法,就这样,我们团结地将我们现在认为将近完美的程序呈现给老师和同学。
一开始学习MFC时,我总是不能很好的转换思维,不能将自己以前的编程思想和以前的一些不良编程习惯甩掉,因此很多的程序都联系不起来,反而是自己学会了好多的零碎的片面却无法将程序大楼竖起来。在困惑很久后,我选择了询问老师,老师耐心地将MFC的思维方式讲给了我听,这让我受益匪浅,虽然我最后没能将MFC成功的做出来,但我认为我从MFC中才直接地感受到了C++中面向对象编程的封装性。以前用C++编程时总是将类中的变量随便规定属性,甚至在编程的过程中突然需要加一个变量,为了省事直接将其放于public中,在学习了解MFC后,深刻地感受到自己以前的编程习惯是多么的不科学,而那些习惯又是多么的重要。
我们这一次是以团队的形式来做这个项目,并且作为这个小组的组长,我感觉自己的压力很大,因为团队合作不仅讲求整体的团结而且为了团队工作的高效又要有明确的分工。在我们的小组工作中每个人都一刻不放松自己手里的工作,而一些时候我们又配合地很密切,尤其是当我们遇到程序的瓶颈时,我们都是在宿舍里你一句我一句地出谋划策,在遇到一个提取时间的程序时,大家纷纷查询各种辅导书,上网查各种资料,在遇到定期存款支取问题时甚至打电话给家长,寻求“场外支持”,种种的配合都给我们这个部门协调的运作提供了动力。我感谢我的团队,他们让我有一种很舒服的做事情的感觉。
最终决定放弃MFC,我承认自己有一种如释重负的感觉,但是也有一丝惭愧,无论老师要求与否,既然自己决定了就应该走下去,但是我最后退却了,感觉很遗憾也很羞愧,因为我认为对自己降低要求就是放纵自己堕落。
短学期实习,我着实收获了很多,不仅仅是知识上,而且是思考事情方法,我感激这次的实习,也感谢给予我们很多帮助的老师,更感谢我团结的团队。