注意:本经验采用的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数据库 » 软件代码注释 如何快速注释程序代码
用户37979420
