例年通りのプログラミング応用の初回ガイダンス。 今年度は、前期の段階でネットワークの基礎の話を入れたいと計画中。 とは言いながら、授業の予定、テストの傾向、評価方法、教科書などを説明していく。
制御構文の復習
ガイダンスの残りの時間は、制御構文の復習ということで、 「文のブロック」について意識付けを行うように説明を行う。
C言語の文 式 ; { 文 [文...] } 複文と呼ぶ if ( 条 ) 文 [ else 文 ] while( 条 ) 文 do 文 while( 条 ) ; for( A ; B ; C ) 文 ; # セミコロンだけ...は、空文と呼ばれる。 その他の構文
これらの文の「ブロック」を繰り返し、分岐といった制御する命令で、 複文{} でブロックを組みながら、表現することをが、 手続きの構造化と呼ばれる。これに構造体などのデータの構造化を組合せて、 「構造化プログラミング(Structured Programming)」と呼ぶ。
手続きの構造化では、処理のブロックの範囲が分かりやすくなるように、 同じ処理レベルの物とそれを取り囲むブロックを字下げをすることで、 分かりやすく見せる。これをインデントと呼ぶ。
説明では、処理のフローチャートと合せ、処理ブロックを一塊の処理と見なしながら、 処理順序や命令の繰り返しの塊を説明する。
break , continue , switch-case
制御構文での説明で、特殊な命令として、break , continue , switch-case を説明する。
break文は、while,do-while,for,switch-case文のブロックを抜け出し、次の文に移る命令。 continue文は、while,do-while,for で、次の処理ループに移る命令。
// while の場合 while( A ) { : break ; // goto labelB ; と同じ : continue ; // Aの条件判定に飛ぶ : } labelB: // for の場合 for( A ; B ; C ) { : break ; // goto labelD ; と同じ : continue ; // Cの繰り返し更新処理に飛ぶ : } labelD:
switch(式) { case … } 文は、switchの式の値に応じて、 その値と同じ定数が書いてある case ラベルにジャンプする命令。
for( i = 0 ; i < 5 ; i++ ) { switch( i ) { case 1 : case 2 : print( "(1or2)" ; // 1,2の値の場合 break ; case 3 : print( "(3)" ) ; // 3の場合(break;が無いので4も実行) case 4 : print( "(4)" ) ; // 4の場合 break ; default: print( "(?)" ) ; // 該当の値がなければ break ; // default ラベルに飛ぶ。 } }