TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜26時限目〜 関数形式マクロの仕組みについて・・・

 〜目次〜

 

 

関数形式マクロの仕組みについて

関数を使ったコードでは、

関数を使わない場合に比べて、

処理の実行時間に余分な時間がかかる場合があります。

処理を関数としてまとめることで、

引数や戻り値の受け渡しなどの際に、

余分な時間がかかってしまうのです。

何度も呼び出されるような小さな関数の場合には、

この時間が無視できない場合があります。

そんな時には、

関数形式マクロ(function-like macro)

というものを利用すると便利になります。

関数形式マクロは以下の通りです。

#define マクロ名(引数)(式)

関数形式マクロは、

以前紹介したマクロを応用したものになります。

以前では文字や数値を単純に置き換えるだけでした。

このマクロは引数を使った柔軟な置き換えができるようになります。

 

最大値を求めるマクロ

以下のマクロは最大値を求めるマクロです。

#define MAX(x, y)(x > y ? x : y)

「xがyよりも大きい時にはxを、逆の場合にはyを返す」

という処理を意味しています。

条件演算子を使い簡単に記述しています。

実際に、関数形式マクロを使ったコードを入力してみます。

sampe59.c

f:id:YuyaTerayama:20180910225048p:plainーsample59の実行画面ー

1番目の数を入力してください。

7

2番目の数を入力してください。

10

最大値は10です。

関数形式マクロの処理は呼び出し部分に埋め込まれるので、

プログラムの処理速度は向上します。

ただし、

関数形式マクロを何度も使うと、

プログラムのデータサイズはそれだけ大きくなります。

関数形式マクロは単純な短い処理にだけ、

使うべきであるということは覚えておいてください。

 

 

関数形式マクロを使う際の注意

関数形式マクロでは、

呼び出しの際に渡す引数は、

どのような型でも使えることになっています。

一方、関数では、

引数の型が異なる場合には、

別の関数を使わなくてはいけません。

関数形式のマクロの方が扱いやすいが、

しっかり渡される引数の型をチェックして、

誤りのないプログラムを作成するには、

関数を利用した方が良いです。

 

変数の種類について

関数の中で変数や配列の宣言をする仕組みについて、

学んでいきます。

変数や配列の宣言は、

main( )関数や自分で作成した関数の先頭部分で、

いつも記述していたことを頭に浮かべてください。

ただし、これは必ず関数の中で行わなくてはいけない

ということはありません。

変数や配列は、

関数の外側で宣言をする

ということもできます。

今までのように、

関数の中で宣言した変数のことを、

ローカル変数(local variable)

と呼びます。

一方、

関数の外で宣言した変数のことを、

グローバル変数(globall variable)

と呼びます。

 

スコープの仕組みについて

ローカル変数とグローバル変数の違いについて、

みていきます。

2種類の変数を使ったコードを入力してみます。

sample60.c

f:id:YuyaTerayama:20180910230834p:plainーsample60の実行画面

main関数では変数aとbが使えます。

変数aの値は0です。

変数bの値は1です。

func関数では変数aとcが使えます。

変数aの値は0です。

変数cの値は2です。

上記のコードでは以下の3つの変数を宣言しています。

  1. 変数a・・・関数の外で宣言したグローバル変数
  2. 変数b・・・main( )関数内で宣言したローカル変数
  3. 変数c・・・func( )関数内で宣言したローカル変数

変数は宣言した位置によりコード内のどこで、

利用できるのかが異なります。

ローカル変数の場合、

宣言した関数内でのみ利用できる

ということになっています。

グローバル変数の場合、

どの関数からでも利用できる

ということになっています。

それぞれの変数が利用できる範囲は決まっており、

その変数が適用される範囲のことを、

スコープ(scope)

と呼びます。

 

〜END〜

*C言語* 〜25時限目〜 戻り値の仕組みについて・・・

〜目次〜

 

 

戻り値の仕組みついて

関数では、引数とちょうど逆に、

関数の呼び出し元に、関数本体から特定の情報を返す

という仕組みを作成することができます。

関数から返される情報のことを、

戻り値(return value

と呼びます。

複数指定できる引数と違い、

戻り値は1つだけ呼び出し元に情報を返すことができます。

関数の定義のスタイルを思い出してください。

戻り値を返すには、

まず戻り値の型を関数の定義の中に示します。

そして関数のブロックの中で、

returnという文を使って、

実際に値を返す処理をします。

関数定義については以下の通りです

戻り値の型 関数名(引数リスト)

{

  文;

  ・・・

 

  return 式;

}

ここではブロックの最後にreturn文を記述しているが、

この文はブロックの中ほどに記述することもできます。

ただし、関数が処理された時、

ブロックの最後にいかなくても、

return文が処理されたところで、

関数の処理が終了します。

return文の仕組みについても気をつける必要があります。

実際に戻り値を使ったコードを記述してみます。

sample56.c

f:id:YuyaTerayama:20180910214930p:plainーsample56の実行画面ー

いくらの本を売りますか?

700

いくらの本を売りますか?

1000

700円と1000円の本を売りました。

合計で1700円です。

上記のプログラムは、

関数内で計算された結果の戻り値を、

呼び出し元のsumという変数に格納するようにしています。

戻り値を利用するには、

関数の呼び出し文から、

代入演算子を使って代入します。

尚、戻り値は必ずしも呼び出し元で利用しなくても

大丈夫です。

 

戻り値のない関数

引数のない関数を定義したように、

戻り値のない関数を定義することもできます。

関数が戻り値を持たないことを示すためには、

void型を指定します。

戻り値のない関数が呼び出されて処理された場合には、

ブロックの最後の;までいきつくか、

何もつけないreturn文によって関数が終了することになっています。

単純な関数ではreturn文を記述しなくても大丈夫です。

 

合計値を求める関数

ここから今までの知識を使い、

様々な処理を行う関数を作成していきます。

まずは2つの数の合計値を求める関数を作成します。

sample57.c

f:id:YuyaTerayama:20180910220007p:plainーsample57の実行画面ー

1番目の数を入力してください。

7

2番目の数を入力してください。

10

合計は17です。

 

最大値を求める関数

もう一つ最大値を求める関数を作成します。

sample58.c

f:id:YuyaTerayama:20180910220626p:plainーsample58の実行画面ー

1番目の数を入力してください。

7

2番目の数を入力してください。

10

最大値は10です。

上記のsample57と58のように、

使いやすい関数を作成しておくことで、

色々なプログラムで関数を利用することができるのです。

 

再帰

C言語ではの関数では、

その内部で自分自身を呼び出す処理を行うことができます。

このような処理のことを、

再帰(recursion)

と呼びます。

再帰を使うことで、

複雑な処理が簡単に記述できる場合があります。

 

次回は関数形式のマクロから学んでいきます。

プログラミングの勉強に大事なのは、

実際に入力すること、

毎日少しでも触ること、

復習すること、

アウトプットすること

などで効率が上がるんだと感じている今日この頃です。

 

〜END〜

*C言語* 〜24時限目〜 引数について・・・

〜目次〜

 

 

 

引数を使って情報を渡す

関数は処理をまとめることに加えて、

さらに柔軟な処理を行うことができます。

関数を呼び出す際に、

呼び出し元から関数内に何らかの情報(値)を渡し、

その値に応じた処理を行う

という処理ができます。

関数に渡す情報のことを、

引数(argument)

と呼びます。

引数を使う関数の記述は以下の通りです。

//sell関数の定義

void sell(int price){       int型の引数を用意する

  printf("%d円の本を売りました。¥n", price); 引数を関数内で使う

}

このsell関数は、

呼び出し元から呼び出されるときに、

int型の値を1つ、

関数内に渡すように定義したものです。

関数の( )内にある、「int price」が引数です。

引数priceはこの関数内だけで使うことができる

int型の変数になっています。

変数price(引数)は、

関数が呼び出されたときに、

呼び出し元から渡されるint型の値が格納されます。

このため、変数priceの値は関数内部の処理で使うことができます。

尚、変数priceは関数内以外の場所では使うことができません。

つまり、

この変数をmain( )関数内で使うことはできません。

 

引数を渡して関数を呼び出す

引数を持つ関数を呼び出す際には、

関数呼び出し文の( )の中に、

指定しておいた型の値を記述して、関数に値を渡します。

実際に以下のコードを入力してみてください。

sample53.c

f:id:YuyaTerayama:20180908025323p:plain

ーsample53の実行画面ー

700円の本を売りました。

1000円の本を売りました。

このmain( )関数内では、

最初にsell( )関数を呼び出す際に、「700」という値を渡して呼び出す

次にsell( )関数を呼び出す際に、「1000」という値を渡して呼び出す

という処理を行なっています。

このように引数を使うことで、

柔軟な関数を作成できるのです。

関数の本体で定義されている引数(変数)のことを、

仮引数(parameter)

と呼びます。

一方、関数の呼び出し元から渡される引数(変数)のことを、

実引数(argument)

と呼びます。

 

キーボードから入力する(関数)

引数についてさらにやっていきます。

今回はキーボードから入力した値が関数内に渡されるようにします。

以下のコードを入力してみてください。

sample54.c

f:id:YuyaTerayama:20180908030041p:plainーsample54の実行画面ー

1冊目はいくらの本を売りますか?

700

700円の本を売りました。

2冊目はいくらの本を売りますか?

10000

10000円の本を売りました。

このようにして、

main( )関数内で変数を用意して、

キーボードからの入力を読み込ませ、

関数に渡すことができます。

C言語では、関数に渡されるのは変数numそのものではなく、

そこに格納されている値となっています。

このような引数の渡し方を、

値渡し(pass by value

と呼ぶことがあります。

 

複数の引数をもつ関数を使う

関数には2個以上の引数を持たせることができます。

関数を呼び出す際に、

複数の値を関数内に渡して処理することができるのです。

実際にコードを入力して見てみます。

sample55.c

f:id:YuyaTerayama:20180908031233p:plain

ーsample55の実行画面ー

いくらの本を売りますか?

700     (1つ目の引数)

いくらの本を売りますか?

1000    (2つ目の引数) 

700円と1000円の本を売りました。

複数の引数を持つ関数でも、

基本は同じです。

呼び出す際に、複数の引数をカンマで区切ってください。

この複数の引数のことを、

引数リスト

と呼ぶことがあります。

そうすることで、

区切った順に、実引数が仮引数に渡されます。

尚、仮引数と異なる数の実引数を渡して、

関数を呼び出すことはできません。

2つの引数を使うsell関数を定義した場合は、

引数を1つだけ指定して呼び出すことはできません。

 

引数のない関数を使う

引数のない関数を定義する際には、

引数の型として

void

という特殊な型を指定することになっています。

関数を呼び出す際には、

( )内に値を指定しないで呼び出します。

以下が引数のない関数の呼び出しの記述になります。

//sell関数の呼び出し

・・・

sell( );

 

次回は戻り値について学んでいきます。

 

〜END〜

*C言語* 〜23時限目〜 関数の仕組みについて

〜目次〜

 

 

関数の仕組みについて

C言語で複雑なコードを書くようになってくると、

度々行わなければいけない、

一定の処理が出てくる場合があります。

そのような処理を、

その度に何度も記述するのは大変な作業になってしまいます。

そこで、C言語では

一定の処理をまとめて記述する

ことができる、

関数(function)

という機能を用意しています。

関数を使うことで、

複数の処理をひとまとめにして、

いつでも呼び出して使うことができます。

C言語で関数を使うためには、以下の2つの手順が必要です。

  1. 関数を作成する(関数を定義する)
  2. 関数を使う(関数を呼び出す)

 

main( )関数

プログラム全体も「ひとまとまりの処理」です。

この関数の名前は、

「main ( )」

という名前の関数です。

 

関数を定義する

関数を使うには、

まず最初に、コードの中で一定のまとまった処理を

指定しなくてはいけません。

これが関数を作成する作業になります。

この作業のことを、

関数の定義(function definition)

と呼びます。

関数の定義は、

ブロック内にまとめて記述します。

以下が関数の一般的な記述の仕方です。

戻り値の型 関数名(引数リスト){

  文;

  ・・・

 

  return 式;

}

「戻り値」や「引数」については、

あとで説明をします。

ここでは関数の大まかなイメージをしてください。

また「関数名」とは、

変数の名前と同じように、

識別子を使ってつけた関数の名前です。

 

関数を呼び出す

関数を定義すると、

まとめた処理をあとで利用することができるようになります。

関数を利用することを、

関数の呼び出し(function call)

と呼びます。

関数を呼び出すには、

コード中でその関数名を以下のようにして記述します。

関数名(引数リスト);

呼び出す場合には、ブロックを記述しません。

注意としては、最後にセミコロンをつけるので、

忘れないようにしてください。

実際に以下のコードで関数を使ってみます。

sample51.c

f:id:YuyaTerayama:20180908014906p:plain

ーsample51の実行画面ー

本を売りました。

sample51のコードでは、

main( )関数の部分

sell( )関数の部分

というように2つにわかれています。

C言語ではmain( )関数から処理がはじまります。

上記のコードでも、

main( )関数の先頭部分から処理が行われます。

main( )関数の最初の文では、

sell( )関数を呼び出しています。

すると、処理の流れはsell( )関数に移り、

関数の最初の文から順番に処理が行われます。

sell( )関数内の処理は「}」がくると終了します。

関数を利用するコードでは、

以下の順番で処理が行われています。

f:id:YuyaTerayama:20180908015711p:plain

 

関数を何度も呼び出す

以下のコードを入力してください。

sample52.c

f:id:YuyaTerayama:20180908015958p:plainーsample52の実行画面ー

本を売りました。

もう一冊本を売ります。

本を売りました。

このようにして、

関数は何度でも呼び出すことができます。

 

関数に処理をまとめる

sample51や52は、

関数にまとめずにmain( )関数内に、

文を記述した方がみやすい単純なコードになります。

しかし、一定の処理が多くなるにつれ、

main( )関数に何度も記述するのは大変になります。

なので、何行にも渡る一定の処理がある場合には、

関数を作った方が、簡単で読みやすコードを、

作成することができます。

その一定の処理がわかる名前を関数名にすることで、

わかりやすいコードにすることができます。

このように関数は複雑なコードを書く際には、

欠かせないものになります。

 

次回では引数から学んでいきます。

 

〜END〜

*C言語* 〜22時限目〜 文字列と配列の関係について・・・

〜目次〜

 

 

文字列と配列の関係について

配列を応用した仕組みについて学んでいきます。

今までで何度も登場したC言語の「文字列」は、

配列と深い関わりを持っています。

文字列とは、

"Hello"

のような文字の並びのことでした。

C言語では、

このような英数字の文字列を、

「char型の配列」で扱うことができる

という仕組みになっています。

「char型」とは、

「文字」をあらわす型です。

文字列は文字の並びから成り立っているので、

この型の配列で扱うことができるのです。

char型の配列を宣言した後、

各要素に1つずつ文字を代入します。

これで、配列str[ ]で"Hello"という

文字列を扱えるようになるのです。

ただし、C言語では日本語の文字列の場合は、

扱いが異なる場合があるので、

今回は英数字だけを扱うことにします。

文字列の配列の最後には「¥0」を入力します。

この「¥0」は、

NULL文字

と呼ばれています。

C言語では文字列配列の最後をあらわすために、

必ず最後に'¥0'という値をつける

ことになっています。

この「¥0」をつけ忘れないように注意してください。

特に配列を宣言する際には、

注意が必要です。

この「¥0」の分の箱も用意しなくてはいけないからです。

5文字からなる文字列で、

素数を5しか持たない配列では5文字の文字列を、

扱うことはできません。

最低でも、「文字列の長さ+1」個の要素が必要になります。

 

文字列配列を初期化する

文字列は以下のように初期化して、char型の配列に格納できます。

char str[6] = {'H', 'e', 'l', 'l', 'o', '¥0'};

char str[ ] = {'H', 'e', 'l', 'l', 'o', '¥0'};

char str[6] = "Hello";   " "を使って初期化することもできます

char str[ ] = "Hello";

" "を使って文字列配列を初期化した場合は、

自動的にNULL文字が付け加えられることになっています。

尚、" "を使う格納方法は、

初期化のときのみ利用できます。

 

文字列配列を出力する

配列に格納した文字列を出力してみます。

以下のコードを入力してください。

sample49.c

f:id:YuyaTerayama:20180908011928p:plainーsample49の実行画面ー

Helloは文字列です。

文字列配列を出力する際には、

変換仕様として、%sを使います。

 

文字列を出力する

文字列をキーボードから入力して、

扱うコードについてみていきます。

以下のコードではユーザーが入力した、

文字列を出力します。

sample50.c

f:id:YuyaTerayama:20180908012317p:plainーsample50の実行画面ー

文字列を入力してください。

Hello

入力した文字列はHelloです。

このコードで使う配列はstr[100]のように、

素数を大きめに確保する必要があります。

配列には要素数を超えて値を代入できないためです。

ただし、整数や小数、文字を入力した時と異なり、

カンマのあとの配列名には&記号をつけません

入力のコードを使う際には、

注意をしてください。

 

配列のまとめ

配列を利用すると、

同じ種類の多くのデータを扱うことができます。

またC言語では、

文字列を利用する時にも、

配列の機能が欠かせません。

配列はC言語の中でも欠かせない便利な仕組みなのです。

 

〜END〜

*C言語* 〜21時限目〜 配列の内容をソートする・・・

〜目次〜

 

 

配列の内容をソートする

これまでの知識を使って、

配列を応用するコードを記述してみます。

配列を使って、テストの点数を並べてかえてみることにします。

値を並べ替えることを、

ソート(sort)

と呼んでいます。

配列は要素に複数の値を格納することができるので、

並べ替えをするコードを利用すると便利になるのです。

以下のコードを記述してみてください。

sample47.c

f:id:YuyaTerayama:20180907235854p:plainーsample47の実行画面ー

5人の点数を入力してください。

99

70

35

77

13

1番目の人の点数は99です。

2番目の人の点数は77です。

3番目の人の点数は70です。

4番目の人の点数は35です。

5番目の人の点数は13です。

このコードでは実行画面をみるとわかる通り、

点数が高い順に並べ替わっています。

配列をソートするには色々な方法がありますが、

今回は以下の手順で行なっています。

1.まず最初に、配列の各要素を配列の先頭の要素(test[0])と比較します。

 比較した要素の方が大きい場合は、先頭要素と入れ替えます。

 すると、配列の先頭の要素に最大値を格納できます。

2.これで一番大きな値である配列の先頭要素が決まりました。

 そこで、残りの要素についても同じ処理を繰り返します。

 つまり、残りの要素を配列の2番目の要素と比較して、

 大きい場合に入れ替えます。

 すると、2番目に大きい数値が2番目の要素となります。

3.上記を順に繰り返すことでソートの完了です。

要素を入れ替えるためには、

入れ替えるものと同じ型の作業用のエリア(変数)

が必要になります。

今回の場合には作業用の変数tmpを使っています。

 

多次元配列の仕組みについて

配列の応用を学んでいきます。

今までの配列は一列に並んだ箱のようなイメージでした。

さらに配列は、二次元以上に並んだイメージである、

多次元配列

として指定することもできるのです。

二次元配列であれば、

エクセルのようなものをイメージできます。

三次元配列であれば、

立体をイメージできます。

多次元配列の宣言は以下の通りです。

型名 配列名[要素数]  [要素数];

簡単な例として、

「数学」と「国語」という2つの科目の点数を、

整理するプログラムを記述します。

二次元配列を使ったプログラムを以下に記述します。

sample48.c

f:id:YuyaTerayama:20180908001608p:plain

ーsample48の実行画面ー

1番目の人の数学:99点,国語:87点です。

2番目の人の数学:77点,国語:12点です。

3番目の人の数学:65点,国語:24点です。

4番目の人の数学:34点,国語:45点です。

5番目の人の数学:55点,国語:100点です。

二次元以上の配列への値の代入や出力についても、

基本的には同じです。

添字を指定して、

値を代入、出力します。

配列の初期化についても、

以下のようにして行います。

int test[ ] [5] = {......}, {......};

最初の配列の要素数については、

一次元配列と同じように省略することができます。

C言語の内部的には、

一次元配列の各要素がさらに配列として扱われているので、

このようなことができるのです。

 

次回では文字列と配列の関係についてやっていきます。

〜END〜

*C言語* 〜20時限目〜 キーボードから入力する(配列)・・・

〜目次〜

 

 

 

キーボードから入力する(配列)

19時限目の続きで、

テストの点数をキーボードから入力して配列に格納し、

まとめて出力するコードを記述します。

以下のコードを入力してください。

sample44.c

f:id:YuyaTerayama:20180907231152p:plainーsample44の実行画面ー

5人のテストの点数を入力してください。

99

70

35

77

13

1番目の人の点数は99点です。

2番目の人の点数は70点です。

3番目の人の点数は35点です。

4番目の人の点数は77点です。

5番目の人の点数は13点です。

上記のコードでは、

まずキーボードから繰り返し入力した値を、

配列に格納しています。

変数と同じように、配列要素に&記号をつけ、

変換仕様には%d指定しています。

次の繰り返し文では、

格納された値を1つずつ出力しています。

後でまとめて点数を出力するのに、

配列が役立っているのが確認できます。

 

配列の添字に注意する

配列を使う場合には、以下のことに注意します。

配列の大きさを超えた要素を利用できない

ということです。

今までの配列を使ったコードでは、

5つの要素をもつ配列を宣言しました。

この配列を使うときは、

test[10]などの添字を指定して、

値を代入してはいけません。

誤った添字を使っても、コンパイルはエラーになりません。

誤った添字を使ったプログラムを実行すると、

コンピュータが暴走してエラーが起こることがあります。

なので、配列の添字には気をつけてください。

 

配列を初期化する

配列には色々な記述方法があります。

そこで、配列の初期化についてみていきます。

配列の宣言」と「値の代入」の作業を、

まとめて行うことができます。

配列の初期化は以下の通りです。

型名 配列名[要素数] = {値0,  値1…};

sample43のテストの点数を使うプログラムは、

以下のようにできます。

int test[5] = {99, 70, 35, 77, 13}

{ }の中に値を並べて各要素の値を記述します。

すると、配列が準備されたときに、

99, 70,…という値が要素に格納されます。

{ }の中に指定する値は、

初期化子(initializer)

と呼ばれています。

また、配列を初期化する場合には、

[ ]の中に配列要素の数を指定しなくても構いません。

素数を指定しない場合は、

初期化子の数に応じた要素が自動的に準備される

ということになっています。

以上で説明した方法を使い、コードを書いてみます。

sample45.c

f:id:YuyaTerayama:20180907232906p:plain

ーsample45の実行画面ー

1番目の人の点数は99点です。

2番目の人の点数は70点です。

3番目の人の点数は35点です。

4番目の人の点数は77点です。

5番目の人の点数は13点です。

これは19時限目のsample42と同じ実行画面になっています。

コードがスッキリしているのが確認できます。

配列を初期化することで、

宣言と値の格納が同時に行えます。

 

初期化子が足りない場合

配列の要素数よりも少ない初期化子を記述した場合、

余った要素については、0が自動的に格納されることになっています。

一応ですが、覚えておいてください。

 

マクロを利用する

これまでのコードでは、

繰り返し文を使い配列を扱ってきました。

しかし、もし異なるテストについてのコードを作成する場合、

テストの点数を書き換え、

テストの受験者数に訂正して…

ということをしなくてはいけません。

これは意外と大変な作業です。

そんなときには、以下のようにコードを記述することで

たいへん便利になります。

sample46.c

f:id:YuyaTerayama:20180907233739p:plainーsample46の実行画面ー

1番目の人の点数は99点です。

2番目の人の点数は70点です。

3番目の人の点数は35点です。

4番目の人の点数は77点です。

5番目の人の点数は13点です。

このコードの実行結果は今までと同じです。

しかしここでは、

配列の要素数に「NUM」という名前を指定していることに、

注目してください。

コードの先頭部分で、

コードの中の「NUM」という識別子を「5」に、

置き換えるように指定しているためです。

この、

#define

という指定は、

コードを翻訳する前に、「置き換え」をする

という機能を持っています。

つまり、このコードでは「NUM」と指定した部分が全て、

「5」に置き換えられてからコードが翻訳されるのです。

コードの先頭の#defineの行を書き換えるだけで、

受験者数などを変更することができるのです。

共通の数字を全て書き換える手間が減るので、

たいへん便利なコードになります。

尚、#defineを使って指定する名前を

マクロ(macro)

と呼びます。

#defineは、

コード内のマクロを、数値や文字などを含めた文字列に

単純に書き換える機能を持っています。

マクロ名には全て大文字を使うことが慣習になっています。

最後に「;」はつけませんので注意してください。

 

〜END〜 

*C言語* 〜19時限目〜 配列の仕組みについて・・・

〜目次〜

 

 

配列の仕組みについて

プログラムをやっていく上で、

たくさんのデータを扱う場合があります。

例として、学校を考えてみます。

学校には何百人もの生徒がいて、

その生徒のテストの点数を扱うプログラムを考えてください。

19時限目までに学んだ知識を使うことで、

変数にテストの点数を記憶させることができます。

1クラス40人だとして、

変数をtest1からtest40という変数を全部で40個用意します。

とやってしまうと、

コードが長く、複雑になってしまい便利とは言えません。

これが1000人分だとしたら、、

とんでもないことになってしまいます。

そんな場合には、

配列

という仕組みを使うと便利になります。

変数が特定の1つの値を記憶させる機能を持っていたことを、

思い出してください。

配列も「特定の値を記憶させる」という点で、

変数と同じ役割を持っています。

ただし、配列は

同じ型の値を複数まとめて記憶する

という便利な機能を持っています。

いくつもの同じ名前のついた箱が並んでいるようなイメージです。

変数と同様に、

配列の箱の中にも値を格納して利用することができます。

配列中のそれぞれの箱は、配列の

要素(element)

と呼ばれています。

 

配列を宣言する

変数と同じように、配列を利用する前に、

配列を宣言する

という作業が必要になります。

配列の場合も、

識別子から配列名を用意し、型を指定します。

ただし、配列の場合はこれに加えて、

値をいくつ記憶できるのか

という指定も行う必要があります。

配列では箱の数を指定する必要があるのです。

この数のことを、

素数

と呼んでいます。

配列の宣言は以下の通りです。

型名 配列名[要素数];

例では、

int test[5];

のようにすることで、

int型の値を5つ記憶できるtestという配列を用意できました。

配列の要素数は決まった数でなくてはいけません。

つまり、[ ]に記入する数は固定的な数である必要があります。

変数を指定することはできません。

配列を宣言すると、配列の各要素が用意され、

それぞれの箱に以下の名前がつきます。

test[0]

test[1]

test[2]

test[3]

test[4]

[ ]内に指定する番号は

添字(インデックス:index)

と呼ばれています。

尚、C言語の配列の添字は0から始まるので、

最後の添字は「要素数−1」になります。

間違える人が多いので、注意してください。

 

配列要素に値を代入する

配列に値を記憶させるには、添字を使い要素を指定し、

値を代入します。

代入は変数と同じで、代入演算子を使います。

 

配列要素の値を出力する

実際に配列を使ったコードを書いてみます。

各要素の添字は0から始まるので、繰り返し処理などを使うことで

単純なコードを記述することができます。

以下のコードを入力してみてください。

sample43.c

f:id:YuyaTerayama:20180907213005p:plain

ーsample43の実行画面ー

1番目の人の点数は99点です。

2番目の人の点数は70点です。

3番目の人の点数は35点です。

4番目の人の点数は77点です。

5番目の人の点数は13点です。

sample43では、

まず配列の各要素に値を代入しています。

その後で、

for文を使い、各要素の値を出力します。

配列の添字は0から始まっているので、

「i + 1番目の人」と指定しています。

このように配列では、

各要素を指定するときの添字に変数を使う

ということができるようになっています。

各要素の箱に入っている点数はint型の整数なので、

int型の変数と扱いは同じです。

なので、値を出力する際には変換仕様として%dを使って

出力すれば良いのです。

 

次回では、

キーボードから入力して配列に値を格納する方法から

学んでいきます。

 

〜END〜

*C言語* 〜18時限目〜 for文をネストする・・・

〜目次〜

 

 

for文をネストする

今まで色々な構文について紹介してきました。

これらの条件判断文、繰り返し文などの構文では、

複数の文を埋め込んでネストする(入れ子にする)

ことができます。

例としてfor文の中にfor文を使うという、

複雑な記述をすることができるのです。

実際にfor文をネストしたコードを入力してみます。

sample38.c

f:id:YuyaTerayama:20180906170141p:plain

ーsample38の実行画面ー

iは0:jは0

iは0:jは1

iは0:jは2

iは1:jは0

iは1:jは1

iは1:jは2

iは2:jは0

iは2:jは1

iは2:jは2

iは3:jは0

iは3:jは1

iは3:jは2

 

これは外側のループを一回処理するたびに、

内側のループは3回されています。

このコードでは、変数iをインクリメントするfor文の中に、

変数jをインクリメントするfor文を埋め込んで、入れ子にしています。

つまり、

iをインクリメントするループ文が1回行われるたびに、

jをインクリメントするループ文が(3回)繰り返されるのです。

このように文をネストすることで、

複雑な処理を記述することができるのです。

 

if文などと組み合わせる

上ではfor文の中にfor文を埋め込みましたが、

異なる種類の構文を組み合わせても構いません。

例でfor文とif文を組み合わせるようなこともできます。

sample39.c

f:id:YuyaTerayama:20180906171234p:plainーsample39の実行画面ー

*~*~*

~*~*~

*~*~*

~*~*~

*~*~*

このコードでは、

2つのfor文と1つのif 〜 else文を使っています。

*または~を出力するたびに、変数chに交互に0と1と代入します。

これをすることにより、

if文の条件によって処理を変更させることができるのです。

応用して色々なコードを入力してみてください。

 

break文の仕組みについて

今までで繰り返し文には一定の処理の流れがあるということが、

確認できました。

しかし、場合によっては、

処理の流れを強制的に変更したいと時があるかもしれません。

C言語には処理の流れを変更する文として、

break文やcontinue文が用意されています。

まずはじめにbreak文についてみていきます。

break文は、

処理の流れを強制的に終了し、そのブロックから抜ける

という処理を行う文です。

以下のコードはbreak文を使い、

キーボードから指定した回数で、

ループ処理を強制的に終了させるものです。

sample40.c

f:id:YuyaTerayama:20180907203740p:plainーsample40の実行画面ー

何番目でループを中止しますか?(1~10)

4

1番目の処理です。

2番目の処理です。

3番目の処理です。

4番目の処理です。

sample40では本来10回の繰り返しを行うfor文です。

しかし、ここではユーザーが入力した回数で

break文を実行し、

ループを強制的に終了させています。

5回目以降のループが実行されていないことが確認できます。

尚、繰り返し文をネストしている場合、

その内側の文でbreak文を使うと内側のブロックを抜け出して、

もう一つ外側のブロックに処理がうつることになっています。

 

switch文の中でbreak文使う

switch文の中ではbreak文が使われていました。

そこで使っているbreak文は上記のbreak文と同じものです。

switch文内でbreak文を応用すると、

以下のような処理をさせることができます。

sample41.c

f:id:YuyaTerayama:20180907204540p:plainーsample41の実行画面その1ー

成績を入力してください。(1~5)

1

もう少し頑張りましょう!

ーsample41の実行画面その2ー

成績を入力してください。(1~5)

2

もう少し頑張りましょう!

ーsample41の実行画面その3ー

成績を入力してください。(1~5)

5

たいへん優秀です!

sample41では、入力した整数の成績により、

色々なメッセージを出力するプログラムです。

コードの中のbreak文の挿入位置に注意をしてください。

case1とcase3の後にbreak文がないので、

それぞれcase2とcase4と同じ処理を実行するようになっています。

このようにbreak文の挿入位置により処理を、

コントロールすることができるのです。

 

continue文の仕組みについて

もう一つ、処理の流れを強制的に変更する文として、

continue文

というものがあります。

continue文は、

繰り返し文内の処理を飛ばし、ブロックの先頭位置に戻って次の処理を続ける

という処理を行います。

実際に以下のコードを入力してください。

sample42.c

f:id:YuyaTerayama:20180907205558p:plain

ーsample42の実行画面ー

何番目の処理を飛ばしますか?(1~10)

4

1番目の処理です。

2番目の処理です。

3番目の処理です。  (この後に注目)

5番目の処理です。

6番目の処理です。

7番目の処理です。

8番目の処理です。

9番目の処理です。

10番目の処理です。

sample42を実行して、処理を飛ばす回数目として4を入力しました。

そうすると、実行画面をみてわかる通り、

4番目の処理が飛ばされ5番目の処理が行われています。

continue文の処理が行われると、

ブロックの先頭に強制的に戻ります。

 

〜END〜

*C言語* 〜17時限目〜 while文の仕組みについて・・・

〜目次〜

 

 

while文の仕組みについて

C言語では、指定した文を繰り返すことのできる構文が3つあると紹介しました。

その中の2つ目として、

while文(while statement)

という構文があります。

書き方としては以下の通りです。

while(条件){

  文;

  ・・・

}

while文では、

条件が真である限り指定した文が繰り返し処理されます。

実際にwhile文を使ったコードを記述してみます。

sample35.c

f:id:YuyaTerayama:20180906150257p:plainーsample35の実行画面ー

1番目の繰り返しです。

2番目の繰り返しです。

3番目の繰り返しです。

4番目の繰り返しです。

5番目の繰り返しです。

繰り返し処理が終わりました。

このブロック内では、

条件が偽に近ずくように、変数iの値を増やしています。

一般的に、繰り返し文では、

繰り返しをするかしないかを判断するための条件が、

変換するようにしておかないと、

永遠に繰り返し処理が行われてしまいます。

例えば以下のようなコードを実行した場合

int i = 1;

while (i <= 5){

  printf("%d番目の繰り返しです。\n", i);


}

このコードはwhile文の条件の中に変数iを増やす「i++」などの

文がないものです。

なので、while文は何度繰り返しても条件が偽になることがありません。

そのため、永久に繰り返されてしまい、プログラムが終了しません。

条件の記述には注意して記述してください。

 

条件の記述を省略する

ifやwhile文などで慣用的に使われている、

条件の書き方についてみてみます。

以下のコードを記述してどんなコードなのかを考えてみてください。

sample36.c

f:id:YuyaTerayama:20180906151232p:plainーsample36の実行画面ー

整数を入力してください。(0で終了)

5

5が入力されました。

整数を入力してください。(0で終了)

7

7が入力されました。

整数を入力してください。(0で終了)

3

3が入力されました。

整数を入力してください。(0で終了)

0

0が入力されました。

繰り返し処理が終わりました。

このコードはユーザーが入力した整数を繰り返し出力するものです。

この繰り返し文はユーザーが0を入力した時点で終了します。

C言語では、真か偽かを内部的には整数値で処理しています。

0以外の整数値 → 真

0 → 偽

となっているのです。

 

do 〜 while文の仕組みについて

C言語の3つ目の繰り返し文である、

do 〜 while文(do~while statement)

についてみていきます。

この構文では、最後に指定した条件が真である限り

ブロック内の処理を繰り返します。

記述の仕方は以下の通りです。

do{

  文1;

  ・・・

}while(条件);

do 〜 while文とwhile文とで異なる部分として、

条件を判断する前にブロック内の処理を行う

というところです。

while文では、

繰り返し処理の最初に条件が偽であれば、

一度もブロック内の処理は行われません。

一方で、do 〜 while文では、

最低一回は必ずブロック内の処理が行われます。

sample35のコードをdo 〜 while文を使い、

記述してみます。

sample37.c

f:id:YuyaTerayama:20180906153349p:plainーsample37の実行画面ー

1番目の繰り返しです。

2番目の繰り返しです。

3番目の繰り返しです。

4番目の繰り返しです。

5番目の繰り返しです。

繰り返し処理が終わりました。

これはsample35と同じ実行画面になっています。

このように様々な構文を使って記述することができる場合があります。

色々な記述の仕方を覚えていきましょう。

 

〜END〜

*C言語* 〜16時限目〜 for文の仕組みについて・・・

〜目次〜

 

 

for文の仕組みについて

まず私たちの生活でイメージしてみます。

「朝起きる」「歯を磨く」「風呂に入る」・・・

などのように生活の中には何かの繰り返しが存在するはずです。

C言語では、このような繰り返しの処理のことを

繰り返し文(ループ文:loop statement)

と呼ぶ構文で記述することができます。

C言語の繰り返し文には3つ種類があり、

  1. for文
  2. while文
  3. do〜while文

があります。

はじめに、for文について学んでいきます。

以下がfor文の記述の仕方になります。

for(初期化の式1; 繰り返すかどうか調べる式2; 変化のための式3)

  文;  (この文を繰り返す)

尚、for文はif文と同様にブロックを使うことで、

複数の処理を行うことができます。

実際にfor文を記述してみます。

sample31.c

f:id:YuyaTerayama:20180906122552p:plain

ーsample31の実行画面ー

繰り返し処理をしています。

繰り返し処理をしています。

繰り返し処理をしています。

繰り返し処理をしています。

繰り返し処理をしています。

繰り返し処理が終わりました。

for文では、繰り返す回数をカウントするために変数を使います。

このコードでは、変数iを使っています。

そして以下のような手順で処理を行うことになります。

f:id:YuyaTerayama:20180906123228p:plain

つまり、

変数iを1で初期化したあと、

条件i<=5が偽になるまで、

i++ を繰り返し、

「繰り返し処理をしています。」と出力する文を処理するのです。

 

変数をループ内で使う

sample31では、

繰り返しのたびに画面に文字が出力されるようにしていました。

この際に、繰り返した回数を出力してみます。

以下のコードを入力してください。

sample32.c

f:id:YuyaTerayama:20180906123647p:plainーsample32の実行画面ー

1番目の繰り返しです。

2番目の繰り返しです。

3番目の繰り返しです。

4番目の繰り返しです。

5番目の繰り返しです。

繰り返し処理が終わりました。

実行画面を見てわかる通り、

ブロックの中で変数iが1ずつ増加しているのが確認できます。

 

for文の応用1

for文を応用したプログラムを少し書いてみます。

sample33.c

f:id:YuyaTerayama:20180906124803p:plainーsample33の実行画面ー

いくつ*を出力しますか?(整数で入力)

10

**********

このプログラムを実行すると、

入力した数だけ*が出力されました。

このようにユーザーが入力した数だけ繰り返す文を、

簡単に書くことができます。

 

for文の応用2

次に、繰り返し文の中で変数の値を使ってみます。

1から入力した数までを順番に足し算し合計を出力する、

プログラムを書いてみます。

sample34.c

f:id:YuyaTerayama:20180906125402p:plain

ーsample34の実行画面ー

いくつまでの合計を計算しますか?

10

1から10までの合計は55です。

このようにして、少し複雑なプログラムをfor文を用いることで

記述することが可能になります。

出力する値などを色々変えてみて、for文を作成してみてください。

 

次回はC言語の繰り返し処理の2個目である、

while文から始まります。

 

〜END〜

*C言語* 〜15時限目〜 switch文の仕組みについて・・・

〜目次〜

 

switch文の仕組みについて

C言語にはif文と同じように、条件によって処理を変更する、

switch文(switch statement)

という構文があります。

switch文は以下のような構文です。

switch(式){

 case 定数1:

  文1;

  ・・・

  break;

 case 定数2:

  文2;

  ・・・

  break;

 default:

  文3;

  ・・・

  break;

}
switch文内の「式」がcaseあとの定数値と一致すれば、

そのあとの文からbreakまでが処理されます。

どの定数値とも当てはまらなければ、

default:以下の文が処理されます。

尚、defaultは省略をすることも可能です。

実際にコードを入力します。

sample27.c

f:id:YuyaTerayama:20180905155249p:plain

ーsample27の実行画面その1ー

整数を入力してください。

1

1が入力されました。

ーsample27の実行画面その2ー

整数を入力してください。

2

2が入力されました。

ーsample27の実行画面その3ー

整数を入力してください。

3

1か2を入力してください。

これは14時限目のsample26と全く同じ処理で、

実行結果も同じになります。

if文よりもシンプルに書くことができるのが特徴です。

switch文の場合、

値を判断する式は整数や文字でなければいけないので注意します。

 

break文が抜けている場合

以下のコードはsample27のbreak文を抜いたものになります。

sample28.c

f:id:YuyaTerayama:20180905155634p:plain

ーsample28の実行画面

整数を入力してください。

1

1が入力されました。

2が入力されました。

1か2を入力してください。

1を入力した場合に、case1:以降の文が全て処理されてしまっています。

breakという文は、

文の流れを強制的に切る

という役割を持っています。

break文を正しい位置に入れないとおかしな結果になってしまいます。

コンパイラはbreak文がないことをエラー表示しませんので、

書く際に注意をしてください。

 

論理演算子を使い、複雑な条件判断処理をする

if文などの中で論理演算子を使うことで、

より複雑な処理を行うことができるようになります。

実際に以下のコードで論理演算子を組み合わせてみます。

sample29.c

f:id:YuyaTerayama:20180905160649p:plain

ーsample29の実行画面その1ー

今日は雨が降っていますか?

YまたはNを入力してください。(Y=YES,N=NO)

Y

雨が降っているんですね。

傘を持っていきましょう。

ーsample29の実行画面その2ー

YまたはNを入力してください。(Y=YES,N=NO)

n

雨が降っていないんですね。

傘を持たなくて大丈夫です。

sample29は入力された文字によって、

条件を判断しています。

ここで、大文字と小文字の区別を無くして処理させることを考えました。

その際に、論理演算子である| |を使うことで期待通りの結果にすることができました。

尚、復習ですが文字は' 'で囲むということを忘れないでください。

 

条件演算子の仕組みについて

簡単な条件判断の場合には、if文を使わなくても、

条件演算子(conditional operator)

の「?:」を使って記述することができます。

以下のコードを入力してください。

sample30.c

f:id:YuyaTerayama:20180905161544p:plainーsample30の実行画面ー

何番を選択しますか?

整数を入力してください。

1

Aコースを選択しました。

if文よりも簡単に記述できているのが確認できます。

条件演算子?:の使い方についてまとめます。

条件演算子

条件 ? 真のとき式1 : 偽のとき式2

条件演算子は3つのオペランドをとる演算子です。

全体の式の値は、

条件が真のときに式1、条件が偽のときに式2の値になります。

 

16時限目では何度も繰り返す処理を行うコードの、

書き方について学んでいきます。

 

〜END〜

*C言語* 〜14時限目〜 if文で複数の文を処理する・・・

〜目次〜

 

 

if文で複数の文を処理する

13時限目のsample22では、条件が「真」だった場合に、

1つだけの文からなる簡単な処理を行いました。

if文では条件が真だった場合に複数の処理を行うことができます。

そのためには、

{ }でブロックを作り、

複数の文をまとめます。

するとブロックの中では原則どおり、

1文ずつ処理が行われます。

if(条件){

  文①;

  文②;

  ・・・

}

のようにして記述します。

実際にコードで書いて見ましょう。

sample23.c

f:id:YuyaTerayama:20180905132007p:plain

ーsample23の実行画面その1ー

整数を入力してください。

1

1が入力されました。

1を選択します。

処理を終了します。

ユーザーが1を入力した場合、

条件が真となり、

ブロック内の処理が実行されます。

もし、1以外を入力した場合は以下のようになります。

ーsample23の実行画面その2ー

整数を入力してください。

2

処理を終了します。

ブロック内の処理が行われていないことが確認できます。

 

ブロックにしない場合どうなるのか

sample23をブロックを使わないで記述したものが、

以下のsample24のコードになります。

sample24.c

f:id:YuyaTerayama:20180905132702p:plainーsample24の実行画面ー

整数を入力してください。

2

1を選択します。

処理を終了します。

実行画面を見てみると、期待していない結果になってしまっています。

複数の文を処理させる予定が、{ }で囲み忘れてしまい、

if文の内容は11行目だけだと、判定されてしまっています。

このようなミスを防ぐために、

if文を使う際には1文でも{ }でブロックを作成したり、

インデントをすることで、

どこまでがif文の内容なのかわかりやすいような、

コードを記述することを心かけるべきです。

 

if 〜 else文の仕組みについて

今までは条件が真の場合のみ、

処理を実行してきました。

今回は条件が偽の場合にも、

指定した文を処理させる構文を学んでいきます。

ーif 〜 else文ー

if(条件)

  文①;

else

  文②;

この構文では条件が真の場合、

文①を処理し、

条件が偽の場合には、

文②を処理します。

実際にコードを入力します。

sample25.c

f:id:YuyaTerayama:20180905133644p:plain

ーsample25の実行画面その1ー

整数を入力してください。

1

1が入力されました。

ーsample25の実行画面その2ー

整数を入力してください。

2

1以外が入力されました。

条件が偽の場合には、

elseブロック内に記述した処理が実行されています。

 

if 〜 else if 〜 elseの仕組みについて

if文では、2つ以上の条件を判断させて処理させることも可能です。

それが、

if 〜 else if 〜 else

になります。

この構文を使うことで、

2つ以上の条件に応じた処理を行うことができます。

else ifの条件はいくつでも指定することができます。

最後のelse文を省略することもでき、

どの条件にも当てはまらなかった場合には、

構文で実行される文は存在しないということになります。

実際にコードを入力します。

sample26.c

f:id:YuyaTerayama:20180905134619p:plain

ーsample26の実行画面その1ー

整数を入力してください。

1

1が入力されました。

ーsample26の実行画面その2ー

整数を入力してください。

2

2が入力されました。

ーsample26の実行画面その3ー

整数を入力してください。

3

1か2を入力してください。

このように、いくつもの条件を判断して

複雑な処理を行うことができます。

例えば点数によってランクをつける際なんかには、

このようにして書くことで点数を入力するだけで、

その点数に応じたランクを表示することができます。

 

次回はswitch文というものから書いていきます。

 

〜END〜

レンタルサーバー(へテムル)

プログラミングの勉強中に気になったので、

記事を書いてみようと思います。

 

よく耳にする言葉だけど、

レンタルサーバってなんだ??

 

調べてみた結果!

簡単に言えば、

サーバーを貸し出すサービスのことらしい。。

そのままでした!

 

ホームページを公開する際などに、

必要なサーバーの中で、

サーバー構築のためのコンピュータの設置場所や確保、

常時起動しての管理を、業者側が行ってくれます!

 

サーバーの役割としては、

パソコンだったりスマホからのリクエストに対して、

自身の持っている情報を提供するコンピュータです。

サーバーは受けたリクエストリクエストに対して、

該当する情報を提供します。

そのおかげで、

私たちはホームページを閲覧することができているのです。

 

そんな中で、サーバーはずっとつけていなくてはいけません。

場所も電気代も大変なことになってしまいます。

そこをレンタルサーバの業者側がやってくれるのです。

便利ですね!

 

私自身C言語と併用して、

Railsをかじってます。

そこで、友人に紹介されとても良かった

レンタルサーバーがこちら!

へテムルレンタルサーバ

まずは15日間【無料】お試し利用から!大容量200GB~レンタルサーバー『HETEML

 

ここのレンタルサービスについて詳しいことは、

実際にサイトに行って見た方がいいかと!

私が説明しても多分、説得力がないので。 

 

実際そこまでレンタルサーバーの会社を見た訳ではないので、

ここはこれが他よりも良い!

なんてことは言えません。

 

しかし、

学生の私にとっても安い値段だし、

電話対応とても良いし!

 

当分の間はお世話になるかなって感じです。

その前にまずもっとプログラムについて勉強しなくてはいけませんが。

ずっとプログラムの勉強してると、

頭が大変なことになりそうだったので、

道を外れて見ました。

 

 

まずは15日間【無料】お試し利用から!大容量200GB~レンタルサーバー『HETEML

 

余談ですが、

サーバーを持ったなら独自のドメインも取得すべきだと言われました。

おすすめはここってなったけど =>お名前.com

サーバードメイン。。。

まだまだ難しいです。

*C言語* 〜13時限目〜 条件の仕組みについて・・・

〜目次〜

 

 

条件の仕組みについて

日常でこんな場面を想像してください。

雨が降っている…

→傘を持っていく

雨が降っていない…

→傘を持っていかない

このように「場合に応じた処理」を、

C言語でも行うことができます。

C言語では様々な状況をあらわすために、

条件(condition)

という概念を持っています。

最初にあげた例では、

雨が降っている

という部分が「条件」になります。

実際のC言語では、

このように条件を日本語で記述する訳ではありません。

式が評価され値を持っていることを使い、

真(true)

偽(false)

という2つの値のうちのどちらかであらわされるものを、

C言語では「条件」と呼びます。

「真」または「偽」とは、

その条件が「正しい」か「正しくない」ということを意味します。

「雨が降っている」という条件を考えたときに、

条件が「真」と「偽」である場合を考えてみます。

雨が降っている場合  → 雨が降っているから「真」

雨が降っていない場合 → 雨が降っていないから「偽」

ということになります。

 

条件を記述する

条件をC言語の式であらわしてみます。

7が5よりも大きいことを、

7>5

という不等式であらわすことがあります。

実際に7は5よりも大きいので、この不等式は「正しい」と言えます。

しかし、

7<5

この式は、「正しくない」と言えます。

C言語でも、>のような記号を使うことができ、

上の式は「真」、下の式は「偽」であると評価されます。

つまり2つの式はC言語での条件ということができるのです。

条件を作るための>記号などは、

関係演算子(relational operator)

と呼びます。

以下にまとめます。

f:id:YuyaTerayama:20180903154601p:plain

 

関係演算子を使う

!=や==は2文字で1つの演算子になります。

なので、途中にスペースなどを入れないでください。

=演算が代入演算子ということは、学びました。

形は似ているが、==と=は全くの別物です。

==は全く異なる種類の関係演算子になります。

コードを記述する際に間違えてしまうことが多いので、

注意をしてください。

コンパイラはこの間違いをエラーとして見つけることができません。

 

真と偽

関係演算子を使ったC言語の条件では、

真→1、偽→0

という整数値として内部的に評価されることになっています。

C言語ではこの整数値を使って、

簡単なコードを書く場合があるので、

覚えておいてください。

 

if文の仕組みについて

様々な状況に応じた処理についてやっていきます。

C言語では、状況に応じた処理を行う場合、

「条件」の値(真または偽)に応じて処理を行う

というスタイルの文を記述します。

このような文のことを、

条件判断文(conditional statement)

と呼びます。

条件判断文の代表として、

if文

について学びます。

条件が真の場合に指定した文を処理するという構文です。

最初にあげた例をif文にすると、

if(雨が降っている)

   傘を持っていく

というようになります。

雨が降っていない(偽)の場合には、

「傘を持っていく」という処理は行われません。

実際にコードを入力してみましょう。

sample22.c

f:id:YuyaTerayama:20180903160323p:plain

ーsample22の実行画面その1ー

整数を入力してください。

1

1が入力されました。

処理を終了します。

ユーザーが1を入力した場合、

条件が真となり11行目の文が処理されます。

逆にユーザーが1以外の文字を入力した場合は以下になります。

ーsample22の実行画面その2ー

整数を入力してください。

2

処理を終了します。

今回の場合、

条件が偽となり11行目の文が処理されません。

if文を使うことで、

真の場合だけ、指定した文の処理を行うことができます。

 

さらに詳しくは14時限目にて解説します。

 

〜END〜