Chapter 4 流程控制
4-1 IF 程式說明 if (logical_expr判斷式) then statement 1 statement 2 ... end if 當logical_expr為真時執行的區塊(block)
4-1 IF 程式流程圖 logical_expr判斷式 statement 1 statement 2 … .TRUE. .FALSE.
4-1 IF 程式說明 當logical_expr_1為真時執行的區塊(block_1) if (logical_expr_1) then statement 1 statement 2 ... else if (logical_expr_2) then else end if 當logical_expr_1為真時執行的區塊(block_1) 當logical_expr_1為假當logical_expr_2為真時執行的區塊(block_2) 當logical_expr_1為假 當logical_expr_2亦為假時執行的區塊(block_3)
4-1 IF 程式流程圖 logical_expr_1 block_1 statement 1 statement 2 … .TRUE. .FALSE. logical_expr_2 block_2 block_3
4-1 IF < Ex. 完整程式> < Ex. 執行結果> program ex0401 implicit none real :: Height, Weight real :: Standard_Weight write(*,*) 'Please input your height :' read(*,*) Height write(*,*) 'Please input your weight :' read(*,*) Weight Standard_Weight = Height - 100.0 if (Weight > Standard_Weight) then write(*,*) 'You are overweighted !' else write(*,*) 'Your weight is under control !' end if stop end program ex0401 < Ex. 完整程式> 4-1 IF < Ex. 執行結果> Please input your height : 170 <輸入 1 7 0 [ENTER] > Please input your weight : 65 <輸入 6 5 [ENTER] > Your weight is under control !
4-1 IF 邏輯判斷運算 判斷集合的運算 == or .EQ. 判斷是否"等於" /= or .NE. 判斷是否"不等於" > or .GT. 判斷是否"大於" >= or .GE. 判斷是否"大於或等於" < or .LT. 判斷是否"小於" <= or .LE. 判斷是否"小於或等於" 判斷集合的運算 .AND. 兩判斷式皆為真.AND.才為真 .OR. 兩判斷式至少一個為真.OR.才為真 .NOT. 判斷式真變假,假變真 注意==與=的不同
4-1 IF < Ex. 完整程式> <接下頁> 某同學這一次微積分小考拿了85分,如果把成績分成A,B,C,D,E這5個等級,其中 90~100分為A級、 80~89分為B級、 70~79分為C級、 60~69分為D級、 60分以下為E級, 請寫一個程式來判斷此同學這次成績的等級。 < Ex. 完整程式> Program ex0402 implicit none integer :: Grades character(len=1) :: Level = '?' write(*,*) 'Please input your Grades:' read(*,*) Grades <接下頁>
4-1 IF < Ex. 完整程式> < Ex. 執行結果> if ((Grades .LE. 100) .AND. (Grades .GE. 90)) then Level = 'A' else If ((Grades .LE. 89) .AND. (Grades .GE. 80)) then Level = 'B' else If ((Grades .LE. 79) .AND. (Grades .GE. 70)) then Level = 'C' else If ((Grades .LE. 69) .AND. (Grades .GE. 60)) then Level = 'D' else if (Grades .LT. 60) then Level = 'E' else write(*,*) 'Input error' end if write(*,*) 'You get : [' ,Level, ']' stop end program ex0402 < Ex. 執行結果> Please input your Grades: 85<輸入 8 5 [ENTER] > You get : [B]
4-2 Select -- case 程式說明 select case (var變數) case (value_1數值1) … case default end select 當變數(var) 等於數值1(value_1) 時執行的區塊(block_1) 當變數(var) 等於數值2(value_2) 時執行的區塊(block_2) 變數不等於任何數值時,會執行此區段(block_3)
4-2 Select -- case < Ex. 完整程式> <接下頁> program ex0403 implicit none integer :: Grades character (len = 1) :: Level write(*,*) 'Please input your Grades:' read (*,*) Grades select case (Grades) case (90:100) Level = 'A' case (80:89) Level = 'B' < Ex. 完整程式> <接下頁> 90:100表示 90<=Grades<=100
4-2 Select -- case < Ex. 完整程式> < Ex. 執行結果> case (70:79) Level = 'C' case (60:69) Level = 'D' case (:59) Level = 'E' case default Level = '?' end select write(*,*) 'You get : [' ,Level, ']' stop end program ex0403 :59表示Grades<=59 < Ex. 執行結果> Please input your Grades: 85<輸入 8 5 [ENTER] > You get : [B]