プログラミングスクールC言語プログラミング入門講座レッスンノート アルゴリズムの解説 および ++/--演算について

アルゴリズムの解説 および ++/--演算について

C言語プログラミング入門講座のレッスンノート

レッスンノートって?レッスンノートって?

4/3のレッスン内容は、以下の通りです。

 ○ アルゴリズムに関する解説
 ○ ++、--演算について

以下、詳細を記します。

□ アルゴリズムに関する解説

今回の題材は、以下のURLにあるshoheyコマンドについてです。

 https://codeiq.jp/q/2768

コマンドの仕様を簡単にまとめると、以下の通りです。

 ・ 標準入力から「shohey [値] [オプション1] [オプション2]」と入力する。
 ・ 値は省略不可。1~10のいずれかのみ入力可
 ・ オプション1、オプション2には-e、-qのいずれかのみ入力可。いずれも省略可能
 ・ -e と -qが両方指定される場合、順不同とする

処理結果の仕様を簡単にまとめると、以下の通りです。

 ・ shohey・・・(何回か繰り返す)・・・hey と出力する
  - 繰り返し回数は、値で指定した回数とする
  - -e の指定があると、繰り返し回数が2倍になる
  - -q の指定があると、最後に'?'を出力する。

そこで現状のソースコード(PHP、事前に添付済み)を確認したところ、以下の問題点がわかりました。

 (1) オプション1~2の片方、あるいは両方が省略されているのに、-e または-qの指定があるかをチェックしている
 (2) "hey" の回数が、正解に対して1回多い
 (3) -e と -qの順不同に対応できていない

この問題点に対して、正解となるフローチャートを簡単に示しながらソースコードを修正しつつ解説していきました。

詳細は、レッスン中に添付した修正後のPHPソースコード、およびレッスンノートを参照してください。

この手の問題を解いていくには、アルゴリズムの作成スキルが必要となります。

ただし、一朝一夕に習得できるものではありません。今後、継続して様々な問題に取り組んでいきましょう。

□ ++、--演算について

ポイントは、++/--が「前置か後置かで何が違うのか」ということですね。

まとめると、以下のようになります。

 前置++/-- : 演算で参照がある場合に、演算の「前に」+1/-1される
 後置++/-- : 演算で参照がある場合に、演算の「後で」+1/-1される。

 [例] a = 1, b = 2 の場合
  c = a + (++b); // 加算の前にbが+1される。c の演算結果は「4」になる。
  c = a + (b++); // 加算の後にbが+1される。c の演算結果は「3」になる。

++/--を含むオペランドが、他の演算で参照されている場合に違いがでます。

単にi++と書いた場合と++iと書いた場合とでは、違いはありません(参照される演算が存在しないため)。
このレッスンノートを書いたコーチ

富士通でソフトウェア開発を担当。楽しいプログラミングの醍醐味、教えます

楽しめるC言語セミナー
源田雄一 (C言語)

品川・戸塚・武蔵中原・立川・新横浜・中山・長津田・成瀬・町田・関内・石川町・東小金井...

レッスンノート ページ先頭へ

C言語情報

サイタのC言語講師がブログを通して、C言語情報を発信。更新情報のチェックはこちらから!