C言語で情報オリンピック Day4
int、float型の変数、printf、if文、while、do、forループを勉強しましたね。今日は入力(にゅうりょく)、配列(はいれつ)を勉強します。
まず復習(ふくしゅう)になりますが、printfは標準(ひょうじゅん)出力(しゅつりょく)に文字(もじ)や数(かず)を出力するCの関数(かんすう)です。標準出力は英語でStandard Outputといいます。これはプログラミングの世界では略(りゃく)してstdoutと書きます。標準出力後の反対語は標準入力(にゅうりょく)です。英語ではStandard Inputといいます。略してstdin。入力と出力を合わせて入出力といいます。InputとOuputですね。略してIOといいます。標準というのはなんでしょうか。一般的に、パソコンの場合は、キーボードからの入力は標準入力といい、ディスプレーに出力するのは標準出力といいます。これに対し、ほかにスキャナーやカメラからの入力、3Dプリンターや磁気(じき)テープなどへの出力は標準ではないのでただの入力、出力といいます。
標準入力(ひょうじゅんにゅうりょく)
C言語ではscanf関数を使って標準入力からデータを取得します。
以下のプログラムを見てみましょう。
#include <stdio.h>
int main() {
int i;
scanf("%d", &i);
printf("あなたは %d を入力しましたね!", i);
return 0;
}
では、このプログラムの作成動画を見てみましょう。のちほど詳しく解説(かいせつ)しますので、わからない部分があってもだいじょうぶです。
プログラムを説明する前にすこし数学の話をします。
ビットとバイト
コンピュータがデータを保存(ほぞん)するのに、メモリやディスクをつかいますが、保存するデータの最小単位はビットとなります。1ビットに保存できるのは0か1、ひとつの数字だけです。いかのようなイメージは4ビットになります。
そして8ビットは1バイトといいます。1バイト=8ビットですね。1バイトを整数を保存するときに、2の8乗の数を保存することができるので、符号ありなら-128〜+127、符号なしの場合は0〜255を表すことができます。
ビットとバイトの英語はそれぞれbit、byteになります。複数形はbits、bytesです。
2進数(しんすう)と10進数
この0と1は実(じつ)は2進数といいます。人間は日常生活(にちじょうせいかつ)に10進数をつかいますが、コンピュータはそこまでかしこくないので、2進数をつかいます。たとえば10進数の1は2進数だと、10と表示します。10進数は10でつぎの位が増えるように、2進数2で次の位が増えます。以下は10進数と2進数の対応表になります。
10進数…2進数
0…0
1…1
2…10
3…11
4…100
5…101
6…110
7…111
8…1000
9…1001
10…1010
11…1011
12…1100
13…1101
14…1110
15…1111
...
2進数⇒10進数変換
2進数が与えられたら、10進数はいくつになりますか。桁(けた)ごとに計算すればよいです。最下位は2の0乗1をかけ、後ろから2番めの桁を2の1乗をかけ、うしろから3番目に2の2乗をかけます、・・・
たとえば 1101の2進数は 1✕2^3+1✕2^2+0✕2^1+1✕2^0 = 8+4+0+1=13 になります。上の表からもわかるように、2進数の1000は10進数の8で、100は4で、1は1ですので、8+4+1ですね。
10進数⇒2進数変換
10進数を数をひたすら2でわればよいです。
たとえば10進数の13を2進数に変換しましょう。
13÷2 = 6...1
6÷2 = 3...0
3÷2 = 1...1
1÷2 = 0...1
ですので、余りを逆順にしますと 1101 になります。
コンピュータのなかにこの1と0の組み合わせでいろいろなデータを表(あらわ)します。
データ型(かた)
int というキーワードはデータ型または型といいます。C言語の基本データ型は以下のようなものが存在します。
short ・・・ 2バイトの符号つき整数(-2の15乗〜2の15乗-1、つまり-32768〜32767)
int ・・・ 符号(ふごう)つき整数。2バイトまたは4バイトです。
char ・・・ 1バイトの符号つき整数(-128〜127)、英数字などを記憶できます
unsigned char ・・・ 1バイトの符号なし整数(0〜255)
long ・・・ 4バイトの符号付き整数。(-2の31乗〜2の31乗-1)
unsigned ・・・ 2バイトまたは4バイトの符号なし整数(4バイトの場合は0〜2の32乗-1)
unsigned long ・・・ 4バイトの符号なし整数
unsigned short ・・・ 2バイトの符号なし整数(0〜2の16乗-1)
float ・・・ 4バイトの単精度(たんせいど)浮動(ふどう)小数点実数(有効桁7桁)
double ・・・8バイトの倍精度(ばいせいど)浮動小数点実数(有効桁16桁)
long long ・・・ 8バイト符号つき整数(-2の63乗〜2の63乗-1)
unsigned long long ・・・ 8バイト符号なし整数(0〜2の64乗-1)
コンパイラによって、int型とunsinged型は2バイト、4バイトと異なります。short、longなら桁数が変わりません。
型変数をつかうときに、かならず有効範囲を意識しましょう。
変数
int i; の行は変数(へんすう)i を宣言(せんげん)します。以下の図のように、変数のことを箱(はこ)と理解してかまいません。ラベルiという箱に、整数を入れることができます。そして宣言というのは、これからこの箱をつかうぞとコンピュータに通知(つうち)します。
変数の宣言に初期(しょき)値を代入することができます。たとえば
int i = 10;
整数型の変数iに10の数字を代入します。
同じ型の変数2つ以上があるばあい、1行に宣言することもできます。
たとえば
int i = 10, j = 12, k = 14;
i, j, k3つの変数をカンマ(,)で区切って、一行に宣言することができます。
変数を宣言しないと、プログラムでつかうことができません。
標準入力
scanfの行は標準入力から整数を受け取り、変数 i に代入(だいにゅう)します。ここに注意してほしいのは & という符号(ふごう)です。変数 i に入力を代入(だいにゅう)すると理解(りかい)してください。今後の授業で紹介しますが、&iはiがコンピュータ中の場所を意味しています。
標準出力
printf関数に2つのパラメータがあります。1番目はダブルクォートの文字列ですが、これは文字列のフォーマットといいます。このフォーマットの中に%d(整数)のような特殊なパラメータがあります。2番めのパラメータはこの%dに対応した変数になります。
Day4まとめ
型
ビット
バイト
変数
入力
出力
この記事が気に入ったらサポートをしてみませんか?