プロジェクトの作成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1:ファイル→新規作成→プロジェクト を選びます。
10


2:左側のタブより、Visual C++→全般→空のプロジェクト を選びます。名前(プロジェクト名)はなんでもいいです。
11


注:タブはドラッグ&ドロップで移動できます。
ドラッグ&ドロップ:クリックしたまま動かすこと
13


3:タブより、ソースファイル→追加→新しい項目 を選びます。
14


4:ウィンドウより、Visual C++→C++ ファイル(.cpp)→追加 を選びます。名前(ソース名)はなんでもいいです。
15


5:これで全ての準備は完了です
16


今、僕たちは空の"プロジェクト"(ソースファイルを統括するフォルダ)を作成し、
ソースコードを1つ追加したのです。まだなにも書かれていませんけどね。
今後はこのSource.cppというソースファイルに様々なプログラムを書き、プログラマーとしての技術を磨いていきます。

C言語は数ある言語の中でもトップクラスに難しいので、頑張ってついてきて下さい。

標準入出力の準備
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
まずは記念すべき第1行目です。


#include はインクルードと読み、他のファイルを読み込む機能です。
ここでは、stdio.hというファイルを読み込んでいます。
stdio.hには、標準入力(キーボード)と標準出力(ディスプレイ)を操作する関数(機能)があります。

問1:stdio.hをインクルードすると、キーボードと何を操作できるようになるでしょう?


このプログラムを実行しても、なにも起こりません。
なぜなら、標準入出力を操作する関数を使う準備をしただけであって、具体的な指示を出していないからです。

POINT
#include で、ファイルをインクルードできます。
インクルードするには、インクルード対象のファイルを<>で囲みます。


関数とは
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ここで皆さんには、方程式を思い出して欲しいです。
方程式と聞いて身構えた方もいるかもしれませんが、非常に簡単な概念なので、落ち着いて下さい。

17


問2:xに1を渡すと、yは何になるでしょう。


つまり、この関数はxに渡した値に1を足した結果をyとして出力するのです。

C言語では、関数をたくさん制作し、その関数へ値を渡し、返却された値を元に様々な処理を実行します。

例えば……

double sqrt(double x); // この関数は、xに渡した値の平方根を返します。

これはy = √xC言語で書いているだけです。

問3:sqrtに2を渡すと、何という値が返却されるでしょう。


それを踏まえた上で2行目以降も書いてみましょう。



int main(void){

}


を、main関数と呼びます。
そうです、先程の関数と全く同じです。
この関数はなんらかの値を渡すと何らかの値を返します。

値を渡すには()の中に渡したい値を指定します……が、
今回は渡したい値がまだないので、voidと書いておきます。
voidとは、渡す値がないことを意味します。

この関数はなんらかの値を返すのでしたね。
ここで返す値の属性を決める必要があります……が、
今回は返したい値がまだないのですが、とりあえず int と書いてみます。

この部分です→ int ← main(void)

intとは、整数型のことを意味し、整数の値(0, -1, 2など)を返すことを意味します。

さて、整数の値を返すと宣言したので、返すようにしておきましょう。
関数から値を返すには、return;を使います。



とりあえず0でも返しておきましょうか。

さてこれで、なんの値も受け取らず、0を返す関数ができました。

このmain関数を数学的に書くとこんな感じです。

y = 0

xの入力を一切受け付けず、ただyへ0を出力するだけです。

C言語の処理手順
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cの処理手順は非常にシンプルです。ルールはたった2つしかありません。

・1行目から順序よく実行する。
・関数を実行する時はmain関数が一番最初に実行される。

これだけです。
つまりこのプログラムは、



となります。

また、main関数は{から}までで1セットです。
そして、関数の中でも上から順序よく実行されるルールは適用されます。

更に、関数はreturn文にぶつかると値を返却して処理を終了します。

つまりこのプログラムは、
#include // ①stdio.hをインクルードし、キーボードとマウスの操作準備をする。
int main(void) { // ②main関数起動。なにも値を渡さない。
// ③なにもしない。
return 0; // ④0を返却して、関数を終了する。
} // ここまでがmain関数であることを意味している。

とこのような順序で動いているのです。

main関数から返却された値は、OSに渡されるので僕たちが見ることはできません。
ですが、0が返却された時はmain関数の正常終了を表しているので、OSとしても安心です。
main関数が0以外の値を返した時は、OSはmain関数が異常終了したとみなし、しかるべき措置を取ります。

文字列の出力
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
それでは本題へ入りましょう。

今回の講義ではhello worldという文字列を画面へ表示することが最終目標です。
その為には、printfという関数を使います。

int printf(const char* restrict format, ...);


なんだかややこしいですが、安心して下さい。
()の中身は要するに文字列を渡して下さいと書いてあるのです。

この関数は、文字列を渡すと標準出力(ディスプレイ)へその文字列を出力します。
出力が成功すると、出力した文字数を返却します。

それでは、hello worldと画面に表示するプログラムを見てみましょう。



このプログラムは、main関数の中で、printf関数を実行し、画面へ文字列を出力した後、main関数から0を返却して処理を終了します。
プログラムはmain関数から実行される。
main関数が終了するとプログラムが終了する。

つまり、main関数が実行されている中で、また別の関数を実行すれば、新しく処理をその関数に移すことができるのです。

このように、main関数の中に様々な処理を書いて、なんらかの仕事をCへやらせます。
つまりmain関数の働きは、プログラマ次第ということです。

それではこのプログラムを書き写し、ローカル Windows デバッガーというボタンを押してプログラムを実行して下さい。
18

尚、Cはフリーフォーマットなので、改行やスペース、タブなどは自由に書き込んで構いません。
例えば、こんな風に書いてもOKです。



ただし、in t などの書き方は許されていません。単語の間は空けないようにしましょう。
また、intmainなど、単語を繋げると意味が変わってしまうので、単語と単語を繋げるのもやめましょう。
また、プログラムは全て半角で書きましょう。全角では全く動きませんのでご注意下さい。

おや……なにか黒い画面が一瞬表示されたような気がしますね。
そうです。このプログラムは短すぎて、hello worldを出力した後、main関数がすぐに終了し、
プログラムそのものが終了してしまうのです。

簡単にプログラムが終了しないように、下記の画像の矢印部分をクリックして、赤い丸を作って下さい。
19

これはブレークポインタといって、その部分に処理が来ると、一時停止することを意味します。
つまり、return 0;が実行される前に一時停止するということです。

ブレークポインタを使用して画面にhello worldが出力されたかを確認したら、
下記の矢印部分をクリックして、処理を継続して下さい。
20

処理を継続すると、return 0;が発動してmain関数が終了します。

これにて画面上へ文字列を表示するプログラムの完成です。

printfの戻り値
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
なお、このプログラムでは出力に成功した文字数を有効活用していません。
printfの戻り値のこと。printfは成功すると出力した文字数を返却する。
が、こういうことはよくある話で、printfなんかは画面へ文字列を表示することが仕事の主であり、返される値はスルーすることが多いです。スルーしたい時は、特別なことをする必要はありません。

printfで返される値を有効活用する方法は、後々やります。

今回は見よう見まねでプログラムを書いてもらいましたが、次回は
C言語の文法と基礎について詳しく解説します。

1つアドバイスなのですが、デバッグを恐れないで下さい。エラーが出た時は成長のチャンスだと思って喜んで下さい。また、構文の書き方を覚える為に口に出して記述しても構いません。
その内日本語と同じように扱えるようになるので、その時までは頑張って下さい。

お疲れ様でした。これで今日からあなたもCプログラマーです。