わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

pptファイルのノートより(3)

明日の授業で使うpptファイルは,去年のを手直ししたものですが,ここに,「あれ? これでええんか?」と,一旦立ち止まってしまう記述がありました.
スライドは:

「処理」が一つの文のときは,{ と } を省略できる.

if (条件)
 処理

ノートは:

「処理が一つの文のときは,{ と } を省略できる」の代わりに
「処理は一つの文でなければならない.ここで,文とは,単文,複合文(ブロック),if文,for文,while文,…,である」
と表現することもできる.

文法を学ぶなら,「と表現することもできる」ではなく,こちらを理解すべきなのですが.
教科書を確認しておきましょう.大きい方の教科書のp.215では文を,名札付き文,複合文,式文,空文,選択文,繰り返し文,分岐文に大別しています.名札付き文には,switch〜caseで使われる「case」や「default」が含まれています.分岐文というのはgoto,continue,break,returnのことで,ifは選択文に属しています.
いくつかの文にはセミコロンが末尾につき,いくつかには付かないのも要注意です.「case 定数式: 文」とか「default: 文」とか,セミコロンなくっていいんだっけ…ああ,授業の例題プログラムでも,switch〜caseの入れ子をしているのでした.
ともあれ今年も,if文やfor文などで「{ と } を省略できる」と教えることにします.そして,処理が一つの文のときでも,{ と } を書くコードを提示していくことにします.この件では,文法よりも保守性*1を取るということです.

*1:「if (条件1) 処理1; 処理2;」と書くとき,インデントによらず,また条件1の真偽にかかわらず,処理2を実行してしまうなどの問題が知られています.この問題も,スライドで合わせて解説しています.