プログラミング言語論 第2回 練習問題解答例 情報工学科 篠埜 功 練習問題1 以下のプログラム断片の制御フローを図示せよ。 if x > 0 then x := x – 1 else if y > 0 then y := y – 1 else y := y + 1 解答例 if x > 0 then x := x – 1 else if y > 0 then y := y – 1 else y := y + 1 真 x := x-1 偽 x>0 真 y := y-1 y>0 偽 y := y+1 練習問題2 以下のプログラム断片の制御フローを図示せよ。 while x>0 do begin if x=3 then break; y := y + 1; x := x - 1 end 解答例 while x>0 do begin if x=3 then break; y := y + 1; x := x - 1 end 真 偽 y := y+1 x := x-1 x=3 x>0 真 偽 練習問題3 以下のプログラム断片の制御フローを図示せよ。 while x>0 do begin while y>0 do begin if x=3 then break; z := z + 1; y := y - 1 end; x := x – 1 end 解答例 while x>0 do begin while y>0 do begin if x=3 then break; z := z + 1; y := y - 1 end; x := x – 1 end 真 偽 x>0 偽 真 y>0 真 x=3 偽 z := z+1 x := x-1 y := y-1 練習問題4 以下のプログラム断片の制御フローを図示せよ。 while x>0 do begin while y>0 do begin if x3 then begin y := y – 1; continue end z := z + 1; y := y - 1 end; x := x – 1 end 解答例 while x>0 do begin while y>0 do begin if x3 then begin y := y – 1; continue end z := z + 1; y := y - 1 end; x := x – 1 end 真 偽 真 y>0 偽 z := z+1 y := y-1 x := x-1 x>0 偽 x3 真 y := y-1 練習問題5 以下のプログラム断片の制御フローを図示せよ。 x := 10; sum := 0; L: sum := sum + x; x := x – 1; if x > 0 then goto L 解答例 x := 10; sum := 0; L: sum := sum + x; x := x – 1; if x > 0 then goto L x := 10 sum := 0 sum := sum + x x := x – 1 x>0 練習問題6 以下のプログラム断片の制御フローを図示せよ。 y := 3; case x of 1 : y := 1; 2 : y := x * 2; 3 : if z = 0 then y := y * y else y := y * y * y end 解答例 y := 3; case x of 1 : y := 1; 2 : y := x * 2; 3 : if z = 0 then y := y * y else y := y * y * y end y := 3 1 y := 1 x 3 2 真 y := x*2 y := y*y z=0 偽 y := y*y*y 練習問題7 以下のプログラム中の2か所のif文および内側の while文の入口、出口はそれぞれいくつか。 while x>0 do begin while y>0 do begin if x=3 then break; L: z := z + 1; y := y - 1 end; x := x – 1; if x = 2 then goto L end 解答例 while x>0 do begin while y>0 do begin if x=3 then break; L: z := z + 1; y := y - 1 end; x := x – 1; if x = 2 then goto L end 内側のwhile文は 入口2つ出口1つ 真 偽 x>0 偽 真 y>0 入口1つ出口2つ 真 x=3 偽 z := z+1 y := y-1 x := x-1 偽 x=2 真 入口1つ出口2つ
© Copyright 2024 ExpyDoc