どうも、最近はそこそこジョギングしてるけどペースがなかなか元に戻らないはっし~だす。
投稿を忘れていてリミットの1週間経つところでした・・・
前回はVisualStudioをインストールしてHellowWorldプログラムの動作確認まで行ったと思います。
今回はVisualStudioの簡単な操作とHellowWorldプログラム(C言語)の説明をやっていこうと思います。
VisualStudioでプロジェクトを開く
VisualStudioでプロジェクトを開くには以下の3つのいずれかで開きます。
- プロジェクトのフォルダ配下にある「CProgram.sln」をダブルクリック
- VisualStudioを開き、「プロジェクトやソリューションを開く」から「CProgram.sln」を選択する
- VisualStudioを開き、「最近開いた項目」から選択する
VisualStudioの説明
まずは「ソリューションエクスプローラー」です。
前回も「HellowWorld.c」ファイルをソリューションエクスプローラーのCProgram配下の「ソースファイル」に追加したと思います。
とりあえずしばらくはこの「ソースファイル」にcファイルを追加して学習していきます。
ここに追加したファイルは「~\CProgram\CProgram\」フォルダの中に作成されていきます。
※他のプロジェクトで使用したファイルもここにコピーして 「追加」→「既存の項目」で追加できます。
次に前回はF5キーを押して実行しましたが、メニューの「デバッグ」→「デバッグの開始」になります。
メニューの緑の再生ボタンでも同じことができますが、「デバッグの開始」は以下の2つの処理を行っています。
- プロジェクトのビルド
- プログラムを翻訳(コンパイル)するための前準備(プリプロセス)
今回のプログラムは6行程度ですが、あらかじめ用意されているプログラム等を含めて翻訳する必要があるので、必要なプログラムを用意したり、プログラマーが見やすいように記述した部分を変換したりと翻訳前の下準備を行っています。 - CPUが理解できる機械語に翻訳する(コンパイル)
以前お話しした、 “0” と “1” の機械語にプログラムを翻訳する作業です。
※言語によっては機械語ではなく中間言語に翻訳したりもしますが、C言語では機械語に変換できると理解しておいていいです。
- プログラムを翻訳(コンパイル)するための前準備(プリプロセス)
- ビルドで生成した実行ファイル(exeファイル)をデバッグ実行
1の処理で「~\CProgram\x64\debug\CProgram.exe」ファイルが生成されています。これが実際にプログラムを実行するためのファイルです。それともう一つ「CProgram.pdb」ファイルも生成されていると思います。これはデバッグするための実行ファイルとプログラムコードを紐づけるためのファイルでブレークポイントを使用してデバッグする場合に必要になります。
プログラムの構文を間違えたりすると1の処理でエラーが発生しますし(構文エラー)、ビルドに成功しても実行時に想定していない挙動をすると実行時エラーが発生します。
プログラムの動作確認やバグ・エラーを確認する作業のことを「デバッグ」と呼びます。
とりあえずは以下の手順で今後の学習を進めていきますので把握しておきましょう。
- コードを記述する
- メニュー「ビルド」→「ソリューションのビルド」でビルドエラーが出ないか確認
- メニュー「デバッグ」→「デバッグの開始」もしくは「デバッグなしで開始」で実行確認
※F5キー・ctrl+F5キーでもメニュの緑の再生ボタンでもOK
今回のプログラム解説
#include <stdio.h>
int main(void)
{
printf("Hellow World !\n");
return 0;
}
#include <stdio.h>
#から始まる記述はプリプロセス処理(翻訳前処理)に必要な記述です。今回の記述は『「stdio.h」というファイルを含みますよ』という意味で、正確にいうとC言語のプログラム言語ではありません。
「stdio.h」は標準入出力(standard input/output)を使用するために用意された標準ライブラリです。
コンソールアプリでは文字表示しかできませんので、結果の確認で必ず画面表示を利用します。その画面出力(今回はprintfという構文というか関数)を使用するために必要になります。ちなみに「.h」ファイルのことをヘッダファイルと呼びます。
int main(void) { ~ }
この5行のひとまとまりを関数と呼び、mainという名前は一番最初に実行される関数名と決まっています。
関数については後の方で詳しくやるので、まずはこの記述は毎回記述するので覚えておいてください。
「{」から「}」までの間の記述は関数内の処理という事になり、一般的にインデント(tabキーで1段下げる)して記述します。
今回のmain()関数は以下の処理を行う関数という事です。
printf("Hellow World !\n");
return 0;
プログラムの言語なので、『文法』というものがあります。
C言語は『構造化プログラミング』という言語形態に分類され、固有の『文法』があります。これを『構文』英語でいうと『syntax』と言います。これはエラーメッセージなどでもよく見かけるので覚えておいてください。
printf(“Hellow World !\n”);
この1行が今回のメインとなる処理です。printfというのは関数(一連の処理をひとまとめにして名前を付けたもの)で、stdio.hに用意された関数になります。
printf()関数の機能は、受け取った文字列を画面に表示するというものです。
受け取った文字列とは()内に記述した “Hellow World !\n” です。
“\n” って表示されてなくね?って疑問を持った方もいるかと思います。いやいて欲しいです!
“\n” は通常の文字ではなく特殊な文字を表現する場合に使用します。この表現だと「改行」になります。
試しに “\n” を消して実行してみると1行少なくなるでしょう。
return 0;
この1行は “「0」を結果として関数を終了します。” という意味です。
※開始時に実行する関数なので、実質プログラムの終了のコードです。
実際に実行した画面にも「コード0で終了しました」という文言が出ていたはずです。
一連の処理を一纏めにした関数は結果を返すことができます。
つまり、関数とは機能の最小単位と考えていいと思います。
そして、C言語のプログラムは “関数(機能)を組み合ませてプログラムを組み上げていく” と理解していいでしょう。
今日のまとめ
VisualStudioでは コード記述 → ビルド → デバッグ という流れを細かく回して作業する。
以下の書き方をまず覚える。(詳細は後からでもいい)
※最後の行に空行を入れる事も忘れずに
#include <stdio.h>
int main(void)
{
/* ここにプログラムを記述 */
return 0;
}
C言語は関数を組み合わせて一つのプログラムとする。
自分で設定した期限を早くも破りそうでした・・・
次回はC言語についてもう少し深堀しようかと思います。 でわでわ