第5回

「第5回」の編集履歴(バックアップ)一覧に戻る

第5回 - (2015/08/09 (日) 13:15:00) の編集履歴(バックアップ)


1.Hello Worldを表示

それではまず、「Hello World」と表示させてみましょう。
学習用C言語開発環境を起動して、下の文を入力して実行してみましょう。
入力したら、左上のプログラム実行ボタンを押してください。
#include <stdio.h>

int main(void){
	printf("Hello World\n");

	return 0;
}

それでは1行ずつ確認していきましょう。

#include <stdio.h>

int main(void){

	//ここに任意のプログラムを書く。

}
ここはおまじないだと思ってください。
{  }で囲まれた部分が上から順に実行されます。一つの処理は「;」で区切られます。
C言語では特別なものを除いて、ひとまとまりの処理を「関数」という単位でまとめています。
そして、その関数に渡す値などを「引数」と呼びます。引数については後で扱います。

ちなみに、「//」はその行の後ろをコメントアウトします。
コメントの文はプログラムに関係なくなります。コメントをうまく活用してよく分かるプログラムを書きましょう。
昨日のプログラムは他人のプログラムです。しっかりとコメントを書いて可読性の高いプログラムを書くようにしましょう。

return 0;
この行はここではプログラムの終了を意味します。
「return」という単語が使われているのは処理を返すという意味があるからです。

printf("Hello World\n");
この行が関数を含む行です。「printf」という関数が呼び出されています。
そして、printf関数に「"Hello World\n"」という引数が渡されています。
(環境によっては¥が\として表示されるかもしれませんが、¥と\は同義です。)

printfは画面に文字を表示する関数で、Hello Worldという文字列を表示させています。
C言語では文字列は「"(ダブルクオーテーション)」で囲むことになっているので、
それで囲ってprintf関数に引数として渡しているのです。

最後の「\n」は改行するためのものだと思っていていください。
ここで、文字列の中の「\n」が表示されていないことに気づいているでしょうか?
「\」から始まる2文字を「エスケープシーケンス」と言いって、いろいろな制御が出来ます。
以下にその例を示しておきます。
¥a 警報音
¥b バックスペース
¥n 復帰改行
¥r 復帰
¥f 改ページ
¥t 水平タブ
¥v 垂直タブ
¥¥ 文字としての¥
¥? 文字としての?
¥' シングルクォーテーション(')
¥" ダブルクォーテーション(")
¥0 Null(ヌル)


2.変数

C言語には変数というものが存在します。イメージは数字や文字を保存しておく箱みたいなものです。
変数には「」というものがあり、変数という箱に何を入れるのかを決めるものです。
型については後ほど詳しく解説します。

それでは、次のようなプログラムを入力して、実行してください。
#include <stdio.h>

int main(void){
	int a;
	int b;
	int c;

	a = 10
	b = 15;

	c = a + b;
	printf("a + b = %d \n", c);

	return 0;
}

各行をくわしく見ていきましょう。

	int a;
	int b;
	int c;
この部分を変数の「宣言」と言います。宣言時の形は
(型名) (変数名);
となります。ここでは「a」という名前のint型の変数が作られています。
同様に、int型の変数「b」と「c」が作られています。型は他にも以下の様なものがあります。
型名 範囲 説明
int -128 ~ 127 整数型の数字を保存できる。
char -2,147,483,648 ~ 2,147,483,647 整数型の数字を保存できる。
float 1.18×10^(-38) ~ 3.40×10^(38) 整数型の数字を保存できる。
double 2.23×10^(-308) ~ 1.79×10^(308) 整数型の数字を保存できる。

	a = 10
	b = 15;
この部分では代入を行っています。数学では、「=」は同じという意味ですが、
C言語では右辺の値を左辺の変数に「代入」しています。

	c = a + b;
この部分は「a + b」の値を変数cに代入しています。
「+」以外の演算子も使うことが出来ます。例えば、以下の様なものです。
演算子 種別 意味
+ 加算 x + y xにyを加える。
- 減算 x - y xからyを引く。
* 乗算 x * y xにyをかける。
/ 除算 x / y xをyで割る。
% 剰余算 x % y xをyで割った余りを求める。
& ビット毎のAND a & b aとbのビット単位のAND
ビット毎のOR a | b aとbのビット単位のOR
^ ビット毎の排他的OR a ^ b aとbのビット単位の排他的OR
<< 左シフト a << b aをbビット分、左へシフト
>> 右シフト a >> b aをbビット分、右へシフト
~ ビット単位の反転 ~a aの各ビットを反転

	printf("a + b = %d \n", c);
この部分は変数「c」の内容を表示しています。%dの所に後ろに記述された変数の内容が代入されます。
この%で始まる2文字を「フォーマット指定子」といいます。変数の型や表示方法によって変更します。
フォーマット指定子の種類を以下に示します。
指定子 対応する型 説明 使用例
%c char 1文字を出力する "%c"
%s char * 文字列を出力する "%8s", "%-10s"
%d int, short 整数を10進で出力する "%-2d","%03d"
%f float 実数を出力する "%5.2f"
%lf double 倍精度実数を出力する "%8.3lf"


3.数字の表記法

C言語には様々な数値の表記方法があります。以下のプログラムをみてください。
#include <stdio.h>

int main(void){
	int a, b, c, d; //このような宣言の仕方も出来る。

	a = 0b00011111;
	b = 037;
	c = 31;
	d = 0x1F;

	printf("%d, %d, %d, %d", a, b, c, d);
}

上記のプログラムを実行してみてください。結果はどうなりましたか?
おそらく、すべて「31」と表示されたはずです。以下に表記方法とn進法の表記方法を示します。
n進法 表記方法 31(10進数)の表し方
2進法 0b○○○ 0b11111
8進法 0○○○ 037
10進法 ○○○ 31
16進法 0x○○○ 0x1F
※「0」から始まる数字は「8進数」になってしまうので注意してください。


4.if文

次は条件分岐を行う構文についてです。
今まではプログラムで決まった流れでしかプログラムが動きませんでしたが、
その順番を入れ替える構文である「if文」を使えばその順番を制御できます。

それでは以下のプログラムを実行してみてください。
#include <stdio.h>

int main(void){
	int a, b;

	a = 5;
	b = 5;

	if(a == b){
		printf("aとbは等しいです。");
	}
	
	return 0;
}
ここでは変数aの値と変数bの値が等しい時のみprintf関数が実行されます。
a == bのところを「条件式」といい、ここが真の時のみ{ }内の文が実行されます。

if文の一般的な構文は以下のようになります。
if(条件式){
	文; //条件式が真の時に実行される

}else{
	文; //条件式が偽の時に実行される

}

さっきの例ではなかったelseというものが出てきました。
elseに続く{ }内の文は条件式が偽の時のみ実行されます。それではさっきの例にelse文を追加してみます。

#include <stdio.h>

int main(void){
	int a, b;

	a = 5;
	b = 5;

	if(a == b){
		printf("aとbは等しいです。");
	}else{
		printf("aとbは等しくないです。");
	}
	
	return 0;
}

for文



while文



関数