2011-05-05 79 views
3

我的教授通常会问我的班级在给定的程序中有多少语句,但我无法确定他定义的语句。似乎if/else是一个语句,for循环是一个语句,不管其中是否有其他假设的语句。这个问题有没有治理规则,还是他对自己发明的定义?什么被认为是C++语句?

谢谢

+3

我从来没有见过任何人都担心给定程序中的语句数量。 – 2011-05-05 02:08:36

+0

是的,我知道,但我想他不够邪恶,只是在没有动机的情况下从我的平均数中删除积分。 – Sam 2011-05-05 02:13:23

+0

我想他想知道学生已经掌握了一个陈述开始和结束的地方。他的计数方法似乎是有效的(但不是唯一有效的计数方法)。 – 2011-05-05 02:16:40

回答

3

对于声明的精确definition

定义:语句的代码块做一些事情。赋值语句为变量赋值。 for语句执行循环。 在C,C++和C#语句可以使用大括号作为一个语句分组在一起

{ statement1; statement2; }

就计算报表而言,我认同其他人,没有多少意义。计算代码行(LOC)虽然实际上具有一定的价值,但有很多研究尝试将LOC的数量与开发人员的工作量相关联。你的老师有可能把你的陈述计算在内,并且把陈述想象成仅仅是一个LOC,但情况并非如此。

1

语句嵌套,即较小的语句可以连接到较大的语句,如复合语句。出于这个原因,“这个程序中有多少陈述”这个问题是不明确的。首先必须定义计数方法。没有它,“多少”这个问题就没有意义了。

+0

是的,这就是为什么我很困惑,哦。 – Sam 2011-05-05 02:14:16

0

在计算机编程语句 可以被认为是一个必要 编程语言的最小 独立的元素。程序是由一个或多个 语句的序列组成的 。一个声明将有 内部组件(例如, 表达式)。

More at Statement (Computer Science) at Wikipedia

+0

这是不正确的,因为您可以有块或复合语句,它们不是最小的独立元素。 – Hazok 2011-05-05 02:17:58

+0

@Zach:复合或块声明仍然是一个声明。 – 2011-05-05 02:31:00

+0

是的,这是我试图做的。正如您所描述的,复合语句或块语句不一定是命令式编程语言的最小独立元素。为了快速设计一个例子,你可以随意采取一系列的语句,在它们周围放置一些花括号,现在你有一个块语句,它不是最小的独立元素,但实际上可能是一个庞大而复杂的元素。 – Hazok 2011-05-17 21:05:07

0

这里是处理报表JS一样的语言解析功能:

static void do_statement(CsCompiler *c) 
{ 
    int tkn; 
    switch (tkn = CsToken(c)) { 

    case T_IF:   do_if(c);  break; 
    case T_WHILE:  do_while(c); break; 
    case T_WITH:  do_with(c);  break; 
    case T_DO:   do_dowhile(c); break; 
    case T_FOR:   do_for(c);  break; 
    case T_BREAK:  do_break(c); CsSaveToken(c,CsToken(c)); break; 
    case T_CONTINUE: do_continue(c); CsSaveToken(c,CsToken(c)); break; 
    case T_SWITCH:  do_switch(c); break; 
    case T_CASE:  /*do_case(c);*/ CsParseError(c,"'case' outside of switch"); break; 
    case T_DEFAULT:  /*do_default(c);*/ CsParseError(c,"'default' outside of switch"); break; 
    case T_RETURN:  do_return(c); break; 
    case T_DELETE:  do_delete(c); break; 
    case T_TRY:   do_try(c);  break; 
    case T_THROW:  do_throw(c); break; 
    case '{':   do_block(c, 0); break; 
    case ';':   ;    break; 
    default: 
     { 
     CsSaveToken(c,tkn); 
     do_expr(c); 
     break; 
     } 
    } 
} 

正如你看到它包括像forwhile也表达(由;分隔)