前言:中文期刊网精心挑选了源程序范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
源程序范文1
情人节我们做电的兄弟们送什么礼物给心仪已久的MM?在离情人节还有一个月的时间,给大家提供一个适合作为礼物的简单电路,自己动手做的漂亮玩具一定会是送给MM的最好的礼物。
显示效果图片upload/2005_01/050117013990931.jpg
原理图21icsearch.com/buzi/upimage/upfile/20047221015470.jpg
曾经在新手园地发过的帖子21icbbs.com/club/bbs/showAnnounce.asp?id=1288814
以下是详细说明:
图形显示的原理:
利用人眼的视觉暂留效应,使手在摆动到不同位置的时候,让位于一条直线上的LED显示二维图像的不同的列,实现图形扫描显示。
物理机制:
当我们在摆动手臂的时候,短时间内摆动位置和左右幅度不会有太大变化,利用我们手臂的这个运动规律,只要能得到棒从一侧摆动到另一侧的时间,然后把这个时间分成N份,然后在每一份的时间里显示不同的花样就能实现图形的显示。当我们在摆动手臂的时候,并不能预先得知此次摆动需要的时间,怎样得到从一侧摆动到另一侧的时间呢?再想想,短时间内我们手臂的摆动频率也不会有特别大的变化,我们只要能得到前一次摆动所用的时间,然后用这个时间近似得到下一次摆动所需要的时间,然后分N份就可以了。得到一次摆动所需的时间的任务由光遮断器完成,在棒上装一个可以摆动的用来遮挡光遮断器光线的细杆,粗细比光遮断器的狭缝稍宽,我用的是整流桥焊后剪下的一段管脚。每左右摆动一次这个杆就会通过一次光遮断器,使单片机产生一次中断,两次中断之间的时间就是想要得到的时间,实现这个功能用掉2051的一个定时器T0和外部中断INT0。然后用2051的另一个定时器T1,其定时时间是T0的N分之一,每次中断依次显示一列,就是照片上的效果。
再细想一下,手臂摆动的频率大于2Hz的时候才大概能由视觉暂留看出图形,再快也不过十几Hz,由T0为16位定时器的最长计时时间得到2051的时钟频率1MHz最合适,还有遮挡
用的细杆的粗细也可以大概估算,使其不会对计时精度产生太大影响。
所用元件:
AT89C2051 8元
高亮LED共8个 3.6元
电池盒 0.5元
单面万用板 8元 可以裁成3块,做3个摇棒
陶瓷谐振器 1元
光遮断器 2元
电阻电容导线 2元
外壳* 0.7元 可以裁成2块
可选元件:
电源开关 1元
总成本不超过20元
*外壳我用在家乐福买的半透明文件夹卷成的
此电路电路非常简单,代码短,但是用到了2051的外部中断编程和T0、T1定时器编程,非常适合初学者练习。我制作这个玩具花费了两个晚上的时间。此电路和程序还有扩展改进
的空间,如在长时间不摆动的情况下可以使单片机进入省电模式,显示不仅限于对称图片等,大家可以试试。
以下是源程序:
/*************************************************************************/
// ---------------
// LED显示摇棒
// ---------------
// 作者:nim 于 21icbbs.com 2005-1-7
//
// email: linyige@yahoo.com
//
// 本设计版权归作者所有,请勿擅自用于商业目的,转载请注明作者及出处
/*************************************************************************/
#include <reg51.h>
#define SEG 17 //每帧图片分成17列来显示
#define INTERVAL 20 //每幅图片在左右摇摆20次后换下一幅
typedef unsigned char uchar;
typedef unsigned int uint;
code char pattern[17][3]={ //3幅图片的字模
{0xff,0xff,0xff},
{0xff,0xff,0xff},
{0xff,0xff,0xff},
{0xff,0x9f,0xff},
{0xff,0x6f,0xf9},
{0xff,0x77,0x65},
{0xfe,0xbb,0x1e},
{0x7e,0xdd,0xfe},
{0x00,0xee,0xfe},
{0x7e,0xdd,0xfe},
{0xfe,0xbb,0x1e},
{0xff,0x77,0x65},
{0xff,0x6f,0xf9},
{0xff,0x9f,0xff},
{0xff,0xff,0xff},
{0xff,0xff,0xff},
{0xff,0xff,0xff},
};
uchar phase,th1,tl1,index,count;
main()
{
EA=0;
EX0=1;
ET1=1;
PX0=1;
IT0=1;
TMOD=0x11;
index=0;
EA=1;
while(1)
{
}
}
void Int0_Handle(void) interrupt 0 using 2
{
uint t0_time;
TR0=0;
TR1=0;
TF1=0;
t0_time=TH0<<8|TL0;
TL0=0;
TH0=0;
TR0=1;
t0_time=65535-t0_time/SEG;
th1=t0_time/256;
TH1=th1;
tl1=t0_time % 256;
TL1=tl1;
if (count<3*INTERVAL){ //3幅图片循环
count++;
}
else{
count=0;
}
index=count/INTERVAL;
if (th1!=0xff || tl1!=0xff){ //如果摆动特别慢,定时器溢出就不显示
phase=0;
TR1=1;
}
else{
TR1=0;
}
}
void Timer1(void) interrupt 3 using 3
{
if (phase<SEG) //17段依次显示
{
P1=pattern[phase][index];
phase++;
TH1=th1;
TL1=tl1;
源程序范文2
逐点比较法的机床工作原理
首先简单介绍一下机床是如何按照规定的图形加工出所需的工件的。机床每走一步,计算一次偏差,然后根据偏差决定下次进给,所以是三个工作节拍:偏差——判别——进给。
:4900多字 有参考书籍及源程序
200元
备注:此文版权归本站所有;。
源程序范文3
1改革目标
本课程的培养目标是面向软件产业需求,既有一定理论基础,又有较强实际操作能力的实用型技术人才。实用型软件编程人员的基本素质包括以下几个方面:掌握基本的语言和算法,具有一定的程序设计能力;具有面向对象的概念和设计思想,精通一到二门面向对象的程序设计语言;掌握数据库的基本概念和基本应用;具有一定的项目经验,在校期间参与一些项目设计;具有现代软件工程思想, 了解软件开发的一般方法,熟悉软件开发的一般过程,精通一些实用的软件开发工具;具有较强的代码编制能力,同时有一定的软件测试能力。为了达到这一目标,围绕强化学生的职业技能和岗位适应能力,我们在教学方法和手段等方面进行了改革和探索。
2教学方法改进
分析授课对象大都是只有较少程序设计基础的大学学生,加之教科书内容的组织一般比较抽象化,有些概念难以理解。如果照本宣科,容易使学生产生厌倦、畏惧心理,难以收到好的教学效果。因此采用传统的教学方法授课是不现实的,在具体的教学实践中,我们灵活运用多种教学方法,优化课堂教学质量,现就以下几个方面作详细介绍:
2.1启发式教学法
课堂教学中在讲授新的知识时,宜采用启发诱导的方法,据学生获得和掌握知识和技能所需要的思维过程和思维方法,按思维流程设计相应的启发式问题,启发学生思考和完成学习任务,并逐步过渡到让学生自己向自己提出问题、自我启发解决一类学习任务。这就要运用启发式的教学方法,通过一步步诱导,逐渐逼近目标,最后水到渠成地完成任务。
2.2实例教学法
教材上的大部分程序例子是纯粹为说明语法概念而编写的,没有实用性的价值,让人读来枯燥而无味。所以教学时不能完全照搬这样的例子, 应该尽量采用解决实际问题的例子,让学生体会到学有所用,才能激发其学习的动力。
程序设计语言教学的真正目的是:让学生掌握如何利用该语言,来解决现实世界的实际问题。因此优秀的教学模式应该以程序设计为主线,寓概念于实例中,将复杂枯燥的语法知识分解到每个生动、有趣、实用的程序实例中,对于不同专业的学生举出不同的实例,以应用作为出发点,重点介绍程序设计方法和思路,在分析程序和程序设计中让学生逐步熟悉基本的语法和语句,并把软件工程学的思想贯穿于算法分析和程序设计的过程中。
2.3实践教学法
Java 语言是一门实践性非常强的课程, 单单依靠课堂的教学是不够的,程序设计技能的培养只有通过大量的编程训练和上机实习才能获得。因此不可忽视实际编程、上机实验这一重要环节。对于上机实验的选题,依然贯彻以应用为出发点的原则,结合生活、结合具体专业精心挑选难易适中、趣味性强的题目。通常采用“小题目大任务”的方法,即每个实验学生编写的“小题目”并不是孤立的,而是相互联系的,实际上它们都是一个较大型较复杂程序的各个有效的组成部分。
2.3.1考虑学生的个体差异,将实验设置成基础性实验题目和提高性实验题目两部分。这两类实验都是结合相关课程的教学需要由授课教师设计的,前者目的在于帮助学生掌握基础知识和实验研究方法,后者则在于培养和鼓励学生的学习兴趣、扩大知识面以及培养学生的应用能力和创新意识。
2.3.2允许学生结合本人的兴趣,从实际应用中选择有具体应用背景的实验题目,充分发挥学生的主动性。或由教师结合实际给学生布置一些较大的设计课题,学生也可以统一组织成若干个学习小组,协作共同完成。这样一方面锻炼了学生的自己动手能力,也加强了他们交流与团结协作的精神;另一方面确实能将理论与实践相结合,从而大大激发了学生的学习热情,为其今后的学习和工作打下良好的基础。
2.3.3建立一套完整的实践课考核方案。认真检查上机题的完成情况,检查工作最好在机房进行。检查时不仅要求学生演示最终的运行结果,还要随机询问设计思路、出错处理、甚至源程序语句说明等,以确认学生独立或合作完成指定任务的情况并给出合理的评分。
2.4角色转换教学法
转换角色是教师要从课堂教学的“主角”转换成“配角”,学生从被动接受的“配角”转换成“主角”,这是现代教学原则所倡导的,也是提高教学质量、培养学生能力所必需的;二是教师在安排、组织课程内容时转换角色,教师要从作为初学者的学生的角度出发组织教学,这样才能深入浅出,便于学生理解。
3教学手段的改革
3.1采用多媒体教学方式
利用投影进行直观教学,获得较好的教学效果。在利用多媒体教学过程中,有许多方面需要注意:
3.1.1按培养目标组织课堂教学内容。本课程从人才培养中的地位及作用的角度,设计课程的教学内容及教学环节。
3.1.2对教材进行再创造。高职强调应用性和适应性的人材,因此,在制作多媒课件时,对教材进行再创造,理论以“够用”为度,突出高职培养应用型高技能人才的特点,重新组织了内容,以程序实例为中心,打破了以教材为中心的传统教学模式,不完全按教材的顺序授课,而是以精选出的程序实例为中心,把授课的重点放在具体实例的讲述上。
3.1.3加强互动性、趣味性。无论在课堂教学中,还是实践教学中,我注重演示、操作、讲解的有机结合,并尽量做到图文声并茂,激发了学生的学习兴趣;直接使用各种软件实时操作进行教学,学生可以同步感受软件的运行过程;演示程序的调试与运行过程,使教学更具直观性和互动性。
3.2采用校园网教学
把课程的重点及难点通过分析后提前到校园网供学生参考,并及时得到反馈信息,这样教师上课时也能做到心中有数。另外还把一些典型的实例及课外选做内容分配给学生,让他们根据自身特点及能力有选择地参考或完成。
4教学环节的改进
以上教学方法要想付诸实施还必须通过各个教学环节来辅助完成。在整个教学过程中我采用的是以下的教学环节:
4.1课堂辅导
每章安排讨论课2学时左右,同时给学生留一些小实例为思考题,以提高分析问题、解决问题的能力。另外,我们还坚持通过课堂讨论和答疑的方式,解决学生自学和实例中所遇到的问题。
4.2课后辅导
课堂的时间毕竟是有限的,为了帮助学生巩固课堂所学的理论知识,为上机实践做好理论和技术上的准备,必须做好课后的教学辅导。为此安排两周一次或一周一次的答疑是非常必要的。
4.3上机操作
计算机专业要求有很高的实际操作技能,对于我们高职学生实践性要求更高,如果只注重背书本,学生毕业后也不会适应实际工作需要的。所以在解决一些习题时一定要尽量让学生直接上机验证或是编程,这样学生在解决问题的同时很大的提高了动手能力。
4.4改革考核方式
现行考试在很大程度上仍然是传统的考试方式,以理论卷面为主,难以考查学生对实践技能的掌握情况。教学管理部门对期末考试形式、时间和空间等规定太死,不利于教师根据课程性质和特点以及学生个性差异选择考试方法,更不利于全面真实地考核学生的知识、技能和能力。因此必须将考试重点转移到考核学生的实践技能方面。这就要求改革考方式和考试内容。我采用以平时大作业或项目为主的实践型考核方式,大大调动了学生的实际动手的积极性,对学生能力的提高作用显著。
源程序范文4
(北京大学 信息科学技术学院,北京100871)
摘要:提出在课程中引入JDK源码的学习,阐述通过阅读、分析、重写及应用JDK源码,学习JDK源码中的语法、基本库、数据结构、设计模式等内容,能提高源代码的阅读能力、编写规范代码的能力,并为应用设计模式、架构复杂项目打下良好的基础。
关键词 :Java程序设计;JDK;源码;实践教学;编程能力;设计模式
作者简介:唐大仕,男,讲师,研究方向为计算机应用,tds@pku.edu.cn。
0 引言
Java语言是当前最流行的面向对象编程语言之一,具有平台无关性、多线程、分布式及安全性等特点。作为计算机专业及相关专业的一门重要课程,Java语言也不只讲语言语法,而更加注意其实践应用,所以加强其编程实践和应用是该课程的重要目标。特别是当前用人单位对大学生的综合素质提出了新的要求,这就迫切需要对现有的教学模式进行改革,才能适应计算机教学的需要。根据实践,我们提出在课程中引入JDK源码的教学方法。
JDK(Java Development Kit)是Java语言的软件开发工具包,包括JavaSE、JavaEE、JavaME等多个版本[1],其中最基础的是JavaSE。在JDK中,有一系列的开发工具、运行环境,还有最重要的JDK文档及JDK源码。JDK源码用于程序设计的实践教学中,能有效提高学生的程序设计能力,切实提高教学效果,是教学改革的一条途径。笔者将JDK源码给学生进行阅读、分析、改造、应用,使其掌握编程思想、编码方式、采用的技术、应用过程等相关知识。
1 学习内容
JDK源码的量很大,要学习的内容也涉及多个方面。
1.1 语法方面的学习
Java程序设计课程首先要让学生学会Java语法,Java语言的语法不仅枯燥,而且不容易掌握。在JDK源码中有大量语法的体现,从变量、常量到运算符、语句、类的定义等方面都有很好的体现,所以精简一部分包及类来进行学习,体现其语法的使用,而且体现面向对象的封装、继承、多态,特别是继承关系的分析,以让学生更具体地体会面向对象的思想与方法。
1.2 基本类库的学习
Java语法的学习不能只停留在语法层面,而是要培养实践应用的能力,这就需要掌握大量的API类库。由于Java类库中的类很多,每一个类中的方法也很多,所以我们选择重要的类库源码来学习,主要包括Java的基本类库、输入输出(Java IO)、文本信息的处理、XML信息的处理、图形与图像、图形用户界面、网络、数据库等。
1.3 数据结构的学习
Java语言中,各类编程都要用到数据结构。虽然有的学生学过数据结构,包括线性表、栈、队列、串、树、查找、排序等,但是JDK中,这些数据结构是如何实现的,它们都有哪些相关的类,分别使用的是顺序存储、链式存储还是哈希存储,学习这些不仅有利于复习巩固数据结构知识,更重要的是可以学到更多的实现方法,而且在应用这些结构时会正确选用合适的类。
1.4 设计模式的学习
设计模式(design pattern)是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性[2]。在实现的软件开发实践中,设计模式是相当重要的,在JDK中,使用了大量的设计模式,如抽象工厂、单态、适配器、责任链、、观察者等,通过源代码来学习设计模式,可以让学生更具体地体会到设计模式的应用,从而能让学生更好地打下应用设计模式基础。
2 学习方法
JDK源码的学习方法主要是阅读、分析以及修改、应用等,在这个过程中教师要通过演示、引导、作业等手段来促进学生对JDK源码的学习。
2.1 有选择性地阅读源代码,撰写读书笔记
由于源代码的量很大,没有必要将所有JDK的源码都读取一遍,所以针对前面提到的每一方面的学习内容,教师会指定阅读相关的包和类的源代码。例如,在前半学期中要求阅读的类包括Object,Class,String,StringBuilder 及 AbstractStringBuilder,Integer,Math,Random,BigInteger等;后半学期则要求阅读Arrays,ArrayList,Vector,Stack,Hashtable,TreeMap,TreeSet类等。教师还指定一些扩展的包和类,供能力较强的学生进行阅读。学生阅读后要撰写读书笔记,对典型的读书笔记进行演示汇报,这样的汇报可以在小组内或者全班进行,以促进理解和交流。
2.2 教师布置读前的问题及读后作业,促进阅读质量提高
阅读前,教师有针对性地提出一些问题,这样可以让学生知道阅读的重点和思考的问题,读后作业则检查学生学习的效果。布置的作业中包括这样的问题:String类为什么声明为final的?Random类引用了什么内部类或辅助类?Stack类中的变量的初始值为什么这样设置?其ArrayList类动态分配空间的增长因子是多少?TreeMap类与另一个相关的TreeSet类的区别是什么?
2.3 与JDK文档对照学习
JDK源码与JDK文档进行对照学习。考虑到部分学生的英文实际水平,我们选用中文版的JDK文档,而英文水平较好的则可以使用英文版的JDK。例如,在String文档中提到immutable,在源程序中是如何体现的?在Byte中提到的缓存,在源程序是如何实现的?Random类提到的伪随机数是如何实现的?TreeMap中找到同一对象的要求是如何实现的?等,这些问题涉及语法、算法、效率等多方面的问题。另外,对有余力的学生,还让他们读不同版本的JDK的源码,体会其中源代码的演变,分析其改进之处。
2.4 学生写出分析报告,并进行展示与交流
针对阅读的内容,我们要求学生写出分析报告。报告要求写出主要的类、主要的方法;类与类之间的关系(画出类关系图、UML图);主要函数的算法是怎样的(画出流程图、事件序列图、状态图等);算法的时间复杂度与空间复杂度如何;用到了哪种设计模式等。另外,要求写出学到的关于语法、算法、编程技巧方法的收获。这些报告要形成文档、展示的PPT、Prezi等,在班上进行交流展示,还让学生进行评选投票。
2.5 进行代码的重写、改进与应用
在阅读的基础上,我们要求学生进一步进行代码的重写、改进与应用。代码的重写是指针对其中部分代码自己重写一遍,这样能训练编写代码的能力。在这个过程中,学生还可以有针对性地进行代码的改进。另外,在实际的项目中,应用相关的包和类,这样易于进一步巩固所学的知识。
3 学习JDK源码对学生编程能力的提高
JDK源码的学习过程,提高了学生以下几个方面的能力。
3.1 阅读代码的能力
阅读代码的能力训练是编程能力中一个重要的方面。事实上,软件的编写与维护通常是一个长期的过程,阅读别人写的代码是很常见的任务,但有时也要阅读自己写的代码。阅读JDK源码可以大大提高阅读代码的能力。
3.2 编写规范代码的能力
JDK源码书写规范,其中能学到规范代码的编写方法,有利于养成良好的编程习惯。这包括注释的使用、空行的使用、变量命名、函数的命名惯例等。
3.3 使用设计模式的能力
JDK源码中有大量设计模式的应用,通过对这些设计模式的学习,能很好地体会各种设计模式的含义、基本组成要素、种要素之间的关系、设计模式的应用场景,这些都为以后在具体项目中使用设计模式打下良好的基础。
3.4 项目架构的能力
JDK源码是一系列的包与类组成的一个大的系统,而类与类之间的关系有各种形式,通过对它们的学习,能帮助学生提高设计复杂程序的能力,为以后进行项目架构的工作打下良好的基础。
4 结语
在Java程序设计课程中引入JDK源码的学习,通过在语法、基本库、数据结构、设计模式等多方面的学习, 有效地提高了学生源代码的阅读能力、编写规范代码的能力,并为应用设计模式、架构复杂项目打下良好的基础。在北京大学的Java程序设计课程中使用JDK源码进行教学,起到了较好的教学效果。
参考文献:
[1] Oracle Corp. Java Development Kit.[EB/OL].[2014-12-22]. http: ∥oracke.com/java.
源程序范文5
您好!我是研发部程序员,今天很遗憾向您提出辞职申请,对于我的辞职实属无奈之举。下面是我的辞职报告内容:
我是毕业就过来公司,三年的编程经历,虽然使我在各方面都提高了不少,然而离我实际的目标还是有很大的差距,这个跟公司和我自已都有关系,我觉得在公司里短期内不能让我自己满意。从目前的情况来看,在公司再待下去也不会有太大的改观。
第一点、自我感觉职业生涯发展碰到了瓶颈;三年前是个程序员,现在也仍是程序员,虽然希望自己向技术管理方面发展,但是也没有这样的机会。从目前情况来看在公司继续发展也看不到下步该如何走,可能仍是一个程序员。
第二点、技术上没有太大的提高;三年来做了不少产品,但感觉技术提高仍没有如自己所愿。三年前独立做出了软件,现在仍是吃老本,只是稍熟练点而己。三年来我也在一直不断地学习,为公司的需要和自身的发展作着准备。从公司目前的产品发展方向来看,下一步能在技术上有大的突破的机会也多。
第三点、薪资待遇未能如我愿;三年薪资虽然上涨了一些,到现在也可以说跟市场持平。但持平不是我想要的,到了这个阶段应该有一个大的提高了,我更希望有一个质变了。在公司再发展下去也不一定能见涨多少。从公司现在的发展来看,现在需要的可能是经验和薪资要求都适中的程序员。
源程序范文6
程序猿是一种非常特殊的,可以从事程序开发、维护的动物。一般分为程序设计猿和程序编码猿,但两者的界限并不非常清楚,都可以进行开发、维护工作,特别是在中国,而且最重要的一点,二者都是一种非常悲剧(加班)的存在。
程序猿是一种近几十年来出现的新物种,是信息革命的产物,在行为和物种归类上我们也可称为码字猴。程序猿是人类在科技研究上的一种新兴进化,拥有无与伦比的耐力、超越时代的智商、横穿社会的苦逼相和低于人类平均寿命的显著特点。
(来源:文章屋网 )