はじめに
前回の投稿の最後に、プログラミング言語の習得難易度について触れました。
C言語の難易度は高いと言われていますが、現在使われている全ての言語のベースになっていると言っても過言ではないため、まずは初級編から入ります。
長くなってしまったので、前編後編に分けますね。
さぁ、プログラミングライフのはじまりです☺️
環境構築
こちらの投稿で、開発環境としてVSCodeのインストールまで行いました。
が、この状態ではソースコードを書くまでで、ビルドや実行ができません。
なので、VSCodeに対してC言語のビルド・実行環境を整えます。
VSCodeの拡張機能で「C C++」で検索すると、VSCode用のC/C++コンパイラが見つかるので、インストールします。
加えて、CodeRunnerもインストールします。
C言語 -初級(前編)-
C言語の実行環境は整いましたね✌️
ではここから、段階を踏んでC言語に触れていきましょう。
基本構文
まずは、「Hello World」という文字を画面に表示する、単純なプログラムから書いてみます。
適当なフォルダに、sample1.cというファイルを作成し、ファイル内に以下コードを貼り付け、ファイル保存します。
#include <stdio.h>
int main(void)
{
printf(“Hello World\n”);
return 0;
}
VSCodeの画面右上の右三角マーク(画像赤丸)にくっついている下矢印をクリックすると、メニューに項目が3つあります。Run Codeをクリックします。
すると、VSCodeの画面下にターミナルが開き、Hello Worldの文字が表示されます。
では、ソースコードを1行ずつ見ていきましょう。
#include <stdio.h>
#includeは、このソースコード内で使いたい機能を、外部から取り込むときに使用する命令です。
「stdio.h」というヘッダーファイルをインクルードしています。
Standard IO(標準入出力)機能のことで、今回の場合はprintf関数を使用するために、stdio.hが必要となります。
int main(void)
{
}
1行ずつと言いつつ、3行の説明です😅
ここではmain関数を作成しています。
C言語では、処理の最初はmain関数から始まる、という決まりがあるので、関数1つだけ作るならmain関数です。
関数は以下のように定義します。詳細は別章で説明します。
戻り値の型 関数名 (第1引数, …, 第n引数)
int は戻り値の型、void は引数無しを表します。
{ } は処理の塊を表します。C言語では、どこからどこまでが関数としての処理なのかを明示するため、{ } で囲むルールになっています。
printf(“Hello World\n”);
printf関数で、( )内のデータを画面(ターミナル)へ出力します。
” “で囲まれた文字列が画面に表示されましたね。
\n は改行を表します。付けなくても問題ありませんが、付けた方が見やすくなります。
最後の ; は処理の終端を表します。関数には不要ですが、関数内部の処理には必要です。
return 0;
関数の戻り値です。今回は戻り値が何であっても問題ないため、仮に0を返すようにしています。
main関数の戻り値をintで定義したため、数値データを返していますが、戻り値がvoidであればreturnは不要です。
以上、単純な画面表示のプログラムでした😄
補足
ソースコードに使用できる文字には制限があり、全角文字は使用不可です。
英字から始まる半角英数字と半角記号のみ使用可能です。
演算と変数
どのプログラミング言語も、四則演算のような単純計算はもちろん、数学的な複雑な計算も可能です。
単純な演算であれば演算記号を使い、より複雑な演算はライブラリ(関数)として用意されています。
加算:+
減算:-
乗算:*
除算:/
剰余:%
VSCodeで試してみましょう。
main関数の中のprintfを、以下のように変更してみてください。
printf(“1 + 1 = %d\n”, 1+1);
printf(“2 – 2 = %d\n”, 1-1);
printf(“3 * 3 = %d\n”, 3*3);
printf(“4 / 4 = %d\n”, 4/4);
printf(“5 / 4 の余り = %d\n”, 5%4);
実行すると、ターミナルに計算結果が表示されましたね。
1 + 1 = 2
2 – 2 = 0
3 * 3 = 9
4 / 4 = 1
5 / 4 の余り = 1
printfの””の中にある %d は、, のあとに続く値(変数や演算結果)を表示する命令です。
変数とは、値を入れておく箱のようなものです。
変数は使用する前に宣言が必要で、以下のようにします。
型 変数名;
int a;
char b;
変数名は何でも良いですが、そのファイルの中で全く同じ名前を複数宣言することはできません。
型は代表的なものは以下のような種類があります。用途にあわせて、適切な型を選択しましょう。
型 | 説明 | 値の範囲 |
void | 型なし | – |
char | 文字型 | -128〜127 |
int | 整数型 | -2147483648~2147483647 |
float | 単精度浮動小数点型 | 1.175494e-38~3.402823e+38 |
double | 倍精度浮動小数点型 | 2.225074e-308~1.797693e+308 |
この他、short と long があります。
型の前にくっつけることで、型の範囲を変化させることができます。
short int a; //int型の半分
long int b; //int方の倍
変数には、演算結果を代入することができます。
先ほどのprintfの例を、変数を利用する方法に書き換えてみます。
int a; //int型の変数aを宣言
int b; //int型の変数bを宣言
int c; //int型の変数cを宣言
int d; //int型の変数dを宣言
int e; //int型の変数eを宣言
a = 1 + 1; //1+1の結果を変数aに代入
b = 1 – 1; //1-1の結果を変数aに代入
c = 3 * 3; //3*3の結果を変数aに代入
d = 4 / 4; //4/4の結果を変数aに代入
e = 5 % 4; //5%4の結果を変数aに代入
printf(“1 + 1 = %d\n”, a); //変数aに入っている値を表示
printf(“1 – 1 = %d\n”, b); //変数bに入っている値を表示
printf(“3 * 3 = %d\n”, c); //変数cに入っている値を表示
printf(“4 / 4 = %d\n”, d); //変数dに入っている値を表示
printf(“5 / 4 の余り = %d\n”, e); //変数eに入っている値を表示
実行すると、先ほどと同じ結果になったと思います。
1 + 1 = 2
1 – 1 = 0
3 * 3 = 9
4 / 4 = 1
5 / 4 の余り = 1
以下のように、変数どうしを演算することも可能です。
int a = 1; //変数宣言時に値を入れておくこともできる
int b = 2; //変数宣言時に値を入れておくこともできる
int result;
result = a + b; //変数resultに入る値は3
注意点として、変数は宣言しただけでは何の効果もありません。値が何も入っていないからです。
不定な値の変数を演算に使用した場合の演算結果は、当然不定になってしまうので、使用する前に値を入れておくようにしましょう。
定数
変数と似たような仕組みとして、定数というものがあります。
以下のように使います。
#define 定義名 定義値
#include <stdio.h>
#define TWO 2
#define TEN (2*TWO)
int main(void)
{
int a = 2;
int result;
result = 2 * TEN;
printf(“TWO = %d\n”, TWO)
printf(“2 * TEN = %d\n”, result);
return 0;
}
事前に定義した定数を計算に使用し、その結果をdefine値とすることもできます。
結果はこのようになりました。
TWO = 2
2 * TEN = 20
さいごに
いきなり多くを詰め込んでも覚えきれないので、前編はここまでとします。
サンプルコードをいくつか紹介しましたが、「こうしたらどうなるんだろう🤔」と手を動かしていろいろ試したほうが、より身につきます。
それでは次回、後編でお会いしましょう😊
コメント