Computer-programming-characters
コンピュータープログラミング-キャラクター
コンピュータープログラミングで数字を扱うのが簡単であれば、キャラクターを扱うのはさらに簡単になります。 文字は、a、b、c、d ….、A、B、C、D、…..のような単純なアルファベットですが、例外があります。 コンピュータープログラミングでは、0、1、2、…などの1桁の数字と、$、%、+、-….などの特殊文字 なども文字として扱われ、文字型変数に割り当てるには、それらを*単一引用符*内に入れる必要があります。 たとえば、次のステートメントは、文字型変数 ch を定義し、値 'a’を割り当てます-
char ch = 'a';
ここで、 ch は、実装の文字セットの文字を保持できる文字タイプの変数であり、 'a' は*文字リテラル*または文字定数と呼ばれます。 a、b、c、…だけではありません しかし、1、2、3 …などの任意の数の場合 または!、@、#、#、$、….などの特殊文字 一重引用符内に保持されている場合、それらは文字リテラルとして扱われ、文字型の変数に割り当てることができますので、以下は有効なステートメントです-
char ch = '1';
文字データ型は8ビットのメモリを消費します。つまり、ASCII値が-127〜127の範囲にある文字に何でも保存できるため、256種類の値を保持できます。 文字データ型には、!、@、#、#、$、%、^、&、*、(、)、_、+、\ {、}などの特殊文字を含む、キーボードで使用可能な任意の文字を格納できます。
単一引用符内には単一のアルファベットまたは数字のみを保持でき、単一引用符内には複数のアルファベットまたは数字を使用できないことに注意してください。 したがって、次のステートメントはCプログラミングでは無効です-
char ch1 = 'ab';
char ch2 = '10';
以下に示すのは、Cプログラミング言語で文字を定義、割り当て、印刷する方法を示す簡単な例です-
#include <stdio.h>
int main() {
char ch1;
char ch2;
char ch3;
char ch4;
ch1 = 'a';
ch2 = '1';
ch3 = '$';
ch4 = '+';
printf( "ch1: %c\n", ch1);
printf( "ch2: %c\n", ch2);
printf( "ch3: %c\n", ch3);
printf( "ch4: %c\n", ch4);
}
ここでは、%cを使用して文字データ型を出力しました。 上記のプログラムが実行されると、次の結果が生成されます-
ch1: a
ch2: 1
ch3: $
ch4: +
エスケープシーケンス
多くのプログラミング言語は、 Escape Sequence と呼ばれる概念をサポートしています。 文字の前にバックスラッシュ(\)がある場合、その文字はエスケープシーケンスと呼ばれ、コンパイラにとって特別な意味を持ちます。 たとえば、次の文の\ nは有効な文字であり、改行文字と呼ばれます-
char ch = '\n';
ここでは、文字 n の前にバックスラッシュ(\)があり、改行である特別な意味がありますが、バックスラッシュ(\)は少数の文字のみで特別な意味を持つことに注意してください。 次のステートメントは、Cプログラミングで意味を伝えず、無効なステートメントと見なされます-
char ch = '\1';
次の表は、Cプログラミング言語で利用可能なエスケープシーケンスを示しています-
Escape Sequence | Description |
---|---|
\t | Inserts a tab in the text at this point. |
\b | Inserts a backspace in the text at this point. |
\n | Inserts a newline in the text at this point. |
\r | Inserts a carriage return in the text at this point. |
\f | Inserts a form feed in the text at this point. |
\' | Inserts a single quote character in the text at this point. |
\" | Inserts a double quote character in the text at this point. |
\\ | Inserts a backslash character in the text at this point. |
次の例は、コンパイラがprint文のエスケープシーケンスをどのように解釈するかを示しています-
#include <stdio.h>
int main() {
char ch1;
char ch2;
char ch3;
char ch4;
ch1 = '\t';
ch2 = '\n';
printf( "Test for tabspace %c and a newline %c will start here", ch1, ch2);
}
上記のプログラムが実行されると、次の結果が生成されます-
Test for tabspace and a newline
will start here
Javaの文字
以下は、Javaで作成された同等のプログラムです。 Javaは、Cプログラミングで見たのと同じ方法で文字データ型を処理します。 ただし、Javaは文字操作の追加サポートを提供します。
次のプログラムを実行して出力を確認することができますが、出力は上記のCの例で生成された結果と同一である必要があります。
public class DemoJava {
public static void main(String []args) {
char ch1;
char ch2;
char ch3;
char ch4;
ch1 = 'a';
ch2 = '1';
ch3 = '$';
ch4 = '+';
System.out.format( "ch1: %c\n", ch1);
System.out.format( "ch2: %c\n", ch2);
System.out.format( "ch3: %c\n", ch3);
System.out.format( "ch4: %c\n", ch4);
}
}
上記のプログラムが実行されると、次の結果が生成されます-
ch1: a
ch2: 1
ch3: $
ch4: +
Javaは、Cプログラミングで使用したのと同じ方法でエスケープシーケンスもサポートします。
Pythonの文字
Pythonは文字データ型をサポートしていませんが、すべての文字は文字列(文字のシーケンス)として扱われます。 文字列については別の章で学習します。 Pythonで単一の文字を使用する場合、特別な配置は必要ありません。
以下はPythonで書かれた同等のプログラムです-
ch1 = 'a';
ch2 = '1';
ch3 = '$';
ch4 = '+';
print "ch1: ", ch1
print "ch2: ", ch2
print "ch3: ", ch3
print "ch4: ", ch4
上記のプログラムが実行されると、次の結果が生成されます-
ch1: a
ch2: 1
ch3: $
ch4: +
Pythonは、Cプログラミングでエスケープシーケンスを使用したのと同じ方法でエスケープシーケンスをサポートします。