最終更新:2014/6/3今回の内容は概念を理解するというよりは使い方を覚えるというのが主眼になっています。演習課題以外にも自分でたくさんプログラムを書いて使えるようにしてください。指定されていない他のAOJの問題を解くのも有効だと思います。条件分岐プログラムは常に一本道で動くとは限りません。入力された値から判断して処理を分岐させなくてはなりません。if文、if~else文そこでif文というものを使います。具体的には以下のようにします。条件式が真だった時に実行する文;なおこれでは1つの文しか実行できません。}で囲むことで複数の文をif文の分岐で実行することが出来ます。条件式が真だったらする処理}同様に条件式が成り立たなかった時の処理もelseを使って表現できます。条件式が偽だったらする処理}これを組み合わせてもっと複雑な条件分岐を作ることができます。A~Cのどれでもなかった場合の処理}では条件式について学んでいきましょう。真と偽まず最初にC言語における真と偽というものを知らなくてはなりません。簡単な定義ですがとてもとても重要です。C言語において真(true)とは0以外の値であり偽(false)とは0です。数学の等式、不等式に使われる記号と同じものがあります。ような書き方が出来ない点です。いった式は次の論理演算子を用いて表現します。論理演算子こちらも数学で使うものと同様のものが用意されています。真偽の値を反転させます。World"と表示するプログラムを作成せよ、と言われてprintfを100回各必要はありません。いった時のために繰り返しを行える構文があります。英語のwhileの意味のとおり「~の間」だけ処理を繰り返します。条件式が真の間繰り返す処理B}こういった繰り返し処理のことをループと読んだりします。処理の流れとしては条件式Aの値を調べる(偽ならBをやらずに4へ)Bの処理Bの処理が終ったら1に戻る次の処理(これはループの外です)注意点としては条件式Aが常に真のままだといつまでたってもループから抜け出せない(無限ループ)に陥ることがあります。do-while文while文と似たようなものでdo-while文というものがあります。while文が条件式の値が偽の場合、一度もループ内の処理が行われないのに対してdo-while文は最低でも一度はループ内の処理が行われます。具体的には以下のように書きます。ループで行う処理B}while(条件式A)最初に処理Bを行った後に条件式Aの真偽を調べて真なら再度Bを繰り返します。決まった回数繰り返したいときに使われます。printf("%d\n",i);}このような出力をします。//省略789注意して欲しいのは変数iは0から9までを移動している点です。何かエラーが起きた等でループ処理の途中でループから抜け出したい時break文が便利です。break文は実行されると今いる一番小さいループから抜け出します。処理}ループの外この場合条件式2が真になるとbreak文が実行されif文よりも後ろの処理を飛ばしてループの外の処理に移行します。continue文break文と似ていますがbreak文がループを抜けて次の処理に移るのに対してcontinue文はループの最初に戻ります。for文の中でcontinueを使うと継続処理を行った後ループの最初に戻ります。switch文2つか3つに分岐するプログラムならif-else文でも書けますが5つや6つ、もしくはそれ以上に分岐する場合if-else文で書こうとすると大変なことになります。switch文を使うとそういった分岐を簡潔に記述することが出来ます。default:どれでもなかったら行う処理;}なおX,A,B,C,D・・・は全て整数の値しか取れません。最後のbreakを書かないとそれより下のcase全て実行されてしまいます。中でも宣言することが出来ます。c=a+b;}ただこのループの中で宣言された変数はこのループの中でしか使えません。いった変数の有効範囲のことをスコープと言います。スコープの中と外で同じ名前の変数が混在している場合、よりスコープの狭いほうの変数が優先されます。printf("forの外のa%d\n",a);}以下のようになります。./scopetestforの中のa20forの外のa10forの中ではforの中で宣言されたaが優先されていることがわかるかと思います。グローバル変数main関数の外に変数を宣言した場合その変数はプログラム中のどこからでも呼び出すことができます。global=100;}一見便利なようですがプログラムのどこからでも変更できるというのは大きなプログラムを作成する際に安全でないことのほうが多いのでなるべく使わないようにしましょう。ライセンスの下に提供されています。