カテゴリー
C言語

switch文を知ろう

この章ではswitch文について説明します。
if文と同じく条件分岐できるのがswitch文です。
11 11switchのカッコ()の中の式が、caseの値と一致するとbreakまでの文が実行されます。11
次にbreakの意味について説明します。
breakはブロックを抜けるために存在します。
switch文の場合はbreakでswitchのブロックを抜けることができます。
つまり、式の値がcaseのいずれかの値と一致すれば文を実行して、breakにより抜けます。
ではswitch文の例を見てみましょう
111 11
例えば3を入力すると以下のようになります。1111111
先ほどのswitch文と同じことをif文で表すと以下のようになります。11
次は仮にbreakが記述されていなかったらどうなるか説明します。11 caseの値に一致した場合、それ以降の処理をbreakの箇所まで実行していきますが、 caseの値に一致したのにも関わらずbreakが無いと次のbreakまで もしくはbreakがどこにもなければdefaultの箇所まで処理が実行されます。
仮に上の例で入力したaの値が0だとすると、0は1の値と一致するので1を実行して処理が終わるはずのところ、breakが無いがために、そこで止まらず抜けて行ってしまいます。
さらに「case 1:」にもbreakが無いので、そこの処理も実行されて、結局は最後のdefaultまで実行されてしまいます。1
次の例を見てみましょう。1111
今までのcase文は1つずつでしたが、上の例のようにcase文を複数まとめて設置することができます。
switchの条件文が複数のcaseの中でどれか1つのcaseの値と合致した場合は、そこの処理文を実行してbreakで抜けます。11

カテゴリー
C言語

if文で星座の判定をしよう

この章ではif文で星座の判定のプログラムを作成します。
scanfでユーザーに誕生月と誕生日を入力させて、それに対して星座を出力させるプログラムです。
少し長いプログラムですが、if文が連なっているだけです。11111111111111 ここで使っているif文は入れ子になっています。
つまり、if文の中にif文が入っている構造になっています。
この例では初めにmonthの数値が1から12までの、どの数値なのかを1から以下のif文で確認します。
次に2つ目のif文でdayの数値により星座の分別を行います。
星座が2つあるので、条件式は1という構文で書きます。
例えばmonthが1であれば1月は山羊座か水瓶座なので、dayが18であれば山羊座になります。dayの数値が31を超えていれば1が実行されます。1 結果の一例は以下の通りです。星座の日決めには説があり、上のif文では必ずしも自身の星座が出力されない可能性がありますので、その辺の誤差はご勘弁ください(星座の切り換わりの日が説により1日ずれています)。1

カテゴリー
C言語

論理演算子について知ろう

この章では論理演算子について説明します。
「if文について理解しよう。if文の基本構文1」の箇所で比較演算子について説明しましたが、if文でもっと複雑な条件式を設定したい場合に論理演算子を使用します。
では次は論理演算子の例を見てみましょう。11 論理演算子は条件式をもっと詳しく表現したい時に使用します。
例えば「3より大きく かつ 10より小さい」と言うような複雑な条件式にしたい時に使用します。
例では1の中で1を使用していますが、次のような意味があります
「aは0よりも大きいかつaは100よりも小さい 」と条件式を設定しています。
この2つの条件をつないでいる「かつ(そして)」の部分が論理演算子です。
この例の11を挟んだ両辺ともTRUEでなければifの条件式はTRUEにはなりません。1 「&&」は「&&」の左右の値が2つともTRUEの場合に条件式がTRUEになります。
「||」は「||」の左右の値のどちらか一方がTRUEの場合に条件式がTRUEになります。
「||」の使用例をみてみましょう。1 この例は年齢が20歳以上もしくは身長が170センチ以上であるならばTRUEです。
つまり「||」を挟んだ両辺のどちらかがTRUEであるならばTRUEですが、この例では1の部分がTRUEですので、1が出力されます。
次は「!」の使用例をみてみましょう。1 この例は年齢が80歳以上ではない場合はTRUEになります。
この例の条件式は「20は80より大きい」の否定なのでTRUEです。
比較演算子と一緒に「!」を使用する場合には例のように比較演算子をカッコでくくって、その前に「!」を置きます。

次は論理演算子の優先度について説明します。
上の例では論理演算子は1つでしたが、論理演算子が複数使われている場合はどこが先に実行されるのかが重要になります。1 では例をみてみましょう。1 1また、以下のようにカッコを付けることで優先順位を変えることが出来ます。11

カテゴリー
C言語

if文の条件式に変数を入れよう

これまではif文の条件式に演算子を使っていますが、1のように条件式に変数を入れた書き方も出来ます。
条件式に0(ゼロ)以外の整数値が入っている場合にはTRUEになります。
以下の例では条件式にchar型が入っていますが、char型は整数で表せることを学習しました。
つまり、以下の例の条件式には0以外の数字が入っていることになり、条件式がTRUEになっています。
では例をみてみましょう。1 これを書き換えると以下のようになります。
変わっている箇所はifの条件式です。1 つまり、最初の例は1の部分を省略して書いているわけです。1 この例ではaが0でない時にTRUEになりますので、1が実行されます。

カテゴリー
C言語

if文について理解しよう。if文の基本構文3

この章でもif文について説明します。
条件式が複数ある場合、つまり細かい条件を設定したい場合には1を使います。
これまで説明してきた基本構文1,基本構文2は「条件に合うか合わないか」を判断するのみの条件文でしたが、1は「条件式1がFALSEならば条件式2、条件式2もFALSEならば条件式3, 条件式3もFALSEならばelseの実行文」というような条件式の複数指定です。
具体的には、以下の構文(if-else if-else)になります。
11では例をみてみましょう。111
aに56、bに5を入力すると結果は以下の通りです。1

カテゴリー
C言語

if文について理解しよう。if文の基本構文2

この章でもif文について説明します。
ifの基本構文1では条件式がFALSEの場合にはif文の中は無視されて何の処理も実行されませんでした。
そこで、条件式がFALSEの場合にも何かしらの処理を実行したい時に使用するのが
「if-else」です。

1
では例をみてみましょう。1 「wallet=15000;」は財布に15000円入っているという意味です。
そして条件式は「財布に入っているお金が10000円より少ないのならば」と言う意味なのですが、財布には15000円入っているので(10000円より多いので)、条件式はFALSEです。FALSEなので「条件式がFALSEのときに実行される文」つまり1が実行されます。
もう1つ例を挙げます。11 ユーザーに入力させたaとbの値が同じ数値、つまりTRUEであるならば1を実行します。
ユーザーに入力させたaとbの値が違う数値、つまりFALSEであるならば1を実行します。
例えば45を2回入力した場合の結果は以下の通りです。1

カテゴリー
C言語

if文について理解しよう。if文の基本構文1

この章ではif文について説明します。
if文はどのような時に使われるのかを日常生活の中の場面で説明します。
例えば「もし、今日財布に10000円あったらフランス料理にして、20000円あったら中華料理にする」などの選択を繰り返して人は生きていますが、プログラムでもこのような表現ができるのです。
このように条件によって表現を変えることを条件分岐と言います。
条件分岐にはifを使用します。1 「条件式」には下の表のように比較演算子を11使ってとかなどを11のような記号(比較演算子)を使って表現します。11 条件式は条件を満たしていればTRUEを返し、条件を満たしていないならばFALSEを返します。
そして、TRUEの時にブロックの中の文が実行されます。
では何がTRUE、FALSEなのかを次の例で説明します。1 この例は条件式に比較演算子の1を使用していますが、常識的に考えて5は2より大きいですので、条件を満たしています。
これがTRUEです。
TRUEですので、1が実行されます。
では以下のif文は条件を満たしているでしょうか?1 2は5より大きくないので条件を満たしていません。
これがFALSEです。
FALSEの場合は1が実行されません。
次は比較演算子」の1を使います。1 aとbの値が等しい場合にTRUEになりますので、この例では1が出力されます。

カテゴリー
C言語

2次元配列を知ろう

この章では2次元配列について説明します。
2次元配列は配列を入れ子にすることで表現します。
つまり、配列の中に配列が入っていることを意味します。
2次元配列とは以下のように行と列の2次元で考える配列です。
詳しい説明は例の後に行います。1 では例をみてみましょう。111 結果は以下の通りです。1 2次元配列の構文は以下のようになります。1111111 ではさらに詳しく説明します。111111111111

カテゴリー
C言語

ユーザーに文字列を入力させる方法

この章ではユーザーにキーボードから入力させる2つの方法について説明します。
ユーザーに文字列を入力してもらう方法は2つあります。
初めにgetsを使った方法について説明します。
では例をみてみましょう。1 初めに入力値を入れる配列をchar型の配列で作成します。
それが以下の箇所です。
char x[100];

次にgetsの引数に先ほど作成した配列を入れます。
それが以下の箇所です。1 この構文でユーザーからの入力を配列で受け取ります
エンターキーを押すまで入力することが可能になります。
gets(配列名);は入力時に文字列と文字列の間に空白を入れることができます。
例えば,「dog cats」のようにdog とcatsの間に空白を入れて複数入力することが出来ます。
結果は以下のように出力されます。1
次はscanfを使った文字入力方法について説明します。1 結果は以下の通りです。1111

カテゴリー
C言語

配列について知ろう

この章では配列について説明します。
普通の変数は1つしかデータを入れることができません。
他のデータを入れようとするとデータが上書きされてしまいます。
それに対して、配列は複数のデータをまとめて入れることができます
複数のデータをまとめて扱う場合、普通の変数では以下のように別々の変数名でそれぞれのデータを入れなければいけません。1 それに対して配列を使うと次のように1つの変数名で同じ型のデータを複数入れることができるのです。
同じ目的で使用する変数は1つにまとめてしまい、1つの変数で複数の要素を管理できると便利です
このような時に配列を使用します。
では例をみてみましょう。
11 変数と同じように配列も以下のように宣言をしなくてはいけません。
つまり、「どの型名でいくつのデータ」を扱う配列を作成するのかを宣言します。1 要素数とは配列に入れるデータの数です。
この例では以下のように宣言しています。
int person[4];
これはint型の要素が入る箱を4つ用意することを意味します。
宣言をした後にはデータを入れるのですが、それが次の箇所です。
箱を4つ用意したので入れるデータも4つです。1 配列にデータを入れる基本構文は以下の通りです。1 構文の[ ]の中に入っている数値を添え字またはインデックスと言います。
添え字とはデータが入っている場所を意味します。
例えば、コインロッカーには番号が振ってありますが、この番号があるからこそ、どこに自分の荷物があるのかが分かるわけです。
添え字の考え方も同じで、0から始まっている番号で配列のデータを管理します。1 添え字は0から順番に番号が付けられていきます
1から始まるわけではないので注意してください。
配列の書き方はこの他にもあります。
それは配列の宣言と初期化を一緒に行う方法です。1 右辺はデータをカンマで区切ります。
上の構文で、最初の例で作成した配列を書き換えると以下のようになります。1 配列に関する注意点が2つあります。
1つ目は以下の例のように要素数が5つであるにも関わらず、6個のデータを入れようとするとエラーになります。1 2つ目は配列の2つ目の書き方を紹介しましたが、以下のように要素数を省略できます。1 1この場合は代入するデータの数が配列の要素数になります。
上の例の場合は要素数は6つなので、自動的に6を指定したことと同じ意味になります。1
次は配列の要素を出力する方法について説明します。
以下が配列の要素を出力している箇所です(紙面の都合で2行で書いていますが、1行で書いてもいいです)。11
次は文字列を配列で扱う方法について説明します。1 文字列とは複数の「文字」を並べたものです。
char型の文字を複数並べることで文字列を作ることが出来ます。
char型の文字を複数並べるにはchar型の配列を使います。
char型の配列の作成手順は以下の通りです。
最初にchar型の配列を宣言してください。1 次に配列の要素に1文字ずつ入れていきます。1 実は文字列(この例ではdog)には文字列の最後に1(ヌル文字と言います)と言う文字が隠れていまして、意味は1を意味します。
ですので、配列の最後の要素に1を付け加えてください。
その分、配列の要素数も1つ増えるので、配列の要素数も1ではなくて1になります。
配列を出力している箇所は以下の箇所です。1 結果は「dog」 を出力します。
char型の配列文字を出力する時の変換指定文字は1になります。1111