プログラミング初心者向けの練習問題の一つに入力値が数字、文字のどちらであるかを判定するプログラムの作成があります。
本記事では、前述のプログラムの作成方法について解説しています。
文字コードについて
入力が数字、文字のどちらかを判別するプログラムを作成するためには、まず文字コードについて理解しておく必要があります。
文字コードとは
コンピュータ上ではあらゆるデータは0と1の組み合わせによって表現されます。
当然、文字や数字などの記号も0と1の組み合わせによって表現されており、それぞれの記号に対応付けられた値のことを文字コードと呼びます。
なお、文字コードにはいくつか種類がありますが、算用数字やアルファベットなどを扱う際はASCIIコードと呼ばれる文字コードを用いることが一般的です。
以下にASCIIコードにおける記号とそれに対応する値のまとめを示します。
~数字~ 文字コード: 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 記号: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ~大文字アルファベット~ 文字コード: 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a 記号: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z ~小文字アルファベット~ 文字コード: 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a 記号: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
※0と1の表現、つまり、2進数表現では一つ一つの値の見分けが付きづらいため、16進数表現にしています。
実際にプログラムを作成してみる
それでは実際に入力が数字、文字のどちらであるかを判定するプログラムを作成していきます。
プログラム作成の手順
ここでは、以下の手順で処理を実装します。
- ユーザに任意の数字、文字などの記号を入力させる
- 入力された記号の文字コードを基に数字、文字、又はそれ以外の記号かの判定を出力する
実装例1
上記の手順に従ってプログラムを作成します。使用する言語はC言語です。
#include <stdio.h>
int main(void){
char c;
printf("任意の値を入力して下さい:");
scanf("%c", &c);
/* 16進数表記で文字コードを表現 */
if (0x30<=c && c<=0x39) {
printf("入力された「 %c 」は数字です。\n", c);
} else if ((0x41<=c && c<=0x5a) || (0x61<=c && c<=0x7a)) {
printf("入力された「 %c 」は文字です。\n", c);
} else {
printf("入力された「 %c 」は文字でも数字でもありません。\n", c);
}
return 0;
}
このプログラムを実行すると以下の出力結果が得られます。
任意の値を入力して下さい:1 入力された「 1 」は数字です。
任意の値を入力して下さい:a 入力された「 a 」は文字です。
任意の値を入力して下さい:& 入力された「 & 」は文字でも数字でもありません。
実装例2
上記の手順に従ってプログラムを作成します。使用する言語はC言語です。
#include <stdio.h>
int main(void){
char c;
printf("任意の値を入力して下さい:");
scanf("%c", &c);
/*
記号をクオーテーションで囲んだ表記でも
条件式では文字コードに基づく比較が行われる
*/
if ('0'<=c && c<='9') {
printf("入力された「 %c 」は数字です。\n", c);
} else if (('a'<=c && c<='z') || ('A'<=c && c<='Z')) {
printf("入力された「 %c 」は文字です。\n", c);
} else {
printf("入力された「 %c 」は文字でも数字でもありません。\n", c);
}
return 0;
}
このプログラムを実行すると以下の出力結果が得られます。
任意の値を入力して下さい:0 入力された「 0 」は数字です。
任意の値を入力して下さい:A 入力された「 A 」は文字です。
任意の値を入力して下さい:% 入力された「 % 」は文字でも数字でもありません。
おすすめの記事
本記事を読まれた方には、以下の記事もおすすめします。
【中・上級者への道!】C言語の次に勉強するべきプログラミング言語は何?【オススメは○○】