【217】◀▶ IDL 控制語句說明


參考:Statements Routines —— 控制語句關鍵字


01   FOR 循環語句
02   FOREACH 循環語句
03   WHILE...DO 循環語句
04   IF...THEN...ELSE 選擇語句
05   CASE 只執行符合條件的一個語句塊。 
06   SWITCH
執行符合條件后面的所有語句塊
07   REPEAT...UNTIL 循環語句。 
08   BEGIN...END 用於顯示多條語句
09   CONTINUE  執行循環語句中的下一條循環。
10   BREAK 從循環、CASE 或 SWITCH 語句中跳出。

序號 名稱  

功能說明 & 語法 & 舉例

01 FOR  

循環語句。
-----------------------------------------------------------------------------------------------

 FOR variable = init, limit [, Increment] DO statement 
-----------------------------------------------------------------------------------------------
 FOR variable = init, limit [, Increment] DO BEGIN 
    statements                                     
 ENDFOR                                           
-----------------------------------------------------------------------------------------------
◈ init:開始的數
◈ limit:結束的數
◈ Increment:增量值
◈ statement(s):循環語句內容

 
IDL> FOR i = 1, 10, 4 DO PRINT, i
       1
       5
       9

  FOR i = 1, 10, 4 DO BEGIN
    PRINT, i
  ENDFOR
 02 FOREACH  

循環語句。
-----------------------------------------------------------------------------------------------
 
FOREACH Element, Variable [, Index] DO Statement 
-----------------------------------------------------------------------------------------------
 FOREACH Element, Variable [, Index] DO BEGIN 
    statements                                
 ENDFOREACH                  
-----------------------------------------------------------------------------------------------
? Element:每一個元素
◈ Variable:數組變量
◈ Index:元素的索引值
◈ Statement(s):循環語句內容

 
IDL> strs = ["alex", "bn", "lee"]
IDL> FOREACH e, strs, i DO PRINT, i, "--", e
                     0--alex
                     1--bn
                     2--lee

  strs = ["alex", "bn", "lee"]
  FOREACH e, strs, i DO BEGIN
    PRINT, i, "--", e
  ENDFOREACH
03 WHILE...DO  

  循環語句。
-----------------------------------------------------------------------------------------------
 WHILE
expression DO statement 
-----------------------------------------------------------------------------------------------
 WHILE
expression DO BEGIN 
    statements             
 ENDWHILE                  
-----------------------------------------------------------------------------------------------
◈ expression:判斷表達式
◈ statement(s):循環語句

 
IDL> i = 3
IDL> WHILE(i gt 0) DO PRINT, i--
       3
       2
       1

  i = 3
  WHILE(i gt 0) DO BEGIN
    PRINT, i--
  ENDWHILE
04 IF...THEN...ELSE  

選擇語句
-----------------------------------------------------------------------------------------------
 IF
expression THEN statement 
-----------------------------------------------------------------------------------------------
 IF
expression THEN statement ELSE statement 

-----------------------------------------------------------------------------------------------
 IF
expression THEN BEGIN 
   statements             
 ENDIF                    
-----------------------------------------------------------------------------------------------
 IF
expression THEN BEGIN 
   statements             
 ENDIF ELSE BEGIN         
   statements             
 ENDELSE                  

-----------------------------------------------------------------------------------------------
◈ expression:判斷表達式

◈ statement(s):語句內容

 
IDL> A = 2
IDL> B = 3
IDL> IF(A EQ 2) AND (B EQ 3) THEN PRINT, 'A = ', A, STRING(13B), 'B = ', B
A =        2
B =        3

IDL> A = 2
IDL> IF(A EQ 2) THEN PRINT, 'A = ', A ELSE PRINT, 'A ≠ ', A
A =        2

  A = 2
  B = 3
  IF(A EQ 2) AND (B EQ 3) THEN BEGIN
    PRINT, 'A = ', A
    PRINT, 'B = ', B
  ENDIF

  A = 2
  IF(A EQ 2) THEN BEGIN
    PRINT, 'A = ', A
  ENDIF ELSE BEGIN
    PRINT, 'A ≠ ', A
  ENDELSE
05 CASE  

只執行符合條件的一個語句塊。(多條語句需要使用 BEGIN...END)
------------------------------------------------------------
 CASE expression OF           
     expression: statement(s) 
     ...                      
     expression: statement(s) 
 ENDCASE                      
------------------------------------------------------------
 CASE
expression OF           
     expression: statement(s) 
     ...                      
     expression: statement(s) 
   ELSE: satement(s)          
 ENDCASE                      
------------------------------------------------------------
 CASE
expression OF           
     expression: statement(s) 
     ...                      
     expression: statement(s) 
   ELSE: BEGIN                
     satement(s)              
   END                        
 ENDCASE                      
------------------------------------------------------------
◈ expression:判斷語句
◈ statement(s):執行語句

 
  x=1
  CASE x OF
     1: PRINT, 'one'
     2: PRINT, 'two'
  ENDCASE

IDL Prints:
one

  x=2
  CASE x OF
     1: PRINT, 'one'
     2: PRINT, 'two'
     ELSE: PRINT, 'You entered: ', x
  ENDCASE

IDL Prints:
two

  x=3
  CASE x OF
     1: PRINT, 'one'
     2: PRINT, 'two'
     ELSE: BEGIN
        PRINT, 'You entered: ', x
        PRINT, 'Please enter a value between 1 and 2'
     END
  ENDCASE

IDL Prints:
You entered: 3
Please enter a value between 1 and 2
06
SWITCH
 

執行符合條件后面的所有語句塊。       
-----------------------------------------------------------------------------------------------
 SWITCH
expression OF         
     expression: statement(s) 
     ...                      
     expression: statement(s) 
 ENDSWITCH                    
-----------------------------------------------------------------------------------------------
 
SWITCH expression OF         
     expression: statement(s) 
     ...                      
     expression: statement(s) 
   ELSE: satement(s)          
 ENDSWITCH                    

-----------------------------------------------------------------------------------------------
 SWITCH
expression
OF         
     expression: statement(s) 
     ...                      
     expression: statement(s) 
   ELSE: BEGIN                
     satement(s)              
   END                               
 ENDSWITCH                   

-----------------------------------------------------------------------------------------------
◈ expression:判斷語句
◈ statement(s):執行語句

 
  x=1
  SWITCH x OF
     1: PRINT, 'one'
     2: PRINT, 'two'
  ENDSWITCH

IDL Prints:
one
two

  x=2
  SWITCH x OF
     1: PRINT, 'one'
     2: PRINT, 'two'
     ELSE: PRINT, 'You entered: ', x
  ENDSWITCH

IDL Prints:
two
You entered:        2

  x=2
  SWITCH x OF
     1: PRINT, 'one'
     2: PRINT, 'two'
     ELSE: BEGIN
        PRINT, 'You entered: ', x
        PRINT, 'Please enter a value between 1 and 2'
     END
  ENDSWITCH

IDL Prints:
two
You entered:        2
Please enter a value between 1 and 2
07 REPEAT...UNTIL  

循環語句(與 WHILE...DO 語句類似)
-----------------------------------------------------------------------------------------------
REPEAT statement UNTIL expression
-----------------------------------------------------------------------------------------------
REPEAT BEGIN
   statements
ENDREP UNTIL expression
-----------------------------------------------------------------------------------------------
◈ statement(s):執行語句
◈ expression:判斷語句

 
IDL> i = 3
IDL> REPEAT PRINT, i-- UNTIL(i lt 0)
       3
       2
       1
       0

  i = 3
  REPEAT BEGIN
    PRINT, i--
  ENDREP UNTIL(i lt 0)
08 BEGIN...END  

用於顯示多條語句。
-----------------------------------------------------------------------------------------------
BEGIN
   statements
END | ENDIF | ENDELSE | ENDFOR | ENDFOREACH | ENDREP | ENDWHILE
-----------------------------------------------------------------------------------------------

 
  CASE name OF
    'Moe': BEGIN
      PRINT, 'Stooge'
    END
  ENDCASE

  SWITCH name OF
    'Moe': BEGIN
      PRINT, 'Stooge'
    END
  ENDSWITCH
09  CONTINUE  

執行FOR、WHILE 或 REPEAT 循環語句中下一條循環。

 
  FOR I = 1,10 DO BEGIN
   ; If odd, start next iteration:
   IF (I AND 1) THEN CONTINUE
   PRINT, I
  ENDFOR

IDL Prints:
       2
       4
       6
       8
      10
10  BREAK  

從 FOR、WHILE、REPEAT 循環、CASE 或 SWITCH 語句中跳出。

 
  i = 0
  PRINT, 'Initial value: ', i
  WHILE (1) DO BEGIN
    i = i + 1
    IF (i eq 5) THEN BREAK
    PRINT, 'Loop value: ', i
  ENDWHILE
  PRINT, 'END VALUE: ', i

IDL Prints:
Initial value:        0
Loop value:        1
Loop value:        2
Loop value:        3
Loop value:        4
END VALUE:        5
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM