C语言编程自我总结

时间:2019-05-12 12:48:24下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言编程自我总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言编程自我总结》。

第一篇:C语言编程自我总结

1.编译器选择8级优化时,可能会出现错误。刚写好的程序,建议先用0级优化看能否正常运行,再用更高的优化等级进行优化。

2.a、写中断程序一定要用using语句指定寄存器组。第1、2、3组都可以,不能是0,否则可能会main()函数冲突。从一个中断程序中调用函数必须和中断使用相同的寄存器组(摘自《Keil Cx51 编译器用户手册中文版》P129)。建议把原本中断函数需要调用的函数直接写在中断函数里,无须调用。

b、51单片机的中断有两个优先级。一个中断不会打断另一个相同优先级的中断。这样相同级别中断可以使用同一个组。比如:低优先级的中断函数都用 using 1,高优先级的中断都用 using 2。这样不会冲突。

3.C语言无符号数容易犯的错误。若定义成有符号数char,则不会陷入死循环。

main(){ unsigned char i;for(i = 2;i>=0;i--){ printf(“%d”,i);} }

4.C51忌讳使用绝对定位_at_,因为只要定义变量和变量的作用域,编译器就会把一个固定地址给这个变量,无须人工将其绝对定位,这样可能引发其他问题。

5.bit与sbit的区别:bit定义的位标量的地址是随机的,而sbit定义的位标量的地址是确定的。bit只能访问芯片内部RAM中的可寻址位20H-2FH,而sbit可以访问芯片内部RAM中的可寻址位和特殊功能寄存器中的可寻址位。注意不能直接在程序里用P1^0等位变量,需要经过sbit定义才可以使用。例如:

bit

tem;sbit led=P1^0;tem的地址是随机分配的,而led的地址则固定为0x90.0。sbit变量后面需要跟等号=。6.为了避免由于使用参数宏而带来意外的错误,需要注意以下几点:

6.1 宏的参数必须带括号,例如 #define CIRCLE_SQUARE(R)3.141*(R)*(R)6.2 对所使用的参数宏进行简单地展开检查;

6.3 使用简单表达式、对参数加括号、避免节外生枝的使用方式(例如“++”、“--”一类都属于不必要的附件运算);

6.4 在参数宏定义时,对于运算顺序通过括号进行明确的限定,只要遵循以上几点,就可以避免大多数应用场合的意外错误。

手把手教你写程序

内容:从最简单的程序入手,手把手教你写程序,让同学们拿到一个复杂的程序或者任务,能快速找到切入点,写出程序,再在此基础上优化程序。当拿到一个单片机任务时,不要急于动手写程序,先仔细分析它的以下几个点:

1、它要单片机整体实现什么功能

2、功能细分(模块化),先干什么,再干什么,最后干什么

3、画初步流程图,(把几个模块画出即可)

4、模块之间的分析:一个模块到另一个模块之间,怎么变换,怎么连接(优化流程图)

5、单个模块分析:每个模块要做什么(流程图细化)

6、所有模块结合连接,细化所有流程图

7、分析单个模块每步要用到的方法或者指令

8、总流程图定型

9、纸上写程序,对照流程图分析其可行性,若不可行则返回

10、上机调试,加注释

11、从小到大,一个功能一个功能地调试;

以上十一步,缺一不可(小程序例外)切记:流程图的确定很重要,需反复修改

大忌:拿到任务,不仔细分析就写程序。即使是小程序,我们也要养成良好的编程习惯,不要一味的追求结果。写小程序可能比别人快,若是大程序,一旦出现思维混乱,或者出现程序调试不出结果,那么你花在调试上的时间,要比别人的多。!!!磨刀不误砍柴工!!!程序的优化:属于后期工作,只有调试出来后,才去优化,如果一开始优化和写程序同时进行,一是加重你的思考量,二是出现问题无从下手。无疑增加了写程序的难度。对于一个初学者,写一个程序,本身头脑就处于紧张的状态,思考的问题就很多,如果此时把优化程序也考虑进去,你脑袋的负荷无疑加重,若你头脑精明,你可以把优化的地方,先在纸上记下来,等到调试结果正常,再把你想到的,优化的地方加进去。

7、如果在中断程序中改变了多字节类型的变量,那么中断程序以外的程序中(主程序,子函数)要使用该多字节类型变量的话,读写前要关中断,读写后再开中断。否则会导致偶尔读写错误。(实质为资源冲突)举一反三:

其他的数据类型也可能有这种影响。例如:长整型、浮点型。例如:

unsigned int ms_counter;void T0(){ //定时器程序每100毫秒中断一次,程序略 if(ms_counter<1000)ms_counter++;} void main(void){ //初始化定时器程序每100毫秒中断一次,程序略 unsigned char tt;ms_counter=0;tt=0;//用tt控制只响一次 while(1){ if(ms_counter<400){ if(tt==0){ tt=1;Sound_on();

} } else { Sound_off();} //其他程序 } }

8、sbit变量不能使用extern关键字,使其在不同的文件中被使用,如要在led.c和main.c文件中使用同一个变量led0,有以下下两种办法:

1.在各种文件中重复定义变量,如在led.c中定义sbit led0=P1^0;同样在main.c中定义sbit led0=P1^0;这样,led0就变成了全局变量,可以在两个文件中使用。

2.将sbit led0=P1^0定义到led.h头文件中,均在led.c和main.c中包含led.h这个头文件。

9、在多文件的程序中声明外部变量(extern和)

如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量Num,不能分别在两个文件中各自定义一个外部变量Num,否则在进行程序的连接时会出现“重复定义”的 错误。正确的做法是:在任一个文件中定义外部变量Num,而在另一个文件中用extern对Num作“外部变量声明”。即extern Num;注意若Num为uchar类型,应当写为“extern uchar Num”,否则会当为int,而导致出错。

当使用static声明变量和函数时,需要在定义变量和函数的基础上加上此关键字,而不能单独使用。例如:

static int a;//定义性声明,需要时,直接使用变量a即可 a = 0x01;

static int funA(int a, int b);//声明,且static不起作用 int funA(int a ,int b)//定义,即使funA有static关键字修饰,但由于static不能单独使用,//故funA仍为外部函数。

{ …… } extern对变量进行声明时,如没有初始化,则为引用性声明,不含定义,如需使用此变量,需要进行定义。例如:

extern int a;//引用性声明,不含定义

extern int a = 0x01;//定义性声明,需要时,直接使用变量a即可 int a;//定义

extern对函数进行声明时,如没有函数体,则为引用性声明,不含定义。

extern int funB(int a ,int b);//引用性声明,不含定义,且extern声明可以省略

extern int funC(int a, int b)//定义性声明 { …… }

10、一般的,要尽量减少中断服务程序的内容和长度。因为在主程序中可以还需要随时响应其他的中断或事件。如果一个中断服务程序过程,很可能会影响到主程序对外部信号的检测和响应。通常,在中断程序中只是改变一些变量或标志位,在主程序中再根据变量或标志位的值进行判断,处理相应的事件。

11、在A/D和D/A转换电路中,电源电压和基准电压的稳定性,对转换的精度影响很大。另外,A/D和D/A转换电路中要特别注意地线的正确连接,否则转换结果将是不正确的,干扰影响将很严重。

12、根据C语言标准,左移“<<”和右移“>>”运算要求操作数至少是int,如果不满int,自动转换成int(C语言整型提升)。因此 uchar a=0x01;a<<8;实际运算,并不是8位数左移8位,而是int型左移8位。

13、在中断里调用其他函数,且要进行参数传递时,必须保证被调用函数所使用的寄存器组与中断函数一样,否则会产生不正确的结果。为了保证被调用的函数与中断函数使用的寄存器一致,可对被调用函数使用using,不过此函数只能被中断函数调用。

14、函数不使用using 时,所使用寄存器组保持与此函数被调用前相同,不对RS0和RS1的值进行修改;当使用了using 关键字后,此函数所使用的寄存器组与using所定义的一样。

15、当指定中断程序的工作寄存器组时,保护工作寄存器的工作就可以被省略。使用关键 字using 后跟一个0 到3 的数对应着4 组工作寄存器当指定工作寄存器组的时候默 认的工作寄存器组就不会被推入堆栈这将节省32 个处理周期,因为入栈和出栈都需要2 个处理周期。为中断程序指定工作寄存器组的缺点是所有被中断调用的过程都必须使用 同一个寄存器组否则参数传递会发生错误。

16、如何使用pdata 类型的变量?当要使用到pdata 类型的变量,如下: void main(void){ uchar pdata a;a=0x01;}

则需要进行如下设置,否则pdata 的变量a则会无效。

a、修改STARTUP.A51的内容。默认时,PPAGEENALBE为0,表示不允许pdata类型的变量,须将其值改为1;PPAGE表示pdata类型的变量存储在哪一页,01H表示存放在外部存储器的第1页,地址范围100H至1FFH,此时P2经STARTUP.A51处理后的值为0x01;此项设置需和BL51连接器的设置一致。

b、修改BL51连接器。根据STARTUP.A51中PPAGE所设置的值来填写Pdata的值,如下图。图中Pdata的值可以填写100H至1FFH中任意一个,表示pdata类型的变量从所填

写的值开始存储。例如,当Pdata填写的值为108H时,表示pdata类型的变量从108H开始存储,因此,存储范围变为了108H至1FFH。

另外,存储模式Compact的作用是将没有指定存储类型的变量定义为pdata类型,对uchar pdata a;变量的定义没有影响,但对uchar a;则有影响。

17、XBYTE的用法。XBYTE存在于#include 头文件中。

XBYTE[0x000F]=data; // 此语句表示将data写到外部RAM中的0x000F data=XBYTE[0x000F] // 此语句表示读取外部RAM中0x000F的数据 以下语句与上面的语句等效:

#define EX_RAM XBYTE[0x000F] //将EX_RAM定义为外部RAM的地址0x000F EX_RAM=data;// 此语句表示将data写到外部RAM中的0x000F data=EX_RAM // 此语句表示读取外部RAM中0x000F的数据

18、如何在keil中用汇编实现51中没有的指令

部分MCU与8051兼容,但会增加8051中没有的指令,如华邦的W77E58和N79E352等芯片,具有8051中没有的指令DEC DPTR。如何才Keil中实现此指令呢? 方法1:

在需要执行该指令的地方放置相应的机器码 MAIN:

MOV DPTR,#02H DB 0A5H;由于从数据手册上得知,DEC DPTR的机器码为0A5H,故此处相当于执行了DEC DPTR指令。

AJMP $ END

方法2:

使用宏定义的方法

/*宏定义,表示用DEC_DPTR代替MACRO与ENDM之间的内容*/ DEC_DPTR MACRO

DB 0A5H;此处不能与MACRO同一行 ENDM

MAIN: MOV DPTR,#02H DEC_DPTR;放置机器码0A5H,相当于执行DEC DPTR AJMP $ END

通过将以上两种方法生成的hex文件调入到编程器中,发现代码一样。经测试,同样可以用以上两种方法代替8051中已有的指令。

例如,从数据手册可知,MOV A,#0FH的长度为2字节,机器码的值为74H,0FH。因此,经验证,以下三个程序等效,产生的HEX文件一样 MAIN: MOV A,#55H DB 74H DB 0FH MOV P1,A AJMP $ END

MAIN: MOV A,#55H MOV A,#0FH MOV P1,A AJMP $ END

TEST MACRO DB 74H DB 0FH ENDM MAIN: MOV A,#55H TEST MOV P1,A AJMP $ END

18、汇编中包含头步骤:

例如,T2CON为定时器2的特殊功能寄存器,地址为0C8H,要对此寄存器赋值01H,除了

MOV 0C8H,#01H 和

T2CON EQU 0C8H MOV T2CON,#01H 外,还有用包含头文件的方法 #include MOV T2CON,#01H 此时,需要将A51中的“Defines 8051 SFR Names”的勾去掉。

19、指针

C51 提供一个3 字节的通用存储器指针。通用指针的头一个字节表明指针所指的存储 区空间,另外两个字节存储16 位偏移量。对于DATA IDATA 和PDATA 段只需要8 位偏移量。Keil 允许使用者规定指针指向的存储段,这种指针叫具体指针。使用具体指针的好处是节省了存储空间编译器不用为存储器选择和决定正确的存储器操作指令产生代码这样就使代码更加简短但你必须保证指针不指向你所声明的存储区以外的地方否则会产生错误而且很难调试。

由于使用具体指针能够节省不少时间所以我们一般都不使用通用指针。

20、EEPROM存放开关机(复位)次数方法:每次开机(复位)读取EEPROM存放开关机的数据,并加1后重新写入EEPROM。

21、C51中,将printf函数与串口输出结合注意事项:

a、关串口中断;

b、初始化串口,并使TI=1;

c、KEIL里扩展出了b(8位),h(16位),l(32位)来对输入字节宽的设置

在Keil C51中用printf输出一个单字节变量时要使用%bd,若使用%d,则默认为双字节宽度,输出可能会出错。如

unsigned char counter;printf(“Current count: %bdn”, counter);而在标准C语言中都是使用%d: printf(“Current count: %dn”, counter);d、输出数据类型的长度应与定义的数据类型长度一致,如:

uint tem2=97;

printf(“%c,%bdn”,tem2,tem2);第一个输出会出错。

22、我一般不刻意的注意这个,都是从软件自身找问题的。

我写程序时对于软件抗干扰都是在程序状态上考虑意外情况的,例如:

if(a == 1){...} else if(a == 2){....} else{//这个else 一定得加的,即使自己认为不可能出现的情况也要加上

..//经过好多程序走飞的情况发现:大多情况都是缺少这个语句条件的,这 //语句可以写成重新初始化a } 还有程序出现堆栈比较深的运算(例如浮点乘除法后)或中断比较深,我加2个_nop_();

23、STC12C5410AD外部RAM使用方法:

a.在Keil中设置外部RAM的起始地址和大小,如下图

b.将变量定义为xdata即可。

24、中断嵌套

当有外部中断0时,中断标志位IE0由硬件自动置1,进入中断服务程序后,IE0被自动清0。若外部中断0触发信号在执行完中断服务程序后仍没有撤除,就会再次使已经变0的中断标志位IE0置1,再次进入中断服务程序;若在响应中断服务程序期间,再次产生外部中断0触发信号时,此中断不能被识别,因为CPU在响应中断时会自动关闭同一中断。

如果外部中断0比外部中断1的优先级高,当在响应外部中断0期间产生外部中断1时,如果执行完外部中断0后,外部中断1的中断请求标志位IE1仍没有清除的话,将会响应外部中断1的请求;但是如果在响应外部中断0期间,外部中断1的触发信号产生后又撤除的话,IE1也会自动清除,也就是说,执行完外部中断0后,不会去响应外部中断1。

当多个中断源同时向CPU请求中断时,CPU就可以通过中断优先权电路率先响应中断优先权高的中断请求,而把中断优先权低的中断请求暂时搁置起来,等到处理完优先权高的中断请求后再来响应优先权低的中断。

如果某一中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志位不被软件人为清除,中断请求的状态就将一直保持,直到CPU响应中断为止。但是对于串行口中断,即使CPU响应了中断,其中断标志位RI/TI也不会自动清零,而必须在中断服务程序中设置

清除RI/TI的指令后,才会再一次地提出中断请求。

25、在满足应用要求的前提下,选择配较低的单片机,较小的RAM/ROM、较低的ADC分辨率、较低的ADC速率,较少的IO管脚都可以降低单片机的整体功耗。当然了,这个得能满足你产品需求的前提下。

26、对于一个数字系统而言,其功耗大致满足公式:P=CV2f。其中C为系统的负载电容,V为电源电压,f为系统工作频率[2]。功耗与电源电压的平方成正比,因此电源电压对系统的功耗影响最大,其次是工作频率,再次就是负载电容。负载电容对设计人员而言,一般是不可控的,因此设计一个低功耗系统,在不影响系统性能的前提下,尽可能地降低电源的电压和工作频率。对于大多数低功耗单片机来说,工作频率越低,意味着消耗的电流也越小,但是不能认为频率越低,系统整体功耗越小,因为工作频率降低,意味着需要更长的处理时间,其他外围电路消耗的电能就越多。目前有很多单片机都允许有两个或者两个以上的时钟源,低频时钟作为如UART、定时器等外围功能器件的时钟源,高频时钟作为系统的主时钟。在不需要高速运行的场合下,低频时钟也可以作为系统主时钟使用。对于需要在工作状态与空闲状态之间频繁切换的应用,在考虑单片机本身低功耗的同时,应该考虑切换时间和切换电流。考虑到有些场合单片机的工作特点,选择单片机不光要关注工作电流,更应该关注单片机休眠时的静态电流。单片机丰富的低功耗模式和极低的静态电流,在满足特定应用功能的同时,有效降低系统的功耗。尽量关闭MCU内部不用的资源,比如ATmega8内部的模拟比较器,默认是开着的,还有ATmega88内部的大多数资源都可以在不用的时候用软件关闭。

27、定时/ 计数器的实时性

定时/ 计数器启动计数后,当计满回0 溢出向主机请求中断处理,由内部硬件自动进行。但从回0 溢出请求中断到主机响应中断并作出处理存在时间延迟,且这种延时随中断请求时的现场环境的不同而不同,一般需延时3 个机器周期以上,这就给实时处理带来误差差。大多数应用场合可忽略不计,但对某些要求实时性苛刻的场合,可采用动态补偿措施。

所谓动态补偿,即在中断服务程序中对THx、TLx 重新置计数初值时,应将THx、TLx 从回0 溢出又重新从0 开始继续计数的值读出,并补偿到原计数初值中去进行重新设置。可考虑如下补偿方法: CLR EA ;禁止中断

MOV A,T L x ;读TLx 中已计数值 ADD A,#LOW ;LOW 为原低字节计数初值 MOV T L x,A ;设置低字节计数初值 MOV A,#HIGH ;原高字节计数初值送A ADDC A,T H x ;高字节计数初值补偿 MOV T H x,A ;置高字节计数初值 SETB EA ;开中断

28、动态读取运行中的定时器/计数值

在动态读取运行中的定时/ 计数器的计数值时,如果不加注意,就可能出错。这是因为不可能在同一时刻同时读取THx 和TLx 中的计数值。比如,先读TLx 后读THx,因为定时/ 计数器处于运行状态,在读TLx 时尚未产生向THx 进位,而在读THx 前已产生进位,这时读得的THx 就不对了;同样,先读THx 后读TLx 也可能出错。

一种可避免读错的方法是:先读THx,后读TLx,将两次读得的THx 进行比较;若两次读得的值相等,则可确定读的值是正确的,否则重复上述过程,重复读得的值一般不会再错。此法的软件编程如下:

RDTM: MOV A,THx ;读取THx 存A 中 MOV R0,TLx ; 读取TLx 存R0 中

CJNE A,THx,RDTM ;比较两次THx 值,若相等,则读得的值正确,否则重读 MOV R1,A ;将THx 存于R1 中

29、掉电及空闲模式

掉电方式

当PCON中的第二位PD为1时,进入掉电模式,不会执行任何指令,外部时钟停振,片内所有功能部件停止工作,如定时器,串行口,外部中断(部分增强型8051的外部中断可以工作),但片内RAM和SFR的内容保持不变。标准8051从掉电状态退出的惟一方法是硬件复位(部分增强型8051还可以通过外部中断来退出掉电状态),复位后,SFR被重新初始化,但RAM的内容不变。因此,若要使得8051在供电恢复正常后继续执行掉电前的程序,那就必须在掉电前预先把SFR中的内容保护到片内RAM,并在供电恢复正常后为SFR恢复到掉电前的状态。

当PCON的第一位IDEL为1时,进入空闲模式,CPU停止工作,不会执行任何指令,但中断、串行口和定时器可以继续工作。此时,CPU现场(即SP、PC、PSW和ACC等)、片内RAM和SFR中其他寄存器内容均维持不变。退出空闲模式有两种方法:

一、被允许中断的中断源发出中断请求;

二、硬件复位。30、看门狗应用

将喂狗操作(取反指令,如 CPL P1.0)分成两步,放在主程序和中断里执行。如将SETB P1.0放在主程序中,将CLR P1.0放在中断里,这样可以避免主程序跑飞,中断功能正常或者主程序正常,而中断跑飞的情况导致看门狗失效。

31、volatile作用

如果将将变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。此例中i也应该如此说明。

一般说来,volatile用在如下的几个地方:

1、中断服务程序中修改的供其它程序检测的变量需要加volatile;

2、多任务环境下各任务间共享的标志应该加volatile;

3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。32、51准双向口读取:

只有1条指令:

MOV A,P1为读端口寄存器 有两条指令: MOV A,#0FFH MOV A,P1为读引脚

33、采用C语言和汇编语言混合编程是最佳的选择;

34、系统投入运行的最初时刻,应对系统进行自检和初始化。开机自检在初始化前执行,如果自检无误,则对系统进行正常初始化,通常包括硬件初始化和软件初始化两个部分。硬件初始化是指对系统中的各种硬件资源设定明确的初始状态,如对各种可编程芯片进行编程、对各I/O端口设定初始状态和为单片机的硬件资源分配任务等。软件初始化包括,对中断的安排、对堆栈的安排、状态变量的初始化、各种软件标志的初始化、系统时钟的初始化和各

种变量储存单元的初始化等。

35、按键连击速度一般为3-4次/s。

36、复合键利用两个以上按键同时按下时产生的按键效果,但实际情况下,不可能做到真正的“同时按下”,它们的时间差可以长达50ms左右,故当检测到有KEY1按键按下时,还要等待超过50ms,再判断是否还有其他按键按下,再解析按键。

37、数码管显示闪烁效果时,一般闪烁速度为1-4次/s。

38、大电流和高电压设备的启动和关闭都是由软件指令来完成,这些指令执行后,必然引起强烈的干扰,这些干扰不能算随机干扰,它们与软件完全相关;可以在最后才执行这些可能引起强烈干扰的I/O操作,之后立即进入睡眠状态,这样就不会干扰到CPU,等CPU醒来后,干扰的高峰也基本过去。

39、用积分时间为20ms整数倍的双积分型A/D转换方式,能有效地抑制50Hz工频干扰。40、掉电检测电路必须在电压下降到CPU最低工作电压之前就提出中断申请,提前时间为几百us到数ms,以便掉电中断程序进行掉电保护。

41、用定时器作看门狗:当为专职看门狗时,在主程序中周期性清0定时器计数值,以使定时器中断不能产生,当产生定时器中断时,表明看门狗溢出,此时应执行出错处理程序或者进行复位。当为兼职看门狗时,可以在定时器中断程序对计数值进行加1,若计数值大于某值时,表明看门狗溢出,而主程序中应周期性地对计数值进行清0。

42、中断中,冲突发生的条件:

1)某一资源为中断程序和主程序所使用;该资源可以为1个变量,也可以为1个数组或者1个缓冲区。

2)中断程序或主程序对该资源进行了写操作;

3)主程序不能用一条指令对资源完成读或者写操作。(这条不对,参考深入浅出AVR单片机P100的例子)

当这三个条件均满足时,即有可能发生资源冲突,导致程序偶然运行不正常。为了避免发生冲突,可以在主程序中先关中断,再对资源进行读或写,结束后再开中断。

当主程序对资源的访问比较费时,长期关中断可能影响系统的实时性;解决的办法是尽可能缩短关中断的时间,将一边访问,一边处理的工作方式改为集中访问,分批处理。如果是读该资源,则关中断迅速将该资源的内容转移到缓冲区,再开中断,然后再对缓冲区中的信息进行处理;如果是写该资源,则先边运算边写缓冲区,全部写好后再关中断,然后迅速将缓冲区中的内容复制到该资源中,边可以开中断了。

43、A/B*C的运算方案不如(A*C)/B的运算方案精度高。因此,应尽可能将出现偏差的运算往后排,先进行无偏差或偏差小的运算。在定点运算系统中,加减法只要不超限,是没有偏差的,乘法运算的结果会使字长增加,如双字节乘双字节,积为四字节,如果保留全部结果,则没有偏差的。乘法运算的结果会使字长增加,如双字节乘双字节,积为四字节,如果保留全部结果,则没有偏差;如果受字长限制,则要舍去低位字节,从而产生舍入偏差。除法几乎都是有偏差的能够刚好整除的情况是很少的。在浮点运算系统中,加减法由于要进行对阶操作,当两操作数的阶码相差较大时,绝对值大的数有可能将绝对值小的数淹没,使运算的结果仍为绝对值大的数,一点儿也看不出绝对值小的数对结果的影响。相比之下,浮点乘法和浮点除法引起的偏差就比较小,它们能够保持一个比较稳定的运算精度。另外,不管在定点系统中还是在浮点系统中,都要尽可能避免两个数值相近的数过早相减,因为他们都可能是近似值,相减以后,差的有效数值大大减少,必然带来更大的相对误差。经过后续运算之后,结果可能离真实值相差甚远。再有,尽可能不要用绝对值小的数作分母,否则引起的误差也是很大的。

44、要对软件标志位的使用进行说明;对于全局定义的软件标志,它有惟一的定义;对于局

部定义的软件标志,必须注明其有效范围。

45、软件理论已经证明:任何一个程序(除某些短小的子程序外)都存在错误(缺陷),人们可以通过合理的测试来证明它仍然存在错误,却无法证明它已经没有错误。软件测试应该把发现错误作为目的,而不能把“程序调通”作为目的。

1.P0口能驱动8个TTL电路意思: 8051单片机P0口驱动8个TTL电路的意思,TTL电路输入悬浮时相当于输入高电平,因此P0口输出高电平驱动TTL电路几乎不需输出电流。TTL电路输入为低电平时最少要释放1mA电流,因此P0口输出低电平时吸收的电流大于8mA。TTL输出高电平最大1.6mA,输出低电平时吸收的最大电流 16mA。51输出最好用低电平有效,推动PNP管,因为51复位后IO为高电平,如果用高电平有效推N管的话上电复位后会先让外部电路动做。

2.在51里,有一条指令没有写进书本,机器码为A5,执行操作:将下一个字节跳过而不管它是单字节指令还是双字节或三字节指令的一部分.如果反汇编工具不识别A5指令的话,你在A5以后的程序反汇编后就错乱无章.当成个数据,用db a5 即可

3.有些51系统容易复位,一般是电路设计上的问题。很多电路介绍的复位电路都是10u和8.2k,但是在实践过程中我们发现该电路在电源不稳时很容易复位,特别是附近有大干扰时,如继电器动作等。我建议使用22u和1k的复位电路,有许多电路改为该数值后就工作稳定了。当然,最好的办法还是使用专用复位电路或三极管电路,但是那样要增加成本和体积。

4.电路中的滤波电容一定要注意加上,最好每个芯片都再加一个约0.1uf的电容,这样对电路的稳定性很有好处。如果使用了看门狗电路,就有可能是软件问题,程序工作到某些环节时忘记了复位看门狗,结果计数满了就复位了。

5.如果在中断程序中改变了多字节类型的变量,那么中断程序以外的程序中(主程序,子函数),读写前要关中断,读写后再开中断。举一反三:

其他的数据类型也可能有这种影响。例如:长整型、浮点型。

上面的例子是中断里写,主程序中读。相反主程序写,中断里读也可能出错。

6.教你一招,别说我损。。

写一个测试代码,反复向EEPROM中的某几个不用的空位字节写入0x55,直到把它干到寿命终结不能写为止,如果按照10MS写一个字节计算的话,大约只需要20分钟就能干掉它。然后向这个芯片中烧入你的正常代码,当然了,这个代码中应该有一段上电检测EEPROM这几个字节的代码,先尝试向它写入0Xaa,然后再读出来看看是否写入成功,如果没写入则再来两次,如果始终不能写入,这当作检查通过,如果就判断为检查失败,这个时候代码要装着‘不知情’继续执行正确代码,下面的‘破坏’行为应该如何做就不要我讲了把? 破坏行为要装的掩蔽一点,例如调一段代码檫除FLASH的代码,嘿嘿,那对方肯定以为CHIP质量不好容易出现FLASH数据丢失,如果对方使用了AD什么的,可以偶尔人为让它波动大一点,这样对方一般只会怀疑PCB和硬件电路弄的不好,而不会想到是代码动手脚了,长久以后他的用户肯定也会认为他们的产品质量不好,你这个时候就可以向他的客户推广你的产品了。。

上电写EEPROM的次数要在你自己的产品质量承诺的寿命时间之内,否则你自己的产品也

可能增加维修。。

这个方法特别适合在外接单挣钱的工程师,你可能给了对方几个CHIP做测试,对方测试通过偏说不行,就是不给你余款,然后把CHIP拿去CRACK,妄想省掉这个钱,NND,让他们见鬼去把,俺这招已经对付了不少不良分子。。

7.AD键盘

8.防解密高招

高招, 解密

使用一些带内部晶振和内部EEPROM的单片机,如PIC16F913和ATMEGA8等,带内部晶振的单片机有一个寄存器OSCTUNE(或OSCCAL),这个是芯片厂家用来校准内部晶振的,范围从0-31,出厂时同型号的单片机这个寄存器的值是不一样.我们可以利用一些隐藏功能,将OSCTUNE寄存器的值存入内部的EEPROM中,开机时读取EEPROM的值,再与OSCTUNE的值相比较, 若二者相同系统正常工作,若不

相同则不正常工作.解密者将解密的程序烧写进单片机中后,会发大部分的芯片不能正常工作,因为他们不知道这个隐藏的功能.举例说明: 芯片为PIC16F913,这个厂品有4个按键(KEY0、KEY1、KEY2、KEY3),内部我们可以设定这样子一个隐藏的功能,如果KEY0与KEY1同时按下3秒钟以上,会将OSCTUNE寄存器存入单片机的EEPROM中。

开机复位后,读取EEPROM中的数据,与OSCTUNE寄存器相比较,若二者相同系统正常工作,若不相同则不正常工作。以上有三个重点:

1、对于OSCTUNE寄存器不要进行写的操作,只进行读的操作,因为写了一次以后,就一直是你写的这个数据的。

2、刚才介绍的KEY0、KEY1同时按下3秒钟这个功能,可不能让解密者(包括产品的用户)知道,当然大家可以用别的隐藏的功能。

3、单片机中的OSCTUNE寄存器(或OSCCAL)的值,同一种型号的单片机不是每一个都是一样的,有32个数据,也就是说32个芯片中有一个是与解密的单片机是一样的。这样子造成的后果是:解密者解密了你的程序以后,却发现有些单片机可以正常工作,可有些单片机不能正常工作,可以说是大部分的单片机不能正常工作。

不过需要注意一下:要是遇到强干扰把EEPROM中的数据改变了看客户怎么收拾你!

9.PIC16F887A中,要求SLEEP指令后的下一条指令为NOP;不知51和AVR的芯片是否需要注意这一点。经查,AVR的datasheet无此要求,可能是其唤醒时,存在启动延时。

10.中断随时随刻都有可能产生,故编写程序时,需要时刻注意中断的影响。

11.注意以下语句在某些编译器下,结果可能出错:

unsigned char a,b;

unsigned int sum;

a=0x80;

b=0x80;

sum=a+b;

12.编程序最重要是好维护。几个执行时间和程序的可读性比,和开发时间比,我认为是不用考虑的。为了几个机器周期而把程序搞得很复杂,是非常愚蠢的行为。可是很多人多乐此不疲啊。总体系统的算法是要考虑优化的问题的,这点我是赞同的。天天在技术上对着几行程序去优化,而导致开发速度减慢,是非常愚蠢的行为。

13.串口通信协议:引导码/识别码+长度+命令字+data+校验

通过引导码/识别码、长度、校验三步检测 每当出错则丢弃当前数据并还原接收状态和空间…………

14.当准备调试一块板的时候,一定要先认真的做好目视检查,检查在焊接的过程中是否有可见的短路和管脚搭锡等故障,检查是否有元器件型号放置错误,第

一脚放置错误,漏装配等问题,然后用万用表测量各个电源到地的电阻,以检查是否有短路,这个好习惯可以避免贸然上电后损坏单板。调试的过程中要有平和的心态,遇见问题是非常正常的,要做的就是多做比较和分析,逐步的排除可能的原因,要坚信“凡事都是有办法解决的”和“问题出现一定有它的原因”,这样最后一定能调试成功。

做一个硬件设计人员要锻炼出良好的沟通能力,面对压力的调节能力,同一时间处理多个事务的协调和决断能力和良好平和的心态,还有细心和认真等等。

对初学者来说,在新的领域面前一穷二白,要学的东西太多太多,一味机械地试图学习这些“高深的语法”和“看不懂的技巧”,胡乱模仿些别人的“优秀风格”,不能说完全无所得,只能说会学得很累,而且往往事倍功半---久而久之,信心丧失殆尽,半途而废。学习编程,做自己便好。学习眼前能够看懂的内容,多写自己会写的程序。对于已经学到的东西,仔细地体会、思考,发掘其中的发展;学会用一种研究的心态去考察你的每一个疑问;不可以轻易地人云亦云,在网上看了别人无责任的经验,甚至是写错了,丢在一边,懒得改的东西之后,就放弃了自己的探索;要学会坚持自我,遇到别人先进的做法,在自己还没有体会到自己当前这种做法的劣势之前,不要轻易盲从;同样,使用了先进的方法,在没有同时理解这种做法的优点和缺点之前,请不要轻易地感叹“这种方法好,跟帖顶一下!”“大师高手宁有种乎?”坚持“体会到了才是学到了”的态度,最终形成自己的风格,形成自己的技巧。

第二篇:Java编程语言基础总结

第一章初识Java 1.程序是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。

2.Java包括编程语言和相关的技术。

3.Java主要用于开发,桌面应用程序和Internet应用程序。4.开发一个Java应用程序的基本步骤:编写源程序,编译程序和运行程序。源程序以.java为扩展名,编译后生成的文件以.class为扩展名。使用javac命令可以编译.java文件,使用java命令可以运行编译后生成的.class文件。

5.编写Java程序要符合Java编码规范,为程序编写注释可大大增加程序的阅读性。

6.MyEcplise是一个功能强大的集成开发环境(IDE)。它的各种窗口便于Java程序的开发,调试和管理。

第二章变量、数据类型和运算符

1.变量是一个数据存储空间的表示,它是存储数据的基本单元。变量的命名规则:

(1)必须以字母,“_”,“$”开头。(2)可以包括数字,但不能以数字开头(3)不能包括除“_”,“$”以外的特殊符号(4)不能使用Java语言关键字或者保留字(goto)

2.Java中数据类型分为基本数据类型和引用数据类型,基本数据类型有整型(int),双精度浮点型(double),字符型(char)和字符串(String)。3.变量要先声明并赋值,才能使用。4.Java提供各种类型的运算符,具体如下。

(1)赋值运算(=)(2)算术运算符(+,-,*,/,%)(3)关系运算符(>,>=,<,<=,==,!=)(4)条件运算符(条件?表达式1:表达式2)(5)逻辑运算符(&& , || ,!, & , |)&&(短路与)与&的区别:&&进行判断时,当第一个条件为假,则不需要判断第二个条件,结果为假。&进行判断时,即使第一个条件为假时,也需要判断完第二个条件才能给出结果为假。||(短路或)与|的区别:与上同理(5)位运算符(&, | , << , >> , >>>)5.数据类型转换是为了方便不同类型的数据之间进行运算

6.数据类型转换包括了自动类型转换和强制类型转换,自动类型转换需要满足类型兼容且目标类型大于源类型的条件

7.Java中使用boolean类型表示真假,boolean类型的两个值为true和false。

8.Java中的关系运算符可以用于来比较大小,高低,多少等,比较厚的结果是boolean类型。

9.Java提供Scanner类,可以实现从控制台获取键盘上输入的信息

第三章选择结构(一)Java中的if选择结构,包括以下形式

(1)基本的if选择结构:可以处理单一或组合条件的情况(2)if-else选择结构:可以处理简单的条件分支情况(3)多重if选择结构:可以处理连续区间的条件分支情况(4)嵌套if选择结构:可以处理复杂的条件分支情况

第四章选择结构(二)1.switch选择结构适用于进行等值判断

2.switch关键字后面小括号里表达式的值可以是int , short , byte , char , 枚举 , String(JDK1.7开始支持)

第五章循环结构(一)1.循环结构由循环结构和循环操作构成,只要满足循环条件,循环操作就会反复执行

2.使用循环结构解决问题问题的步骤:分析循环条件和循环操作,套用循环结构的语法写出代码,检查循环能否退出

3.while循环结构是先判断后执行,do-while是先执行,后判断。Do-while至少执行一次。

4.debug调试:设置断点,单步运行,观察变量

第六章循环结构(二)1.for循环结构的语法结构如下

for(表达式1:表达式2:表达式3){

} //循环体

表达式1:循环结构的初始部分,为循环变量赋初值 表达式2:循环结构的循环条件

表达式3:循环条件的迭代部分,通常用来修改循环变量的值 2.用break和continue语句控制流程

(1)break语句用于终止某个循环,程序跳转到循环体外的下一条语句。Break也可以在switch语句中使用

(2)continue语句用于跳出本次循环,进入下一次循环

(3)return可以结束当前方法的执行并退出,返回调用该方法的语句处

第七章数组

1.数组是可以在内存中连续存储多个元素的结构,数组中的所有元素必须属于相同的数据类型

2.数组中的元素通过数组的下标进行访问,数组的下标从0开始 3数组可用一个循环为元素赋值,或用一个循环输出数组中的元素信息

4.通过数组名.length可获得数组长度

5.利用Arrays.提供的sort()方法可以方便的对数组中的元素进行排序 6.二维数组实际上就是一个一维数组,他的每个元素又是一个一维数组。

第八章循环结构进阶

1.数组的输入排序,选择排序,冒泡排序

2.在二重循环中可以使用break、continue语句控制程序的执行 选择排序:

思路:每次循环得到最小值的下标,然后交换数据。如果交换的位置等于原来的位置,则不交换。插入排序:

思路:将数据插入到已排序的数组中。

第三篇:编程语言学习心得

程序语言学习的总结

通过两年的学习,我们基本上掌握了C语言,C++和C#三个编程课程。对于程序设计语言的学习,分为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。课程上的安排除了课堂讲授以外,学院设有专门课堂到实验室进行上机操作实验。

要利用c语言学到的知识编写c语言程序,即把c语言作为工具,通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。通过上机实验来验证自己编制的程序是否正确。在这种思想支配下,可能你会想办法去“掩盖”程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。

在原有的C语言的基础知识之上,初步接触C++时感到比较简单易懂。但随着之后的步步深入学习,C++的不同之处以及其优势逐。从第二章引入了C++简单程序的设计。包括一些C++语言的概述,基本数据类型和表达式,数据的输入与输出,算法的基本东芝结构,以及自定义类型数据等知识。此部分多与C语言相似。之后又学习了函数的相关内容,这里学到了新的知识要点----函数重载。该内容尤其在现在做课程设计的时候尤为重要。类是C++语言的精华之所在,在学习中,我感觉到类和C语言中的结构体有很大的相似之处,但在类中的构造函数、拷贝构造函数以及类的组合,经常弄混淆一些概念。在这之后又学习了类的继承与派生。这使得类与类之间形成了树状图的模型,各子类可以访问到父类的一些数据成员,同样也实现了数据的之间的“共享”。我个人在编写派生类的构造函数和拷贝构造函数时,感觉很不熟练,后面章节的多态性主要学习了运算符的重载,其本质就是函数的重载。

在学习C#中,类是具有相同特性和行为的对象的抽象。它使用关键字class声明的。在c#中仅允许单个继承,类只能从一个基类继承实现。但是一个类可以实现一个以上的接口。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等局可以看对象,它不仅表示具体的事物,还能表示抽象的规则、计划或者事件。接口只是包含方法、委托或事件的签名。方法的实现是在实现接口的类中完成的。接口可以是命名空间或类的成员,并可以包含下列成员:每个C#可执行文件都有一个入口—Main方法:static void Main()修饰符public表示可以在任何地方访问该方法。所以可以在类的外部调用它。修饰符static表示方法不能在类的实例上执行,因此不必先实例化类在调用。在变量声明时:变量是类或者结构中的字段,如果没有显示初始化,创建这些变量时,其值就是默认的0。变量是方法的局部变量就必须在代码中显示初始化,之后才能在语句中使用它们的值。

课堂上要讲授许多关于语法规则,要使用这些工具解决问题,通过多次上机练习,对于语法知识有了更深刻的认识,在理解的基础上就会自然而然地掌握。一个程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。通过上机实验,熟练地掌握开发环境,为以后真正编写计算机程序解决实际问题打下基础。

第四篇:C语言编程

#include(stdio.h)

main()

{ int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0};

char again='y';

while(again=='y'){ srand((int)time(0));

while(i4){ k=(int)rand()%10;

for(j=0;ji;j++)if(k==question[j]){ k=-1;break;}

if(k==-1)continue;question[i]=k;i++;}/*while i*/

for(i=8;i0;i--)/*还有8次机会*/

{ A=0;B=0;printf(“n你还剩下%d次机会。”,i);

printf(“n请输入四个0-9之间的数字,中间用空格隔开n”);for(j=0;j4;j++)scanf(“%d”,&answer[j]);

for(j=0;j4;j++)

for(k=0;k4;k++)

{ if(answer[j]==question[k]){ if(j==k)A++;else B++;} }/*for*/

if(A==4){ again='0';

printf(“n你赢了,还继续猜吗?(y/n)”);

while(again!='y'&&again!='n')

scanf(“...%c”,&again);break;}/*if*/

printf(“n%dA%dB”,A,B);if(i==1){ again='0';

printf(“n你输了,正确答案是”);

for(j=0;j4;j++)

printf(“%dt”,question[j]);

printf(“n还继续吗?(y/n)”);

while(again!='y'&&again!='n')scanf(“%c”,&again);

printf(“%c”,again);break;}/*if*/ }/*for changce*/ }/*while again*/ printf(“感谢您玩这个游戏。”);}

第五篇:编程语言的介绍

本文由2008146683贡献

doc1。

编程语言介绍

目录 [隐藏] 1 开放源代码的必要性 2 各种语言的选择 3 各种语言的选择 4

我为什么选择了 Python 5 Ruby 和 Python 的比较 5.1 Python 和 Ruby 的相同点

5.2 和 Python 相比 Ruby 的优点 5.3 和 Python 相比 Ruby 的不足 5.4 Pyth

on 和 Ruby 的语言的选择 6 多脚本语言的大统一及疑问 7 .NET 介绍 7.1 .NET

所实现的 Java 的功能 7.2 .NET 未实现的 Java 功能 7.3 .NET 实现的 Java

不具备的功能 7.4 相对 vs6 的改进 8 XML 各种技术介绍 9 最先进的 XML 格式图

形界面程序开发工具-XUL 10 最接近人类语言的编程语言-REBOL 11 最具有现代感 的 Lisp 解释器 DrScheme 12 eiffel 语言印象 13 mozart oz 语言 14 各种语言的

选择和语言之间的关系 14.1 一般是使用什么软件,就用什么软件的语言 14.2 然

后看处理什么样类型的数据 14.3 从语言特点来说 14.4 C 语言是最普及的语言,但 C 语言有一些缺点,因此,就产生了很多改进 C 的语言 14.5 关于图形用户界面 的选择 14.6 discuss 15 文学编程和 CWEB 介绍 16 贡献 [编辑] 开放源代码的必

要性 在介绍编程语言之前,先说说开放源代码的必要性。现在,在软件生产领域存在

巨大的智力浪费,大 家把大量的精力用在编写别人已经实现的程序代码上。看看,文

本编辑器有多少,看看 ftp 程序有多少,看看字处理程序有多少,这些程序虽然有

差别,但主要的功能都是一样的。要实现个性化的功能,在已有 的软件基础上修改会

节省多少时间呀!而每个程序各编一套,又浪费多少时间?如果,没有这些重复的工

作量,世界上的程序员至少可以节省 80%的工作量。同时,开放源代码也方便了大家 的交流,阅读源代码 应该是最直接最有效的学习途径,尤其是比较专业的领域。要

开放源代码,下面几点比较重要: 语言要流行。语言的函数和类库统一。语言的语

法和编译器要统一。编译器是否开放源代码。API 是否开放源代码。语言的可重用性、功能、友好

性。语言统一:如果大家都用一种编程语言,都用同样的函数,同样的类库,那么,大家的共同语言就会 很多。大家只要学会一种语言,一套函数,一套类库,就可以相

互读懂源代码,这样,学习量是最少的; 但是语言统一根本是不可能的事,因为各种

语言都有其特色,如果取了其中一个优点,通常就会牺牲另一 个优点。可是学习新 的 API 浪费程序员大量的时间和精力,尤其是当这个 API 有大量和其他 API 重复 的功 能的时候。要增加代码的可重用性,要从下面几点着手: 代码的可读性。如格

式、是否接近英语语法和单词。代码的表达能力,也就是简单性,能用最少的语句和

单词实现同样的功能。代码的结构性,如函数、模块、类。语言功能的强大从下面

几点来说: 是否拥有大量的库支持。这是最重要的,要求编写任何功能的程序都有强

大的库支持。语法功能是否强大,比如是否有出错处理。是否有指针。语言的友好

性: 语言包的大小,语言包越小,学习越简单。语言是否有友好的编辑调试环境。

语言的可视化和集成编程环境。

[编辑] 各种语言的选择 如果编写对性能要求苛刻,或和操作系统结合紧密的程序,必然选择 C。

如果编写到处可用的程序,选 Java。

如果编写大程序,可能的话尽量用脚本语言如 Python、Ruby,不行了再用 Java

和 C。因为脚本语 言带来了生产力。

编写文本的处理程序用 Perl 或 Ruby。

编写知识的处理程序用 prolog。编写最灵活,最模糊的程序用 Lisp。编写 office 程

序用 vba。编写服务器端程序,PHP、(采用自己熟悉的语言来写,例如 Perl、Pyt

hon、Ruby)CGI、ASP、(熟悉 Java 就用)JSP 都是选择。编写数据库程序用 vb、PowerBuiler 或 delphi。进行算法研究、设计,用 Pascal。[编辑] 各种语言的

选择 如果要追求性能和程序的能力,要完全发挥操作系统的能力,使用 C/C++语

言是合适的。Windows 在 环境下用 VC,在 Unix-like 环境下用 gcc。如果不是

追求和操作系统完美结合,而只是性能,又要追求跨平台性,那么仍然选择 C,但可

以选择 跨平台的库,如 qt、gtk、fox、wxWidgets。如果要编写游戏也有跨平台选择

:SDL。如果不满意 C 领域标准的不统一,不满意 C 的容易出错,不满意 C 的面向

对象特征不彻底。如果不在 乎跨平台,Windows平台可以选择 C#,mac平台可以选

择 Cocoa(Objective-C)。如果需要跨平台,可以选择 Java。如果需要跨平台,又要广泛的支持的话,选择 Java。在 Unix-like 下,最方便的工具语言是 Per

page 1 l,它有强大的社区和代码库的支持。

如果只作为简单应用的工具语言,Python 和 Ruby 是更好的选择,他们的跨平

台移植性好,应用也 比较广泛。其中 Python 更适合入门和交流,长期使用也不错。

Ruby 是对 Python 不满意的另一个选择,它提供了很多额外的功能。如果要选择一

个程序的嵌入语言,原来有 Lisp、Basic 和 Java,现在还可以选择 Python 和 Rub

y。如果在要求动态解释执行语言,而又不想学其他语言的话,C 程序员的选择是 p

ike,Java 程序员的 选择是 beanshell。在 Java平台,又想用脚本语言的话,可

以用 Python。最正统的基于文档的语言或叫动态页面语言是 JavaScript。最专门 的服务器端语言是 PHP,当然也有很多其他选择。XML 语言以 XUL 为最着名,dtml

也算一个,你自己也可以用 XML 作为自己特殊用途的语言。比如 jedit 就用 XML

作为一种模式定制语言。XML 语言是一种比较先进的趋势,比现有的语言在特殊领域

更高 效。要找容易实现的语言,Lisp 和 Tcl 是选择。Lisp 的数据和程序融为一

体的能力和自由是其他语言都没有的。现在出现了一个 Lisp 的现代化的变 种:REB

OL。如果有基于事实的编程的需要的话,prolog 和 Clips 是必然。[编辑] 我为什

么选择了 Python 首先声明,我编程只编应用程序,就是代替自己工作的小程序。如

果编写系统程序总会用到 C 或 Java 的。我喜欢脚本语言,脚本语言不用编译就可

以运行,非常便于修改,而编程序是一种经常性的活动,程 序编完后总在不断的修改

中,没必要搞的很隆重,还要编译。另外,脚本程序每个使用的人都可以随手拿 来修

改,不会出现还要去找源代码的情况。因此,C/C++和 Java 就被排除了。我喜欢

简单的语言,不喜欢为了编写简单的程序而去学习大量复杂的规定,需要大量的学习

才会的语 言不是好语言,是把人当机器看。C/C++和 Java 都有严格但罗索的语法,有永远学不完的函数、类、库。让人看到就头大。而 Perl 有各种怪里怪气的速记

符号,程序常常让人头晕。简单的含义除了容易学,还要 功能丰富,常用到的东西要

早就准备好,不用每个人都去写同样的数据结构程序等。Python 有丰富的数 据类型,有完备的面向对象的结构,有规则表达式等各种方便编程的模块。这个逻辑就是程

序做的多,人 做的就少,如果程序做的少,就要人做的多。这就是界面友好的问题。

容易上手,功能丰富是程序设计的 很重要的目标,Windows 就是靠这个流行的。P

ython 也很好的体现了这点。Perl 象 Unix 的 emaCs 而 而 之类其它工具一样,功

能强大,但太难学,太难懂。是比较违背人性的。关于性能。现在 Cpu 已经很强大

了。除了很大的程序和系统程序,没必要关心性能。关于功能。如果不是编写系统程

序和贴近系统的程序,没必要使用操作系统特别提供的功能。C 是可 以干任何事情,但它编程效率低,复杂。至于我为什么不用 vb,因为 vb 太庞大了。我没必要实现

一个小功能启动这么庞大的程序。太夸张。另外,vb 没有类继承,虽然是应用编程,但如果要编稍微大的程序,总会用到类继承的。Python 得强大得扩展能力使对 P

ython 得学习不会浪费。Python 经过简单得处理能使用各种得 C 和 C++库,也可

以被 C 和 C++调用。Python 可以直接使用 Java 得类,也可以直接被 Java 调用

。这样,对 Python、Java、C 得学习和使用经验都不会被浪费,还能相互补充。Py

thon 可以提高 Java 和 C 得编 程效率,Java 和 C 可以补充 Python 功能上得不

足。Python 还可以和 Tcl 直接交互,这种功能是内置得。期待 Python 能简单的

调用 Perl 和 PHP 得功能。能使用 Lisp 和 prolog 更好。[编辑] Ruby 和 Pytho

n 的比较 [编辑] Python 和 Ruby 的相同点 都强调语法简单,都具有更一般的表达

方式。Python 是缩进,Ruby 是类 Basic 的表达。都大量减少 了符号。都是动态数据类型。都是有丰富的数据结构。都具有 C 语言扩展能力,都具有

可移植性,比 Perl 的可移植性更好。也都可以作为嵌入语言。都是面向对象的语言,都可以作为大项目的开发工具。都有丰富的库支持。也有最宽松的版权许可,除

了一些工具属于 GNU 世界。都有 Lisp 特色的 eval 函数,也都能把函数作为参数

。也有图形界面的 Ruby 的专门编辑器。都获得了广泛的 C 库的支持。如 qt、gt

k、tk、SDL、FOX 等,Ruby 计划实现 SWIG 接口。都有完善的文档。[编辑] 和 P

ython 相比 Ruby 的优点 具有正则表达式和嵌入 HTML 的功能。Python 也有正则表

达式,但没有 Ruby 的应用方便和广泛。Python 的嵌入 HTML 项目才刚起步。Ruby

还有 apaChe 的 mod 模块。Ruby 本身也实现和很多 Unix 工具,如 raCC,doCtoo

ls。比 Python 更亲近Linux。比 Python 功能更完整的面向对象的语法。Ruby 的

page 2 整个库都是具有类继承的结构。他的基本的数据类型和运算符都是可以重载的。Ru

by 主要的功能都是通过对象的方法调用来实现的,而不是函数。Python 也在向这方

面发展,但没 有 Ruby 做的彻底。Ruby 的类是更规范的单继承,还有接口等概念的

实现。Python 可以实现在列表内的条件语句、循环语句,Ruby 用“块”的方式来

实现这个功能,Python 而 比 的更灵活,更具有通用性。Ruby 具有类似 Lisp 的

彻底的函数方式的条件语句、循环语句等。语句的表达能力更强。附带一些 Unix 工

具,如 raCC 等。[编辑] 和 Python 相比 Ruby 的不足 最大的不足正是因为 Ruby 的强大所引起的。它没有 Python 的简单性好。比较复杂的面向对象语法、“块”

语法的引入、正则表达式的引入、一些简写标记都增加了语言的复杂性。Python 的

缩进表达方式比 Ruby 的 Basic 的表达方式更让人悦目,Ruby 程序的满眼的 end 让

人不 舒服。当然,Ruby 认为 end 的方式比 Python 更先进。Ruby 还没有 Python 的“自省”的能力,没有从程序文件中生成文档的能力。Ruby 支持不及 Python 广

。国际化支持在 Ruby 的计划中。这是因为 Ruby 的历史比 Python 要短 造成的。

[编辑] Python 和 Ruby 的语言的选择 从简单的就是好的来说,Python 是没错的。

选 Python 适合寻找简单语言的人,这很可能造成 Python 更流行,因此也有更多 的支持。但如果要追求更强大的语法功能,对编程语言感兴趣,想了解各种编程概 念 的人,则 Ruby 是好的选择。Ruby 和 Python 都想取代 Perl,解决 Perl 的缺点—

—面向对象不足,但 Python 用是方法是混合面向对象和程序式的程式语言,Ruby

是允许自己这个面向对象语言扮成程序式的 程式语言,[编辑] 多脚本语言的大统一

及疑问 现在各种脚本语言太多了,有必要进行整合,parrot 是一个好的想法。.NE

T 也是好的想法。它为各 种脚本提供了一个统一的虚机,为各种脚本语言提供了基于

“类”的相互调用,为各种脚本提供了统一的类 库。现在各种脚本语言只是提供了

对 C 语言的交互性,这种交互也是费劲的和效果不好的。比如 Python、Perl、Rub

y 等都提供了对 C 的交互功能。脚本语言之间的交流障碍重重。而类似.NET 的东西,提供了 非常容易的各种脚本的相互利用的途径,避免了很多的代码的重复编写。这

种标准平台的力量是很大的,这种标准平台为什么没有在开源领域首先出现呢?众多的脚本正是开源的特点和

优势,为什么这种问题要 微软来解决呢?前面有人提出了类似的问题,在 Linux 中

为什么至今没有好用的类似 ODBC 的东西呢? 可能这种整合只有商业公司有能力实现 吧。我的理解是,如果有创新思想的人都拿他的想法去卖钱了,因此,在开源中只剩

下了模仿的人。kde 是模仿 Windows,koffice 是模仿 office,Linux 是模仿 Unix,gcc、bash 等也全都是模仿,以及 gstep 等,还有 freedos、atheos 等也是模仿,wxWindows、SDL 也是模仿。我想知道开源社区有没有自己 的创新?我所知道的创

新是 zope,但 zope 最初也是商业产品,后来才开源的。Perl 是创新,Python 是

创新,但还有什么呢?是不是开源领域只有 hacker,没有 Creator? [编辑] .

NET

介绍 [编辑] .NET 所实现的 Java 的功能 可控代码 跨平台的虚机和伪码 免费赠

送命令行编译器 纯面向对象语言 对 XML 和 XML web serviCes 的支持 和 jsp 对应 的 asp.NET 网页上的程序 一套统一的中间件环境。asp. NET 跟 jsp 不是同一个

层次上的 web 技术,asp. NET 使用完善的事件响应机制,WinForms 类似的 Web

Form 技术,只有 JSF 跟 Asp.NET 有可比性。[编辑] .NET 未实现的 Java 功能

免费的集成开发环境 多厂家支持,跨平台的成熟度 免费的 IDE,#develop,AS

P.NET 的有 MS 的 WebMatrix 而免费开源的 CLR 实现,有 MS 自己的 XP,FreeBS

D,Mac OS 下的 实现(原理演示不能进行商业应用),Novell 下的 Mono 项目,已经发布了 Beta1 版本,在 2004-6-30 将会发布 Release1; 还有 GNU 的一个.

NET 实现![编辑] .NET 实现的 Java 不具备的功能

多语言支持 强大的集成开

发环境。在 Windows 上媲美本机程序的速度。对 COM 的支持,对 vs 的继承 对

widows form、web form、服务器端程序的图形直观编程。[编辑] 相对 vs6 的改进

统一了集成开发环境,使 C++程序也具有了 vb 的友好性。[编辑] XML 各种技术

介绍 XML: XML 是统一格式的结构化数据的文本文件。基于 XML 的程序,数据结构

是开放的,方便不同程序处理同一种文件,这样,程序之间可以达到高水平的协作。

XML 现在成为了各行各业统一数据格式的基础。XML 发展出了完善的语法,它用 D

TD 或 XMLscheme 来界定 XML 的标记语言。用 uri 来唯一确定 一个 XML 格式。用

page 3 Css 或 XLT 来转换 XML 格式,xlink 和 xpointer 等来建立 XML 的链接,用 xpa

th 来定位 XML 中的数据。xHTML: 是严格符合 XML 格式的 HTML。RDF: 基于 X

ML 的元数据描述语言。方便交换结构化数据。方便交换知识。RDF 是用主语、谓语、宾语来描述知识的。SVG: XML 格式的矢量图形格式。SMILE: XML 格式的各种

多媒体在时间线上的协同。xmath: XML 格式的公式描述语言。

XML-rpC 和 soap: 以 http 协议和 XML 格式来进行网络程序之间的消息通讯

。XUL: netsCape 的 mazilla 使用的程序界面语言,基于 XML 格式,比 HTML 强

大的多的描述图形界面的 XML 语言。它用 Css 来换肤,用 DTD 来实现多语言界面,用 JavasCript 来实现程序逻辑,以此编写跨平台的可方便定制界面的程序,现在这

个程序 API 功能已经很强大了,整个 mazilla 程序就是基于 XUL 的。xaml: MS

在 LongHorn平台的最新编程语言,将统一 Windows 与 Web 编程,直接使用 Lon

gHorn 下的 浏览器进行执行,跟 XUL 有类比性 [编辑] 最先进的 XML 格式图形界

面程序开发工具-XUL 大家知道 netsCape 程序,一个仅次于 ie 得浏览器,也有很

多人知道 Mozilla,netsCape 得开放源 代码版本。但很多人只是使用 Mozilla,不

知道 Mozilla 另一个重要得功能--程序开发。在 netsCape 开放源代码后三年 Mo

zilla 得 1。0 版还没有问世,很多人讥笑他的超慢得开发速度,实际上,Mozilla

酝 酿出了一个超酷得新产品,可以看作是软件开发工具发展得另一个里程碑。现在

基于浏览器得三层开发结构非常流行,微软的.NET 的思路就是基于这个结构得。另

外,不考虑 服务器结构,就是基于网页得 JavaScript 小程序也对人很有吸引力,这

些产品得思路都是以 HTML 为用 户界面,但开发人员常常苦恼于 HTML 太简陋。而

Mozilla 得 XUL 解决了这个问题。XUL 是对 HTML 的扩展,完全兼容于 HTML,X

UL 基于 XML 格式对 HTML 进行了扩展,实现了完整、强大得图形用户界面设计功

能。可以设计出复杂得图形界面程序。实际上 mazilla 整个就是由 XUL 设计的。

XUL 用 Css 来控制界面风格、用 DTD 来替代字符串,方便的实现本地化,用 Java

sCript 来对用户界面 的操作作出反应,提供基本的逻辑编程,JavaScript 通过对象

文档接口 DOM 来动态控制用户界面。同时 JavasCript 通过调用 Mozilla 提供的丰

富的底层 API 来实现强大的功能。Mozilla 提供了功能强大的 API 可以进行文件操

作、网络操作、图形操作等各种操作,并且这种 API 是完全跨平台的。最后,Mozil

la 用 RDF 格式来存储独立于界面的数据。总结:XUL 由于兼容 HTML,提供了最强

大的用户界面的定制,DTD 提供了最方便的本地化。XUL、JavasCript、RDF 提供了

显示、逻辑、数据的分离。Mozilla 的底层 API 提供了跨平台的强大编程能力。希

望大家都来关心 Mozilla。[编辑] 最接近人类语言的编程语言-REBOL REBOL 的详

细资料见 www.xiexiebang.combinator

ial Problems 组合问题 Sorting 排序 Searching 查找 Median and Selection 中位

数 Generating Permutations 排列生成 Generating Subsets 子集生成 Generating

Partitions 划分生成 Generating Graphs 图的生成 Calendrical Calculations 日

期 Job Scheduling 工程安排 Satisfiability 可满足性 Graph Problems--polyn

omial 图论-多项式算法 Connected Components 连通分支 Topological Sorting 拓

扑排序

Minimum Spanning Tree 最小生成树 Shortest Path 最短路径 Transitive Cl

osure and Reduction 传递闭包 Matching 匹配 Eulerian Cycle / Chinese Postma

n Euler 回路/中国邮路 Edge and Vertex Connectivity 割边/割点 Network Flow

网络流 Drawing Graphs Nicely 图的描绘 Drawing Trees 树的描绘 Planarity Det

ection and Embedding平面性检测和嵌入 Graph Problems--hard 图论-NP 问题

Clique 最大团 Independent Set 独立集 Vertex Cover 点覆盖 Traveling Salesma n Problem 旅行商问题 Hamiltonian Cycle Hamilton 回路 Graph Partition 图的划

分 Vertex Coloring 点染色 Edge Coloring 边染色 Graph Isomorphism 同构 Stei

ner Tree Steiner 树 Feedback Edge/Vertex Set 最大无环子图 Computational Ge

ometry 计算几何 Convex Hull 凸包 Triangulation 三角剖分 Voronoi Diagrams V

oronoi 图 Nearest Neighbor Search 最近点对查询 Range Search 范围查询 Point

Location 位置查询 Intersection Detection 碰撞测试 Bin Packing 装箱问题 Me

page 6 dial-Axis Transformation 中轴变换 Polygon Partitioning 多边形分割 Simplify

ing Polygons 多边形化简 Shape Similarity 相似多边形 Motion Planning 运动规

划 Maintaining Line Arrangements平面分割 Minkowski Sum Minkowski 和 Set a

nd String Problems 集合与串的问题 Set Cover 集合覆盖 Set Packing 集合配置

String Matching 模式匹配 Approximate String Matching 模糊匹配 Text Compres

sion 压缩

Cryptography 密码 Finite State Machine Minimization 有穷自动机简化 Lo

ngest Common Substring 最长公共子串 Shortest Common Superstring 最短公共父

串 DP——Dynamic Programming——动态规划 recursion —— 递归 编程词汇 A2A

integration A2A 整合 abstract 抽象的 abstract base class(ABC)抽象基类 abs

tract class 抽象类 abstraction 抽象、抽象物、抽象性 access 存取、访问 acce

ss level 访问级别 access function 访问函数 account 账户 action active 动作

活动的 activate 激活 actual parameter 实参 adapter 适配器 add-in 插件 add

ress 地址 address space 地址空间 address-of operator 取地址操作符 ADL(arg

ument-dependent lookup)ADO(ActiveX Data Object)ActiveX 数据对象 advanced

高级的 aggregation 聚合、聚集 algorithm 算法 alias 别名 align 排列、对齐 a llocate 分配、配置 allocator 分配器、配置器 angle bracket 尖括号 annotatio

n 注解、评注 API(Application Programming Interface)应用(程序)编程接口 ap

p domain(application domain)应用域 application 应用、应用程序 application

framework 应用程序框架 appearance 外观 append 附加 architecture 架构、体系

结构

archive file 归档文件、存档文件 argument 引数(传给函式的值)。参见 par

ameter array 数组 arrow operator 箭头操作符 ASP(Active Server Page)活动服务

器页面 ASP.NET worker process ASP.NET 工作者进程 assembly 装配件、配件 汇编

语言 装配件清单 assembly language assembly manifest assert(ion)断言 assig

n 赋值 assignment 赋值、分配 assignment operator 赋值操作符 associated 相关 的、相关联的 associative container 关联式容器(对应 sequential container)a

synchronous 异步的 atomic attribute 原子的 原子操作 特性、属性 atomic oper

ation authentication service 验证服务 authorization 授权 audio A.I.音频 人

工智能 背景、后台(进程)向后兼容、向下兼容

B2B integration B2B 整合、B2B 集成(business-to-business integration)

background backup 备份 backward compatible backup device 备份设备 backup f

ile 备份文件 bandwidth 带宽 base class 基类 base type 基类型 batch 批处理

BCL(base class library)基类库 binary 二进制 binary search 二分查找 binary

tree 二叉树 binary function 双参函数 binary large object 二进制大对象 bin

ary operator 二元操作符 binding 绑定 bit 位 bitmap 位图 bitwise 按位⋯.bitwise copy 为单元进行复制;位元逐一复制,按位拷

bitwise operation 按位运算 block 块、区块、语句块 bookkeeping 簿记 bo

olean 布林值(真假值,true 或 false)border 边框 bounds checking 边界检查 b oxing 装箱、装箱转换 brace(curly brace)大括号、花括号 bracket(square br

akcet)中括号、方括号 breakpoint 断点 browser applications 浏览器应用(程序)browser-accessible application 可经由浏览器访问的应用程序 build 编连(专指

编译和连接 built-in 内建、内置 bus 总线 business 业务、商务(看场合)busine

ss Logic 业务逻辑 business rules 业务规则 buttons 按钮 bug 臭虫 by/through

通过 byte 位元组(由 8 bits 组成)cache 高速缓存 calendar 日历 call 调用 c

allback 回调 call-level interface(CLI)调用级接口(CLI)call operator 调用操

作符 candidate key 候选键(for database)cascading delete 级联删除(for da

tabase)cascading update 级联更新(for database)casting catalog chain 转型、造型转换 目录 链(function calls)character 字符 character format 字符格式 character set 字符集 CHECK c

page 7 onstraints CHECK 约束(for database)checkpoint 检查点(for database)chec

k box 复选框 check button 复选按钮 child class 子类 CIL(common intermedia

te language)通用中间语言、通用中介语言

class 类 类定义 类厂 类库 类装载器 类模板 类模板特化

class declaration 类声明 class definition class factory class library

class loader class template class derivation list 类继承列表 class hierar

chy 类层次结构

class template partial specializations 类模板部分特化 class template

specializations classification 分类 clause 子句 client application 客户端应

用程序 client cursor 客户端游标(for database)code page 代码页 cleanup 清

理、清除 通用语言基础设施 CLI(Common Language Infrastructure)client 客户、客户端 client area 客户区 client-server 客户机/服务器、客户端/服务器 cli pboard 剪贴板 clone 克隆 CLS(common language specification)通用语言规范

code access security 代码访问安全 COFF(Common Object File Format)collect

ion 集合 COM(Component Object Model)组件对象模型 combo box 组合框 comman

d line 命令行 comment 注释 commit 提交(for database)communication 通讯 c

ompatible 兼容 compile time 编译期、编译时 compiler 编译器 component 组件

composite index 复合索引、组合索引(for database)composite key 复合键、组

合键(for database)composition concept 概念 concrete 具体的 concrete clas

s 具体类 concurrency 并发、并发机制 复合、组合 通用对象文件格式 constraint 约束(for database)configuration 配置、组态 connection co

nsole constant 连接(for database)connection pooling 连接池 控制台 常量 construct 构件、成分、概念、构造(for language)constructor(ctor)构

造函数、构造器 container 容器 containment 包容 context 环境、上下文 contro

l 控件 cookie(不译)copy CORBA cover 拷贝 通用对象请求中介架构(Common Obj

ect Request Broker Architecture)覆盖、涵盖 创建、生成 交叉表查询(for dat

abase)create/creation crosstab query CRTP(curiously recurring template pattern)CTS(common type system)通

用类型系统 cube 多维数据集(for database)cursor 光标 cursor 游标(for dat

abase)custom 定制、自定义 data 数据 数据连接(for database)data connecti

on Data Control Language(DCL)数据控制语言(DCL)(for database)Data Def

inition Language(DDL)数据定义语言(DDL)(for database)data dictionary 数

据字典(for database)data dictionary view 数据字典视图(for database)dat

a file 数据文件(for database)data integrity 数据完整性(for database)da

ta manipulation language(DML)数据操作语言(DML)(for database)data mart 数

据集市(for database)data pump 数据抽取(for database)data scrubbing 数据

清理(for database)data source 数据源(for database)数据仓库(for databa

se)Data source name(DSN)数据源名称(DSN)(for database)data warehouse d

ataset 数据集(for database)database 数据库(for database)database catalog 数据库目录(for datab

ase)database diagram 数据关系图(for database)database file 数据库文件(for database)database object database owner database role 数据库对象(for database)数据库所有者(for database)数据库角色(for

database)database project 数据库工程(for database)database schema 数据库模式、数据库架构(for database)database script 数据库脚本(for database)data

-bound data member dataset data source data table datagram 数据绑定(for d

atabase)数据成员、成员变量 数据源(for database)数据表(for database)数

page 8 据报文 data-aware control 数据感知控件(for database)数据集(for database)data structure 数据结构

DBMS(database management system)数据库管理系统(for database)DCOM(distributed COM)分布式 COM dead lock 死锁(for database)deallocate 归还 d

ebug debugger decay 调试 调试器 退化

decision support 决策支持 declaration 声明 declarative referential in

tegrity(DRI)声明引用完整性(DRI)(for database)deduction 推导 DEFAULT con

straint 默认约束(for database)default database 默认数据库(for database)

default instance 默认实例(for database)default result set 默认结果集(f

or database)default defer delegate 缺省、默认值 推迟 委托 definition 定义 delegation 委托 dependent name deploy 部署 dereferenc

e 解引用 dereference operator(提领)运算子 derived class 派生类 design by

contract 契约式设计 design pattern 设计模式 destroy device 销毁 设备 destr

uctor(dtor)析构函数、析构器

DHTML(dynamic HyperText Markup Language)动态超文本标记语言 dialog di

gest 对话框 摘要

digital 数字的 DIME(Direct Internet Message Encapsulation)直接 Inter

net 消息封装 directive(编译)指示符 directory 目录 dirty pages 脏页(for d

atabase)dirty read 脏读(for database)disassembler 反汇编器 DISCO(Disco

very of Web Services)Web Services 的查找 disk 盘 dispatch 调度、分派、派发

(我喜欢“调度”)DISPID(Dispatch Identifier)分派标识符 distributed comp

uting 分布式计算 distributed query document 文档 DOM(Document Object Mode

l)文档对象模型dot operator(圆)点操作符 driver 驱动(程序)DTD(document ty

pe definition)文档类型定义 double-byte character set(DBCS)双字节字符集(D

BCS)dump 转储 动态游标(for database)动态筛选(for database)动态锁定(f

or database)dump file 转储文件 dynamic cursor dynamic filter dynamic lock

ing 分布式查询(for database)DNA(Distributed interNet Application)分布式

网间应用程序

dynamic recovery 动态恢复(for database)dynamic snapshot 动态快照(f

or database)dynamic SQL statements 动态 SQL 语句(for database)dynamic a

ssembly 动态装配件、动态配件 dynamic binding 动态绑定 EAI(enterprise appl

ication integration)企业应用程序集成(整合)EBCO(empty base class optimiza

tion)e-business 电子商务 空基类优化(机制)

EDI(Dlectronic Data Interchange)电子数据交换 efficiency 效率 efficie nt 高效 end-to-end authentication 端对端身份验证 end user 最终用户 engine

引擎 封装 entity 实体 encapsulation enclosing class 外围类别(与巢状类别 nested class 有关)enum(enumerat

ion)枚举 enumerators 枚举成员、枚举器 equal equality error log 相等 相等性

错误日志(for database)equality operator 等号操作符 escape code 转义码 escape character 转义

符、转义字符 exclusive lock evaluate 评估 event 事件 event driven 事件驱动 的 event handler 事件处理器 evidence 证据 exception 异常 exception declara

tion 异常声明 exception handling 异常处理、异常处理机制 exception-safe 异常

安全的 exception specification 异常规范 exit 退出 explicit 显式 explicit s

pecialization 显式特化 export facility feature fetch 提取 field 字段(java)

field 字段(for database)field length 字段长度(for database)file 文件

filter 筛选(for database)finalization 终结 firewall 防火墙 finalizer 终结

器 firmware 固件 flag 标记 flash memory 闪存 flush 刷新 font 字体 foreign

key(FK)外键(FK)(for database)导出 设施、设备 特性、特征 expression 表达

式 fat client 胖客户端 排它锁(for database)explicit transaction 显式事务

(for database)page 9 form 窗体

formal parameter 形参 forward declaration 前置声明 forward-only 只向前 的 forward-only cursor 只向前游标(for database)fragmentation 碎片(for d

atabase)framework 框架 full specialization 完全特化 function 函数 functio

n call operator(即 operator())函数调用操作符 function object 函数对象 f

unction overloaded resolution 函数重载决议 functionality functor 仿函数 GA C(global assembly cache)全局装配件缓存、全局配件缓存 GC(Garbage collect

ion)game 游戏 generate 生成 generic 泛化的、一般化的、通用的 generic algo

rithm 通用算法 genericity 泛型 getter(相对于 setter)取值函数 global 全局的

global object 全局对象 global scope resolution operator 全局范围解析操作符

grant group group box GUI 授权(for database)组、群 分组框 图形界面 握手

granularity 粒度 垃圾回收(机制)、垃圾收集(机制)功能 function template 函

数模板

GUID(Globally Unique Identifier)全球唯一标识符 hand shaking handle

handler 句柄 处理器

hard-coded 硬编码的 hard-copy 截屏图 hard disk 硬盘 hardware 硬件 has

h table 散列表、哈希表 header file 头文件 heap 堆 help file 帮助文件 hiera

rchy 层次结构、继承体系

hierarchical data 阶层式数据、层次式数据 hook 钩子 热键 Host(applica

tion)宿主(应用程序)hot key hyperlink 超链接 HTML(HyperText Markup Langua

ge)超文本标记语言 HTTP pipeline HTTP 管道 HTTP(HyperText Transfer Protoc

ol)超文本传输协议 icon 图标 接口定义语言 IDE(Integrated Development Envi

ronment)集成开发环境 IDL(Interface Definition Language)identifier 标识符

idle time 空闲时间 if and only if 当且仅当 IL(Intermediate Language)中间

语言、中介语言 image 图象 IME 输入法 直接基类 直接派生类 immediate base im

mediate derived immediate updating 即时更新(for database)implicit transaction 隐式事

务(for database)incremental update 增量更新(for database)index impleme

nt implicit import infinite loop information infrastructure inheritance in

line initialization initialize inner join instance instantiated instantiat ion integrate 索引(for database)实现 隐式 导入 无限循环 信息 基础设施 继

承、继承机制 内联 初始化 初始化 内联接(for database)实例 具现化、实体化(常应用于 template)具现体、具现化实体(常应用于 template)集成、整合 implementation 实现、实现品

increment operator 增加操作符 infinite recursive 无限递归

inline expansion 内联展开 initialization list 初始化列表、初始值列表 in-place active 现场激活 integrity 完整性、一致性

integrity constraint 完整性约束(for database)interprocess communica

tion(IPC)进程间通讯(IPC)interacts 交互 interface 接口 for GUI 界面 inter

operability 互操作性、互操作能力 interpreter invariants invoke iterate 解释

器 不变性 调用 迭代 introspection 自省

isolation level 隔离级别(for database)iterative 反复的、迭代的 iter

ator 迭代器 iteration 迭代(回圈每次轮回称为一个 iteration)item key laser

项、条款、项目 键(for database)键列(for database)激光 JIT compilation

JIT 编译 即时编译 key column late binding 迟绑定 left outer join 左向外联接(for database)level l

ibrary lifetime link linkage linker list 阶、层例 库 生命期、寿命 连接、链

接 连接、链接 连接器、链接器 high level 高阶、高层

literal constant 字面常数 列表、表、链表 list box 列表框 livelock 活锁

page 10(for database)load 装载、加载 load balancing 负载平衡 loader 装载器、载入

器 local 局部的 local object lock 锁 log 日志 login 登录 login security mo

de 登录安全模式(for database)lookup table 查找表(for database)局部对象

loop lvalue macro maintain 循环 左值 机器码、机器代码 宏 维护

loose coupling 松散耦合 machine code managed code 受控代码、托管代码 Managed Extensions 受控扩充件、托管扩 展 managed object 受控对象、托管对象 mangled name manifest 清单 manipulato

r 操纵器(iostream 预先定义的一种东西)many-to-many relationship 多对多关系

(for database)many-to-one relationship 多对一关系(for database)marshal

列集 member 成员 成员取用运算子(有 dot 和 arrow 两种)成员函数 member acc

ess operator member function member initialization list 成员初始值列表 memberwise 以 member 为单元

⋯、members 逐一⋯memberwise copy memory menu 内存 菜单 memory leak 内存泄

漏 message 消息 message based 基于消息的 message loop 消息环 message queui

ng 消息队列 metadata 元数据 metaprogramming 元编程 method 方法 micro 微 mi

ddleware 中间件 middle tier 中间层 modeling 建模 modeling language 建模语言

modifier 修饰字、修饰符 modem module mouse mutex 调制解调器 模块 鼠标 互斥

元、互斥体 多维 OLAP(MOLAP)(for database)most derived class 最底层的派生类 mutable 可变的 multidimensional OLA

P(MOLAP)multithreaded server application 多线程服务器应用程序 multiuser multi

-tasking multi-thread 多用户 多任务 多线程 命名参数

multicast delegate 组播委托、多点委托 named parameter namespace nativ

e named pipe 命名管道 名字空间、命名空间 原生的、本地的

native code 本地码、本机码 Native Image Generator(NGEN)本地映像生成器

nested class 嵌套类 nested query 嵌套查询(for database)nested table 嵌套

表(for database)network 网络 network card 网卡 nondependent name object

object file 对象 目标文件 object based 基于对象的 object model 对象模型 ob

ject oriented 面向对象的 object pooling 对象池化 ODBC data source ODBC 数据

源(for database)ODBC driver ODBC 驱动程序(for database)OLE 自动化对象

(for database)OLE 自动化服务器(for database)ODR(one-definition rule)OLE Automation objects OLE Automation serve r OLE DB consumer OLE DB 使用者(for database)OLE DB for OLAP 用于 OLA

P 的 OLE DB(for database)OLE DB provider OLE DB 提供者(for database)on

e-to-many relationship 一对多关系(for database)one-to-one relationship 一

对一关系(for database)online analytical processing(OLAP)online redo lo

g online transaction processing(OLTP)Open Data Services(ODS)operand 操

作数 联机分析处理(OLAP)(for database)联机事务处理(OLTP)(for database)联

机重做日志(for database)开放式数据服务(ODS)(for database)Open Database Connectivity(ODBC)开放式数据库连接(ODBC)(for databas

e)operating system(OS)操作系统 operation 操作 operator option 操作符、运

算符 选项

optimizer 优化器

outer join 外联接(for database)overflow overhead overload 上限溢位(相对于 underflow)额外开销 重载 重载决议 重载的函数 overload resolution overloaded function override package palette para

llel overloaded operator 被重载的操作符 覆写、重载、重新定义 包 调色板 并行

page 11 packaging 打包

parameter 参数、形式参数、形参 parameter list 参数列表 parameterize p

arent class parentheses parse parser part 解析 解析器 零件、部件 传址(函式

引数的传递方式)(非正式用语)参数化 父类 圆括弧、圆括号

partial specialization 局部特化 pass by address pass by reference 传地

址、按引用传递 pass by value 按值传递 pattern 模式 可移植可执行文件 PDA(p

ersonal digital assistant)个人数字助理 PE(Portable Executable)file perfo

rmance persistence pixel 像素 placement delete placement new placeholder 占

位符 platform平台 性能 持久性

PInvoke(platform invoke service)平台调用服务

POD(plain old data(type))POI(point of instantiation)pointer 指针

poll 轮询 pooling 池化 polymorphism 多态 pop up port postfix 弹出式 端口

后缀

precedence 优先序(通常用于运算子的优先执行次序)prefix 前缀 预处理器

主表(for database)preprocessor primary table primary key(PK)主键(PK)(for database)primary template 原始模板 pri

mitive type 原始类型 print printer 打印 打印机

procedure 过程 procedural 过程式的、过程化的 process profile profiler

program 进程 评测 效能(性能)评测器 程序

programmer 程序员 programming 编程、程序设计 progress bar 进度指示器

project property protocol 项目、工程 属性 协议

pseudo code 伪码 qualified 经过资格修饰(例如加上 scope 运算子)qualif

ied name qualifier 修饰符 quality queue radian radio button raise range ra

nk raw 质量 队列 弧度 单选按钮 引发(常用来表示发出一个 exception)范围、区

间 等级 未经处理的

race condition 竞争条件(多线程环境常用语)random number 随机数

readOnly 只读 record 记录(for database)recordset 记录集(for databa

se recursive 递归 re-direction 重定向 refactoring refer 重构 引用、参考 reference 引用、参考 reference counting 引用计数

referential integrity(RI)引用完整性(RI)(for database)register refl

ection 寄存器 反射

refresh data 刷新数据(for database)regular expression 正则表达式 re

lational database 关系数据库 remote represent resolve resolution result se

t return return type return value revoke robust robustness roll back routi

ne row row lock rowset 远程 表述,表现 解析、决议 解析过程 结果集(for dat abase)返回 返回类型 返回值 remote request 远程请求

retrieve data 检索数据

right outer join 右向外联接(for database)撤销 健壮 健壮性 回滚(for

database)例程 行(for database)行锁(for database)行集(for database)roll forward 前滚(for database)RPC(remote procedure call)RPC(远程过程调用)runtime 执行期、运行期、执行时、运行时 rvalue 右值 save 保存 savepoint 保存点(for database)SAX(Simple API for XML)scalable 可伸缩的、可扩展的 schedule 调度 scheduler 调

度程序 schema scope 模式、纲目结构 作用域、生存空间 scroll bar 滚动条 scop

e operator 生存空间操作符 scope resolution operator 生存空间解析操作符 scr

een 屏幕 SDK(Software Development Kit)软件开发包 sealed class 密封类 sear

ch 查找

semantics 语义 semaphore 信号量 sequential container 序列式容器 serve

r serial 服务器、服务端 串行

serialization/serialize 序列化 server cursor 服务端游标、服务器游标(for database)session setter sibling signature slider 滑块 slot 槽 smart p

page 12 ointer 智能指针 SMTP(Simple Mail Transfer Protocol)snapshot snapshot 截屏

图 快照(for database)简单邮件传输协议 会话(for database)设值函数 同级

签名

shared lock 共享锁(for database)side effect 副作用 single-threaded

单线程

specialization 特化 specification 规范、规格 splitter software source

code 切分窗口 简单对象访问协议 软件 源码、源代码 SOAP(simple object acce

ss protocol)SQL(Structured Query Language)结构化查询语言(for database)stack 栈、堆栈 stack unwinding 叠辗转开解(此词用于 exception 主题)standard librar y 标准库 standard template library 标准模板库 stateless 无状态的 statement

语句、声明 static cursor 静态游标(for database)static SQL statements 静

态 SQL 语句(for database)stored procedure 存储过程(for database)status

bar 状态条 stream string stub 流 字符串 存根

subobject 子对象 subquery 子查询(for database)subroutine 子例程 sub

script operator 下标操作符 subset 子集

subtype 子类型 support 支持 suspend 挂起 symbol syntax 记号 语法 系统

数据库(for database)系统表(for database)system databases system tables table 表(for database)table lock 表锁(for database)table-level constraint 表级约束(for d

atabase)tape backup 磁带备份(for database)target 标的,目标 task switch

工作切换 TCP(Transport Control Protocol)template template-id template ar

gument deduction template parameter 模板参数 模板参数推导 template explici

t specialization 模板显式特化 模板 传输控制协议

template template parameter temporary object 临时对象 temporary table

临时表(for database)text 文本 text file 文本文件 thin client 瘦客户端 t

hird-party 第三方 thread 线程 thread-safe 线程安全的 throw 抛出、引发(常指

发出一个 exception)token 符号、标记、令牌(看场合)trace 跟踪 transactio

n 事务(for database)transaction log 事务日志(for database)transaction

rollback 事务回滚(for database)transactional replication 事务复制(for d

atabase)translation unit 翻译单元 traverse 遍历 trigger 触发器(for datab

ase)two-phase commit 两阶段提交(for database)tuple two-phase lookup 两阶

段查找 type 类型 UDDI(Universary Description, Discovery and Integration)统 一描述、查询与集成

UML(unified modeling language)统一建模语言 unary function 单参函数 u

nary operator 一元操作符 unboxing underflow Union query unique index unmar

shal unqualified 拆箱、拆箱转换 下限溢位(相对于 overflow)联合查询(for da

tabase)唯一索引(for database)散集 未经限定的、未经修饰的 统一资源定位器

UNIQUE constraints UNIQUE 约束(for database)unmanaged code 非受控代

码、非托管代码

URI(Uniform Resource identifier)统一资源标识符 URL(Uniform Resourc

e Locator)user 用户 user interface 用户界面 value types 值类型 variable 变

量 vector viable video view 向量(一种容器,有点类似 array)可行的 视频 视图

VEE(Virtual Execution Engine)虚拟执行引擎 vendor 厂商 view 视图(for

database)虚拟机 虚拟内存 web 服务 WHERE 子句(for database)通配符搜索(for database)窗口 窗口函数 窗口过程 virtual function 虚函数 virtual machi

ne virtual memory vowel Web Services WHERE clause wildcard search window w

page 13 indow function window procedure wizard 向导 word 单词 包装、包装器 word pr

ocessor 字处理器 wrapper write enable 写启用(for database)write-ahead lo

g 预写日志(for database)write-only 只写 WSDL(Web Service Description La

nguage)Web Service 描述语言

元音字母

wildcard characters 通配符字符(for database)Windows authentication Windows 身份验证

XML Message Interface(XMI)XSD(XML Schema Definition)XML 消息接口 XML 模式定义语言

XML(eXtensible Markup Language)可扩展标记语言 XSL(eXtensible Style

sheet Language)可扩展样式表语言 XSLT(eXtensible Stylesheet Language Tran

sformation)可扩展样式表语言转换 xxx based 基于 xxx 的 xxx oriented 面向 xx

x page 14__

下载C语言编程自我总结word格式文档
下载C语言编程自我总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    从语言进步到编程

    从语言进步到编程 1. 语言和编程本是两码事 分不清语言和编程的人,估计很能学得好编程。 1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级......

    Java编程语言面试题

    西安英泰移动通信学院S2级Java编程语言测试题 1 Java编程语言面试题 一、简答题 1、 简述用Java编程语言编写、编译、解释和执行过程。 2、 简述在Java JDK中,java.exe程序的......

    T-SQL语言编程(5篇材料)

    南京信息工程大学实验(实习)报告 实验日期12.13得分指导教师方忠进系计算机专业软件工程年级2011班次3姓名张渊学号20112344931 一.实验目的 1. 掌握流控制语句的基本语法 2.......

    C语言经典编程题(推荐)

    C语言经典编程题 题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。 [cpp] view plain copy print? 1. 2. 3. 4. 5. 6. 7. 8. 9.......

    经典C语言编程100例

    经典C语言编程100例(1-30) 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。......

    vb语言编程教案

    课题:vb语言编程概述 课 时:2课时 授课时间:2011.09.05 课堂类型:讲授 教学目的:1.熟悉VB界面和VB集成开发环境; 2.在实际操作中学会编简单的VB应用程序; 教学要求:1. 掌握VB基础知......

    c语言编程练习

    本实验所有题目均要求使用指针。 1.写一函数,将一个3*3的整型矩阵转置。2.将两个按升序排列的数组合并成一个数组,并使合并后的数组也按升序排列。 要求: (1)输入两个数组(按升序);......

    C语言编程100题

    经典C语言程序设计100例 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组......