目次
序文
チャットGPT
C は、1970 年代初頭にベル研究所のデニス・リッチーによって開発された汎用の手続き型コンピューター プログラミング言語です。これは、システムレベルのプログラミングとアプリケーション開発のための、シンプルで効率的で移植可能な言語となるように設計されています。
C 言語の主な機能の一部を次に示します。
1.構造化プログラミング: C 言語は構造化プログラミングをサポートしています。これにより、逐次実行、条件文 (if-else や switch など)、ループ構造 (for や while など) が提供され、プログラムが読みやすく、理解しやすく、保守しやすくなります。
2.中間言語:C言語は高級言語と低級言語の両方の特徴を持っています。豊富な制御構造と演算子を提供し、メモリやハードウェアに直接アクセスでき、プログラマがビット操作やポインタ操作などの低レベル操作を実行できるようにします。
3.移植性: C 言語で書かれたプログラムは、その構文と機能が異なるコンピュータ システムでも基本的に同じであるため、移植性が高くなります。これにより、コードにあまり多くの変更を加えることなく、プログラムをさまざまなプラットフォームでコンパイルして実行できるようになります。
4.強力な標準ライブラリ: C 言語は、入出力、文字列操作、メモリ管理、数学的演算などを処理するためのさまざまな関数とツールを含む豊富な標準ライブラリを提供します。これらの機能はプログラム開発の効率を向上させることができ、プラットフォームを超えて使用できます。
5.システム指向プログラミング: C 言語はメモリやハードウェアに直接アクセスできるため、オペレーティング システム、組み込みシステム、ドライバーなどの基盤となるソフトウェアの開発によく使用されます。C 言語にはビット演算やポインタなどの機能も用意されており、プログラマはシステム リソースをより適切に制御できます。
6.拡張性: C 言語を使用すると、プログラマはカスタム関数やライブラリを作成して言語の機能を拡張できます。このため、C 言語は大規模プロジェクトの開発に非常に適しており、コードをモジュール構造に編成し、関数呼び出しを通じて再利用できます。
C 言語は比較的低レベルですが、依然として非常に重要で広く使用されているプログラミング言語です。プログラマーに強力な制御機能とパフォーマンス上の利点を提供し、システムプログラミング、組み込み開発、ゲーム開発などのさまざまな分野で広く使用されています。C++、Java、Python などの現代のプログラミング言語の多くは C 言語の影響を受け、C 言語を拡張および改良してきました。
2. シーケンシャルプログラミング
2.1 緑地帯の面積を求める - 簡単な手順
以下は、グリーン ベルトの幅を見つけるために C 言語で書かれた簡単なプログラムです。
#include <stdio.h>
int main() {
float length, width, area;
printf("请输入绿化带的长度(单位:米):");
scanf("%f", &length);
printf("请输入绿化带的宽度(单位:米):");
scanf("%f", &width);
area = length * width;
printf("绿化带的面积为: %.2f 平方米\n", area);
return 0;
}
このプログラムは、まずprintf
関数を使用してプロンプト情報を出力し、次にscanf
関数を使用してユーザー入力からグリーン ベルトの長さと幅を読み取り、対応する変数に格納します。次に、長さと幅を掛けて緑地帯の面積を計算し、結果をarea
変数に格納します。最後にprintf
関数を使って緑地帯のエリアを画面に出力します。
2.2 基本的な記号:
C 言語には、文字セット、特定の文字、識別子、区切り文字、コメントなど、さまざまな意味を表すために使用される基本的な記号がいくつかあります。
2.2.1 文字セット
C 言語は、大文字と小文字、数字、句読点、特殊文字などを含むASCII 文字セットを基本文字セットとして使用します。
-
ビジュアルキャラクター
画面に表示または印刷できる文字で、次のタイプが含まれます。
- アルファベット: 小文字の a ~ z と大文字の A ~ Z を含みます。
- 数字: 0 ~ 9 の数字を含みます。
- 特殊文字: #、+、-、*、/、{} などの一般的な特殊記号が含まれます。
-
見えない文字
は、直接表示または印刷できない文字であり、テキストの形式、レイアウト、送信を制御するためによく使用されます。非表示文字には次の種類があります。
- テキスト制御文字: 改行 ('\n')、タブ文字 ('\t') など、テキストの形式とレイアウトを制御するために使用されます。
- メディア制御文字: 開始文字 (SOH)、終了文字 (EOT) など、データ送信および通信を制御するために使用される文字。
- 特殊制御文字: スペース文字、復帰文字、バックスペース文字など。
ASCII 文字セットは128文字 のみを定義しており、他の言語 (中国語、日本語、韓国語など) の文字を表すことはできないことに注意してください。より多くの文字を表現するために、世界中のさまざまな文字を表現できる Unicode や UTF-8 などの拡張文字エンコーディング標準が後に登場しました。
2.2.2 C 固有の文字
C 言語の特定の記号は、キーワード、区切り文字、演算子の 3 つのカテゴリに分類できます。
キーワード
特別な意味と役割を持ち、スペルが固定された単語。プログラミング言語内で特別な独立した機能を持ちます。たとえば、C 言語では、キーワードにはif
、、、、などが含まれますelse
。while
for
デリミタ
プログラム内のさまざまな部分またはステートメントの開始と終了をマークするために使用される 1 文字で構成される特殊な記号。
# ( ) [ ] { } , ' ” ; : \
オペレーター
1 つ以上の文字で構成される特殊な記号。数学演算、論理演算、代入などのさまざまな演算を実行するために使用されます。C 言語の演算子には、算術演算子 ( +
、-
、*
、など)、関係演算子 ( 、、/
など)、論理演算子 ( 、など) などが含まれます。<
>
==
&&
||
2.2.3 識別子
C 言語では、識別子は変数、関数、型などの名前を表すために使用される記号です。識別子は文字またはアンダースコアで始まる必要があり、文字、数字、アンダースコアを含めることができます。識別子では大文字と小文字が区別されます。
2.2.4 スペーサー
- C 言語では、スペース、行末記号、水平タブ、垂直タブ、フォーム フィードをスペーサーと呼びます。
- さまざまなシンボルやステートメントを区切るために使用されます。
- 識別子、予約語、リテラル定数で構成される隣接する 2 つの語彙単位の間には、少なくとも 1 つの区切り文字が必要です。
- 複数のセパレータを一緒に使用すると、1 つのセパレータと同等になります。
- 字句単位内では区切り文字は使用できません。エラーの例:
- 317 は 3 1 7 と書きます。
- <= は < = と書きます。
2.2.5 コメント
C 言語では、コメントはコードの説明に使用されますが、コンパイラはコメントの内容を無視します。C 言語は 2 つの注釈形式をサポートしています。
- 単一行のコメント:
//
行の先頭を使用し、//
行の末尾からの内容がコメントとみなされます。 - 複数行のコメント:
/*
で始まり、*/
で終わり、およびその間のすべてがコメントとみなされます。
2.3 データ
C 言語では、データはリテラル定数、定数識別子、変数に分類できます。
2.3.1 リテラル定数
リテラル定数は、コード内に直接表示され、変更されない固定値です。たとえば、整数定数 (123 など)、浮動小数点定数 (3.14 など)、文字定数 (「a」など)、文字列定数 (「Hello, World!」など) はすべてリテラル定数です。リテラル定数はコード内で直接使用されるため、変数に割り当てる必要はありません。
2.3.2 定数識別子
定数識別子は、固定値を持つシンボルを表すために使用され、一度定義されると、その値は変更できません。C 言語では、const
キーワードを使用して変数を定数として宣言できます。次に例を示します。
const int MAX_VALUE = 100;
定数識別子の値は宣言時に初期化され、後続のコードで変更することはできません。
2.3.3 変数
変数はデータを保存および表現するために使用されるシンボルであり、その型は必要に応じて宣言および定義できます。変数はプログラムの実行中に変更して値を割り当てることができます。
2.3.4 コード例
#include <stdio.h>
int main() {
// 字面常量
int num1 = 10; // 整数字面常量
float num2 = 3.14; // 浮点数字面常量
char letter = 'A'; // 字符字面常量
char string[] = "Hello, World!"; // 字符串字面常量
// 常量标识符
const int MAX_VALUE = 100; // 常量标识符
// 变量
int num3;
num3 = 20;
printf("num1: %d\n", num1);
printf("num2: %.2f\n", num2);
printf("letter: %c\n", letter);
printf("string: %s\n", string);
printf("MAX_VALUE: %d\n", MAX_VALUE);
printf("num3: %d\n", num3);
return 0;
}
出力:
2.4 ステートメント
C 言語では、ステートメントは特定の操作を実行するために使用される命令またはコマンドです。一般的なステートメントには、代入ステートメント、条件ステートメント、ループ ステートメントなどが含まれます。各ステートメントは;
セミコロン ( ) で終わります。
2.5 式
式は、特定の計算または操作を実行する一連のオペランドと演算子です。
2.5.1 式
式は変数、定数、演算子の組み合わせです。たとえば、a + b
と5 * x
は3.14 / y
すべて式です。
2.5.2 式ステートメントと代入
式ステートメントは、ステートメント全体の一部としての式を参照します。代入ステートメントは、変数に値を割り当てるために使用される特別な式ステートメントです。
2.5.3 コード例
#include <stdio.h>
int main() {
int a = 5, b = 3;
int result;
result = a + b; // 赋值语句,将a + b的结果赋给result
printf("a + b = %d\n", result);
result = a - b; // 赋值语句,将a - b的结果赋给result
printf("a - b = %d\n", result);
result = a * b; // 赋值语句,将a * b的结果赋给result
printf("a * b = %d\n", result);
result = a / b; // 赋值语句,将a / b的结果赋给result
printf("a / b = %d\n", result);
return 0;
}
2.6 シーケンシャル制御構造
逐次制御構造は、コードを記述した順序に従ってステートメントを順番に実行するプログラム制御構造です。シーケンシャル制御構造は条件判定やループがなく、最も単純な制御構造です。上記のコードは単純なシーケンス制御構造です。
2.7 データ型
2.7.1 データ型
データ型は、変数または式を表すために使用される型です。一般的なデータ型は次のとおりです。
int
:整数型float
:浮動小数点型char
:文字種double
:倍精度浮動小数点数型void
: 空の型
2.7.2 浮動小数点型
小数部を含む数値を表すために使用されます。C 言語では 2 つの浮動小数点型をfloat
使用できますdouble
。
2.7.3 整数文字型
整数および文字データを表すために使用されます。C 言語では、2 つの整数文字型をint
使用できます。char
2.7.4 混合演算種類の変換
C言語では、異なる型のデータを混在させて演算する場合、一定の規則に従って型変換が行われます。たとえば、整数と浮動小数点数に対する演算を実行すると、整数は自動的に浮動小数点数に変換されます。
2.7.5 コード例
#include <stdio.h>
int main() {
int num1 = 10;
float num2 = 3.14;
char ch = 'A';
double result;
result = num1 + num2; // 整数和浮点数进行混合运算,整数自动转换为浮点数
printf("整数和浮点数相加的结果:%.2f\n", result);
result = num1 + ch; // 整数和字符进行混合运算,字符自动转换为整数
printf("整数和字符相加的结果:%d\n", result);
return 0;
}
2.8 入出力
入出力とは、プログラムとユーザーまたは外部デバイスの間でデータを交換するプロセスを指します。
2.8.1 I/O
I/Oは、外部デバイスからのデータの読み取りまたは外部デバイスへのデータの出力 に使用される入力 (Input) および出力 (Output) 操作を指します。
2.8.2 キャラクター IO
キャラクタIOとは、キャラクタ単位での入出力操作を指します。C 言語では、getchar
およびputchar
関数を使用して文字 IO 操作を実行できます。
#include <stdio.h>
int main() {
char ch;
printf("请输入一个字符:");
ch = getchar();
printf("您输入的字符是:");
putchar(ch);
return 0;
}
2.8.3 フォーマット入力
形式入力とは、入力ソース (キーボードなど) から特定の形式でデータを読み取ることを指します。C言語ではフォーマット入力に関数を使用できますscanf
。
2.8.4 出力のフォーマット
形式出力とは、データを特定の形式で出力先(画面やファイルなど)に出力することです。C 言語では、printf
関数を使用して出力をフォーマットできます。
#include <stdio.h>
int main() {
int age;
float height;
printf("请输入您的年龄和身高(用空格分隔):");
scanf("%d %f", &age, &height);
printf("您的年龄是:%d 岁,身高是:%.2f 米\n", age, height);
return 0;
}