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文
関数