用户登录
用户注册

分享至

软件代码注释 如何快速注释程序代码

  • 作者: 用户37979420
  • 来源: 51数据库
  • 2020-04-21

注意:本经验采用的Eclipse版本为

Eclipse Java EE IDE for Web Developers.

Version: Luna Service Release 1 (4.4.1)

Build id: 20140925-1800

打开您要编辑的java代码页面

选中要注释的代码段,然后点击鼠标右键选择【Source】

然后选择【Add Block Comment】选项

此时查看代码发现,代码已经注释

选中注释的代码段,然后选择【Source】选项下的【Remove Block Comment】就可以取消注释。

注意:可以使用快捷键,Ctrl+Shift+/添加注释,也可以用Ctrl+Shift+\取消注释

怎么给代码加注释?

C/C++/C#

行注释://这里是注释

块注释:/*这里是注释*/

Java

行注释://这里是注释

块注释:/*这里是注释*/

HTML

块注释:<!--这里是注释-->

CSS

块注释:/*这里是注释*/

JavaScript

行注释://这里是注释

块注释:/*这里是注释*/

XML

块注释:<!--这里是注释-->

Python

行注释:#这里是注释

块注释:'''这里是注释'''

SQL Server/Oracle PLSQL

行注释:--这里是注释

块注释:/*这里是注释*/

MySQL

行注释:--这里是注释

行注释:#这里是注释

块注释:/*这里是注释*/

VB

行注释:'这里是注释

汇编语言

行注释:;这里是注释

perl

行注释:# 这是一个单行注释

块注释:

=pod

这里是注释

=cut

Matlab

行注释:%这里是注释

块注释:%%这里是注释%%

块注释:%{这里是注释%}

R语言

行注释:#这里是注释

块注释:if(false){这里是注释}

扩展资料:

关于高级语言中的注释:

1、注释是代码的“提示”或“解释”而非文档;注释主要用于解释代码复杂度;注释应准确、易懂(无二义性)、简洁;程序中有效注释量必须在20%以上。

说明:代码清楚可以自注释的不需加注释,过分详细的注释容易使人厌烦,切记不要自以为高深让别人看不懂而不加注释。

2、注释的目的:为了便于代码的维护、解释代码的功能和方法等方便读者阅读,以及防止不必要的重复信息。

3、给代码添加注释绝对是好习惯,最好边写代码边注释

如何快速注释程序代码

第1步:在Eclipse中拖动鼠标,选中需要...

1

第2步:按住Ctrl+/快捷键,如图所示。

2

第3步:会发现所选代码被“//”注释掉...

3

第1步:在Eclipse中拖动鼠标,选中需要...

4

第2步:按住Ctrl+Shift+C快捷键,如图...

5

第3步:会发现所选代码被“//”注释掉...

6

第1步:在Eclipse中拖动鼠标,选中需要...

7

第2步:按住Ctrl+Shift+/快捷键,如图...

在一个优秀的软件开发项目中,代码注释量最好占多少?(百分比)

一个代码优秀的好最主要的是来自于注释,注释便于自己以后阅读也便于后续人员的阅读,最好养成写注释的好习惯,方法体内一行一句,方法块使用注释块

求注释一下这个程序代码,要详细一点的

输入一个数,判断是不是素数。

z=x/y,

z被取整了,如果x是5,y是2,那z就是2,

这样x肯定不等于y*z,那它就是素数,

如果x是6,y是2,那z就是3,

这样x就等于y*z,就不是素数

问题描述]读入一个C程序,统计程序中代码、注释

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define TRUE 1

#define FALSE 0

#define BOOL int

#define MAXSIZE 5000

#define COUNT 20 // 可以统计的最大的文件个数

#define LEN 20 // 文件名的最大长度

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

voidcheckfile(char *filename,int i);

voidanaly(char filename[COUNT][LEN],int n);

BOOLGetIn(int *n);

//函数属性结构

typedefstruct {

char filename[20]; //每一个函数的名字

int length; //每一个函数的长度

int pos; //每一个函数的位置

}Fun;

//统计结构的声明

typedefstruct {

int comments; //纯注释的个数

int comment; //混合注释个数

int blank; //空行的个数

Fun fun[MAXSIZE]; //函数的属性

int others; //除去函数中代码外其余的代码个数

int funcount; //函数的个数

}Analy;

//串的基本操作ADT

//检测是否为空串

BOOLStrEmpty(char *s)

{

if(s[0]=='\0')

return TRUE;

return FALSE;

}

//查看S1中是否有值为S2的子串,若有则返回第一个子串的位置,若无则返回-1;

intFind(char *s1,char *s2)

{

int i = 0,j = 0;

if(strlen(s1) < strlen(s2))

return -1;

while (s1[i]!='\0')

{

if(s1[i] == s2[j])

{

i++;

j++;

if(s2[j]=='\0')

return i-j;

continue;

}

i++;

j=0;

}

return -1;

}

//读取文件中的一行字符

voidHaveLine(FILE *fp,char *s)

{

while(!feof(fp))

{

*s = fgetc(fp);

if(*s=='\n'){ //若是一行的结尾则表示取完了一行

*s='\0';

return;

}

s++;

}

*s = '\0';

}

//忽略一行字符开头的空格和tab,返回截断后上的串指针

char*IgnoreB(char *s)

{

while (*s== ' ' || *s== ' ')

s++;

return s;

}

//判断一行字符是不是注释

intIsCom(char *s)

{

int posc,pos1,pos2;

s= IgnoreB(s);

posc = Find(s,"//");

if(posc == 0)//此行仅有注释,无代码;

return 1;

if(posc == -1)

return 0;

pos1 = Find(s,"\"");

pos2 =Find(&s[pos1+1],"\"");

if(posc > pos1 && posc < pos2)

return 0;

return 2;

}

//判断一行字符是不是空白

BOOLIsBlank(char *s)

{

s= IgnoreB(s);

if(*s== '\0')

return TRUE;

return FALSE;

}

intIsFunB(char *s)

{

int i,j,pos,pos2;

//有分号,if while for的不是函数开头

if(Find(s,";") != -1 ||Find(s,"if") != -1 || Find(s,"for") != -1 ||Find(s,"while") != -1||Find(s,"switch") != -1)

return FALSE;

//没有小括号的不是函数开头

if((pos = Find(s,"(")) == -1)

return FALSE;

s = IgnoreB(s);

i = Find(s," ");

j = Find(s," ");

if (i != -1 && j != -1)

i = i > j ? j : i;

else if (i == -1)

i = j;

else if (1 == -1 && j == -1)

return FALSE;

if (i > pos)

return FALSE;

s = &s[i];

s = IgnoreB(s);

pos2 = Find(s,"(");

if(*s == '\0' || *s == '(' ||pos2 > pos)

return FALSE;

return TRUE;

}

voidprintR(int aver ,int comc,int blanks )

{

//按代码级别判定标准输出分析结果

int i;

char Grade[4][15] = {"A:Excellent","B: Good","C: just So-So","D:Bad"};//定义四个级别段

//判定代码的级别

if (aver <= 15 && aver >=10)

i = 0;

else if((aver <=20 && aver >=16) || aver <= 9 && aver >= 8)

i = 1;

else if((aver <=7 && aver >=5) || aver <= 24 && aver >=21)

i = 2;

else if ((aver <5) || (aver > 24))

i = 3;

printf(" Grade %s routine code style\n",Grade[i]);

//判定注释的级别

if (comc<= 25 && comc >= 15)

i = 0;

else if((comc <=14 && comc >=10) || comc <= 30 && comc >=26)

i = 1;

else if((comc <=9 && comc >=5) || comc <= 35 && comc >=31)

i = 2;

else if((comc <5) || (comc > 35))

i = 3;

printf(" Grade %s routine commenting style\n",Grade[i]);

//判定空行的级别

if (blanks <= 25 && blanks >=15)

i = 0;

else if((blanks <=14 && blanks>= 10) || blanks <= 30 && blanks >=26)

i = 1;

else if((blanks <=9 && blanks>= 5) || blanks <= 35 && blanks >=31)

i = 2;

else if((blanks <5) || (blanks > 35))

i = 3;

printf(" Grade %s white spacestyle\n",Grade[i]);

}

//打印输出结果

voidprint(Analy *An)

{

int sum = 0,funcode = 0;

int i, comc , blanks, aver ,code;

for(i = 0;i < An->funcount ;i++)//求函数的代码总数

funcode += An->fun[i].length;

//求所有的代码总数

sum += An->blank;

sum += An->comments;

sum += An->comment;

sum += An->others;

sum += funcode;

if(sum == 0)//防止除数sum为0

sum = 1;

if(An->funcount == 0)//防止除数m为0

aver = 0;

else

aver = funcode/An->funcount;

comc = (An->comments +An->comment)*100/sum;

blanks = ((An->blank)*100)/sum;

code = 100 - comc - blanks; //((funcode + An->others)*100)/sum;

printf(" 程序源代码分析结果如下所示\n\n");

printf(" 代码行数: %d\n",sum -An->blank - An->comment - An->comments);

printf(" 注释行数: %d\n",An->comments +An->comment);

printf(" 空行数: %d\n",An->blank);

printf(" 代码 注释 空行\n");

printf(" ***** ****** ******\n");

printf(" ***** ****** ******\n");

printf(" %d%% %d%% %d%%\n",code,comc,blanks);

printf(" The program includes %d functions\n",An->funcount);

printf(" The average length of section of function is %d\n",aver);

printf("\n");

//按代码级别判定标准输出分析结果

printR(aver,comc,blanks);

}

voidcheckfile(char *filename,int i)

{

FILE *fp;

while((fp = fopen(filename,"r"))== NULL)

{

printf("对不起!文件不存在%s\n",filename);

printf("\n请重新输入第%d个源文件: ",i+1);

scanf("%s",filename);

}

}

BOOLGetIn(int *n)//规范输入的数据,只能为数字

{

char c;

*n = 0;

fflush(stdin);

c = getchar();//当输入一串数据并按回车后,getchar()取出缓存队列中的第一个字符

while(c != '\n'){

if(c == '0' && n == 0)

printf("输入有误!请重新输入....\n");

if(c >= '0' && c <= '9')

*n = (*n) * 10 +c - 48;

else{

printf("输入有误!请重新输入....\n");

fflush(stdin);//清空(刷新)缓存里的内容,以防被下次getchar()取用

return FALSE;

}

c = getchar();

}

return TRUE;

}

voidanaly(char filename[COUNT][LEN],int n)

{

FILE *fp;//分析源文件指针

FILE *fpp;//日志文件指针

Analy An;//程序统计结构体

char s[200];//存储每行的文件

BOOL begin = 0,start = 0;//设置函数开始标记

int i,j = -1,pos = 0;//函数的位置 长度信息

//c检测函数内大括号的匹配,comtype是注释的类型

int c=0,comtype;

An.blank = 0;

An.comments = 0;

An.comment = 0;

An.others = 0;

An.funcount = 0;

if((fpp =fopen("log.txt","w")) == NULL)//建立日志文件

printf("cannot open the file%s\n");

for (i = 0 ;i < n; i++)//遍历所有的文件

{

if((fp =fopen(filename[i],"r")) == NULL)

{

printf("cannot open the file%s\n",filename[i]); //输出filename[i]

getchar();

exit(0);

}

pos = 0; //函数在新一个文件中的位置初始化

while (!feof(fp))

{

HaveLine(fp,s); //从文件中读取一行数据

pos++; //每个函数在文件中开始的位置

//分类统计文件中的代码个数

comtype = IsCom(s);

if (comtype ==1)

{

An.comment++;

continue;

}

if (comtype == 2)

An.comments++;

if (IsFunB(s))

{

fprintf(fpp,"%s\n",s);//提取每个函数的名字写入到文件

j++; //j为函数的个数-1;

c = 0;//大括号个数初始化为0

begin = TRUE;

strcpy(An.fun[j].filename,filename[i]);//记录函数在哪个文件中

An.fun[j].pos = pos;

An.fun[j].length = 1;

}

else if(IsBlank(s))

An.blank++;

else if(begin){

An.fun[j].length++;

if (Find(s,"{") !=-1) //检测是否进入到了函数体内

{

c++;

start = TRUE;

}

if (Find(s,"}") != -1)//检测是否一个函数的结束

c--;

if (c==0 && start)

{

begin = FALSE;

start = FALSE;

}

}

else

An.others++;

}

fclose(fp);//关闭分析文件

}

fclose(fpp);//关闭日志文件

An.funcount= j+1; //把函数的个数保存

print(&An); //打印分析结果

}

voidmain()

{

int n,i;

char c;

char filename[COUNT][LEN];

printf("\t-------------------------------------------------------------\n");

printf("\t 程序源代码分析软件 BY 沈航电子信息工程学院--王盼 \n");

printf("\t--------------------------------------------------------------\n");

while(1){

n=0;

printf("\t\t\t**********程序分析*********\n");

printf("请输入您要分析的源文件的个数: ");

while(!GetIn(&n) || n <= 0){

printf("请输入您要分析的源文件个数:");

}

for(i = 0 ;i < n ;i++)

{

printf("\n请输入第%d个源文件: ",i+1);

scanf("%s",filename[i]);

checkfile(filename[i],i);

fflush(stdin);

}

analy(filename,n);

printf("\t********您需要继续使用本软件吗?Y/N***********\n");

c =getchar();

if(c == 'Y' || c == 'y')

continue;

break;

}

}

谁能给这段PLC程序代码加个注释 详细一点 我一点都不懂

这是一个PID调节的指令。并不一定所有的参数都用的。

输入参数

下表包含对SFB 41/FB 41 "CONT_C"输入参数的说明。

参数 数据类型 取值范围: 默认 描述

COM_RST BOOL FALSE PLETE RESTART

该块有一个在设置输入COM_RST时

自动执行的初始化程序。

MAN_ON BOOL TRUE MANUAL VALUE ON

如果设置输入"启用手动值",

将中断控制回路。手动值

作为操作值进行设置。

PVPER_ON BOOL FALSE PROCESS VARIABLE PERIPHERAL ON

如果从I/O读取过程变量,

必须将输入PV_PER连接到

I/O,且必须设置输入"启用过程变量

外设"。

P_SEL BOOL TRUE PROPORTIONAL ACTION ON

可以在PID算法中单独

激活或取消激活

PID操作。如果设置输入"启用比例作用",

将启用P操作。

I_SEL BOOL TRUE INTEGRAL ACTION ON

可以在PID算法中单独

激活或取消激活

PID操作。如果设置输入"启用积分作用",

将启用I操作。

INT_HOLD BOOL FALSE INTEGRAL ACTION HOLD

设置输入"积分作用暂停"

可以"冻结"积分器的输出。

I_ITL_ON BOOL FALSE INITIALIZATION OF THE INTEGRAL

ACTION ON

设置输入"积分作用初始化打开"可以

将积分器的输出

连接到输入

I_ITL_VAL。

D_SEL BOOL FALSE DERIVATIVE ACTION ON

可以在PID算法中单独

激活或取消激活

PID操作。如果设置输入"启用微分作用",

将启用D操作。

CYCLE TIME >= 1毫秒 T#1s SAMPLING TIME

块调用之间的时间必须为

常数。"采样时间"输入指定

块调用之间的时间。

SP_INT REAL -100.0至 +100.0

(%)或物理值 1) 0.0 INTERNAL SETPOINT

"内部设定值"输入用于指定

设定值。

PV_IN REAL -100.0至 +100.0

(%)或物理值

1) 0.0 PROCESS VARIABLE IN

可以在"过程变量输入"

输入设置初始化值,

也可以连接浮点格式的

外部过程变量。

PV_PER WORD W#16#0000 PROCESS VARIABLE PERIPHERAL

将I/O格式的过程变量连接到

"过程变量外设"输入处的控制器

。

MAN REAL -100.0至 +100.0

(%)或物理值

2) 0.0 MANUAL VALUE

"手动值"输入用于通过操作员界面功能

设置手动

值。

GAIN REAL 2.0 PROPORTIONAL GAIN

"比例值"输入指定

控制器增益。

TI TIME >= CYCLE T#20s RESET TIME

"复位时间"输入决定积分器

的时间响应。

TD TIME >= CYCLE T#10s DERIVATIVE TIME

"微分时间"输入决定微分单元

的时间响应。

TM_LAG TIME >= CYCLE/2 T#2s TIME LAG OF THE DERIVATIVE ACTION

D操作的算法包括

可以在"微分作用的时间延迟"输入

分配的时间延迟。

DEADB_W REAL >= 0.0 (%)

或物理值1) 0.0 DEAD BAND WIDTH

将死区应用于出错。"死区带宽"

输入决定死区的

大小。

LMN_HLM REAL LMN_LLM ...100.0 (%)

或物理值2) 100.0 MANIPULATED VALUE HIGH LIMIT

操作值始终受

上限和下限的限制。"操作值上限"输入

指定上

限。

LMN_LLM REAL -100.0... LMN_HLM (%)

或物理值2) 0.0 MANIPULATED VALUE LOW LIMIT

操作值始终受

上限和下限的限制。"操作值

下限"输入指定 下限。

PV_FAC REAL 1.0 PROCESS VARIABLE FACTOR

"过程变量因子"输入

与过程变量相乘。该输入

用于调整过程变量

范围。

PV_OFF REAL 0.0 PROCESS VARIABLE OFFSET

将"过程变量偏移量"输入

与过程变量相加。该输入用于

调整过程变量范围。

LMN_FAC REAL 1.0 MANIPULATED VALUE FACTOR

将"操作值因子"输入

与操作值相乘。该输入

用于调整操作值

范围。

LMN_OFF REAL 0.0 MANIPULATED VALUE OFFSET

将"操作值偏移量"与

操作值相加。该输入用于

调整操作值范围。

I_ITLVAL REAL -100.0至 +100.0

(%)或物理值2) 0.0 INITIALIZATION VALUE OF THE INTEGRAL ACTION

可以在

输入I_ITL_ON设置积分器的输出。将初始化值

应用于输入

"积分作用的初始化值"。

DISV REAL -100.0至 +100.0

(%)或物理值2) 0.0 DISTURBANCE VARIABLE

为进行前馈控制,

将干扰变量连接到

输入"干扰变量"。

1) 同一单元中设定值和过程变量分支中的参数

2) 同一单元中操作值分支中的参数

输出参数

下表包含对SFB 41/FB41 "CONT_C"输出参数的说明。

参数 数据类型 取值范围: 默认 描述

LMN REAL 0.0 MANIPULATED VALUE

有效的操作值为

"操作值"输出处

的浮点格式输出。

LMN_PER WORD W#16#0000 MANIPULATED VALUE PERIPHERAL

将I/O格式的操作值

连接到"操作值外设"

输出的控制器。

QLMN_HLM BOOL FALSE HIGH LIMIT OF MANIPULATED VALUE

REACHED

操作值始终受

上限和下限的限制。如果输出为"达到

操作值上限"

,则表明已

超过上限。

QLMN_LLM BOOL FALSE LOW LIMIT OF MANIPULATED VALUE

REACHED

操作值始终受

上限和下限的限制。如果输出为"达到

操作值下限"

,则表明已

超过下限。

LMN_P REAL 0.0 PROPORTIONAL COMPONENT

"比例组件"输出

包含操作变量的比例

组件。

LMN_I REAL 0.0 INTEGRAL COMPONENT

"积分组件"输出包含

操作值的积分

组件。

LMN_D REAL 0.0 DERIVATIVE COMPONENT

"微分组件"输出包含

操作值的微分

组件。

PV REAL 0.0 PROCESS VARIABLE

有效过程变量为

"过程变量"输出处的输出。

ER REAL 0.0 ERROR SIGNAL

有效出错为

"出错信号"输出处的输出。

VBA程序中可以实现代码注释功能的是什么?

VBA中代码注释的功能啊。。

就是在任意代码后面增加一个单引号',在同行单引号后面的所有内容即被视为注释。

给你一段代码看看:

Sub Macro1()

'VBA替换日期型数据

Dim cz As String, th As String

cz = "????-*-*" '查找内容

th = 41118 '替换内容

Dim c As Range '循环变量,代表选中区域内的每个单元格

'注意,先选择替换的区域,注意不要选择错了地方,再执行宏,否则后果比较严重

'下面的selection即表示被选择的区域

For Each c In Selection '循环选中区域的每一个单元格

If c.Text Like cz Then '如果单元格的显示形式和????-*-*格式一样

c.Value = th '替换

End If

Next

End Sub

转载请注明出处51数据库 » 软件代码注释 如何快速注释程序代码

软件
前端设计
程序设计
Java相关