- 計算機程式設計教程
- 計算機程式設計 - 首頁
- 計算機程式設計 - 概述
- 計算機程式設計 - 基礎
- 程式設計 - 環境
- 程式設計 - 基本語法
- 程式設計 - 資料型別
- 計算機程式設計 - 變數
- 計算機程式設計 - 關鍵字
- 計算機程式設計 - 運算子
- 計算機程式設計 - 決策
- 計算機程式設計 - 迴圈
- 計算機程式設計 - 數字
- 程式設計 - 字元
- 計算機程式設計 - 陣列
- 計算機程式設計 - 字串
- 計算機程式設計 - 函式
- 計算機程式設計 - 檔案I/O
- 計算機程式設計 - 總結
- 計算機程式設計資源
- 程式設計 - 快速指南
- 計算機程式設計 - 資源
- 程式設計 - 討論
決策語句
決策對於計算機程式設計至關重要。在許多情況下,您將獲得兩個或多個選項,您必須根據給定的條件選擇一個選項。例如,我們想根據學生獲得的分數列印關於學生的評語。情況如下:
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
現在,問題是如何編寫程式程式碼來處理這種情況。幾乎所有程式語言都提供條件語句,這些語句的工作原理基於以下流程圖:
讓我們使用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 */
}
上述語法可以用流程圖表示,如下所示:
當我們必須從兩個選項中做出決定時,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…if或else。
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主體。
上述語法可以用流程圖表示,如下所示:
現在,讓我們考慮另一個示例,我們希望為給定的數字編寫等效的英文單詞。然後,可以將其編碼如下:
#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編寫的等效程式,它也支援if、if...else、if...elseif...else和switch語句。
您可以嘗試執行以下程式以檢視輸出,該輸出必須與上述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提供了if、if...else、if...elif...else和switch語句。在這裡,您必須注意,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