决策语句



决策对于计算机编程至关重要。在许多情况下,您将获得两个或多个选项,您必须根据给定的条件选择一个选项。例如,我们想根据学生获得的分数打印关于学生的评语。情况如下:

Assume given marks are x for a student:

If given marks are more than 95, then
Student is brilliant

If given marks are less than 30, then
Student is poor

If given marks are less than 95 and more than 30, then
Student is average

现在,问题是如何编写程序代码来处理这种情况。几乎所有编程语言都提供条件语句,这些语句的工作原理基于以下流程图:

Decision making statements in C

让我们使用if条件语句编写一个C程序,将上述情况转换为程序代码:

#include <stdio.h>

int main() {
   int x = 45;
   
   if( x > 95) {
	
      printf( "Student is brilliant\n");
   }
   if( x < 30) {
	
      printf( "Student is poor\n");
   }
   if( x < 95 && x > 30 ) {
	
      printf( "Student is average\n");
   }
}

执行上述程序时,会产生以下结果:

Student is average

上述程序使用了if条件语句。这里,第一个if语句检查给定条件,即变量x是否大于95,如果发现条件为真,则进入条件体执行给定的语句。这里我们只有一个printf()语句来打印关于学生的评语。

第二个if语句的工作方式类似。最后,执行第三个if语句,这里我们有两个条件:

  • 第一个条件是x > 95

  • 第二个条件是x < 30

计算机评估这两个给定的条件,然后使用二元运算符&&组合最终结果。如果最终结果为真,则执行条件语句,否则不执行任何语句。

本教程将为您提供关于各种形式if语句的基本概念,以及C编程语言中switch语句的介绍。不同的编程语言提供不同类型的决策语句,但基本概念与本教程中解释的相同。

if...else语句

if语句后面可以跟一个可选的else语句,当布尔表达式为假时执行该语句。C编程语言中if...else语句的语法如下:

if(boolean_expression) {
   
   /* Statement(s) will execute if the boolean expression is true */
} else {
  
  /* Statement(s) will execute if the boolean expression is false */
}

上述语法可以用流程图表示,如下所示:

C if...else statement

当我们必须从两个选项中做出决定时,if...else语句很有用。例如,如果学生的分数超过95分,则学生很优秀,否则无法编码这种情况,如下所示:

#include <stdio.h>

int main() {
   int x = 45;
   
   if( x > 95) {
	
      printf( "Student is brilliant\n");
   } else {
      printf( "Student is not brilliant\n");
   }
}

执行上述程序时,会产生以下结果:

Student is not brilliant

if...elseif...else语句

if语句后面可以跟一个可选的else if...else语句,这对于测试各种条件非常有用。

使用if, else if, else语句时,需要注意以下几点:

  • 一个if可以有零个或一个else,并且它必须出现在else if之后。

  • 一个if可以有零到多个else…if,并且它们必须出现在else之前。

  • 一旦else…if成功,就不会测试任何剩余的else…ifelse

C编程语言中if...else if...else语句的语法如下:

if(boolean_expression 1) {

   /* Executes when the boolean expression 1 is true */
}
else if( boolean_expression 2) {

   /* Executes when the boolean expression 2 is true */
}
else if( boolean_expression 3) {

   /* Executes when the boolean expression 3 is true */
} else {
   
   /* Executes when the none of the above condition is true */
}

现在,借助if...elseif...else语句,可以将第一个程序编码如下:

#include <stdio.h>

int main() {
   int x = 45;
   
   if( x > 95) {
      printf( "Student is brilliant\n");
   } 
   else if( x < 30) {
      printf( "Student is poor\n");
   } 
   else if( x < 95 && x > 30 ) {
      printf( "Student is average\n");
   }
}

执行上述程序时,会产生以下结果:

Student is average

switch语句

switch语句是if语句的替代方案,它允许测试变量与值列表的相等性。每个值称为一个case,并且正在切换的变量会针对每个switch case进行检查。它具有以下语法:

switch(expression){
   case ONE :
      statement(s);
      break;
   case TWO:
      statement(s);
      break;
   ......
   
   default :
      statement(s);
}

switch语句中使用的表达式必须给出整数值,该值将与给出的不同情况进行比较。在表达式的值与case值匹配的任何位置,都将执行该case的主体,最后使用break语句终止switch。如果没有提供break语句,则计算机将继续执行匹配case下方可用的其他语句。如果没有任何case匹配,则执行default case主体。

上述语法可以用流程图表示,如下所示:

Switch Statement in C

现在,让我们考虑另一个示例,我们希望为给定的数字编写等效的英文单词。然后,可以将其编码如下:

#include <stdio.h>

int main() {
   int x = 2;
   
   switch( x ){
      case 1 :
         printf( "One\n");
         break;
      case 2 :
         printf( "Two\n");
         break;
      case 3 :
         printf( "Three\n");
         break;
      case 4 :
         printf( "Four\n");
         break;
      default :
         printf( "None of the above...\n");
   }
}

执行上述程序时,会产生以下结果:

Two

Java中的决策

以下是使用Java编写的等效程序,它也支持ifif...elseif...elseif...elseswitch语句。

您可以尝试执行以下程序以查看输出,该输出必须与上述C示例生成的相同结果。

public class DemoJava {
   public static void main(String []args) {
      int x = 45;
   
      if( x > 95) {
         System.out.println( "Student is brilliant");
      } 
      else if( x < 30) {
         System.out.println( "Student is poor");
      } 
      else if( x < 95 && x > 30 ) {
         System.out.println( "Student is average");
      }
   }
}

执行上述程序时,会产生以下结果:

Student is average

Python中的决策

以下是使用Python编写的等效程序。Python提供了ifif...elseif...elif...elseswitch语句。在这里,您必须注意,Python不使用花括号来表示条件体,而是使用语句的缩进来标识块的主体。

您可以尝试执行以下程序以查看输出:

x = 45

if x > 95:
   print "Student is brilliant"
elif x < 30:
   print "Student is poor"
elif x < 95 and x > 30:
   print "Student is average"

print "The end"

执行上述程序时,会产生以下结果:

Student is average
The end
广告