第一回-03 初めての C/C++ プログラミング
本ページでは、paiza.IO が提供する C++ 用オンラインコンパイラを用い、初めてのコンソールアプリケーションの作成を体験する。
まず、ブラウザで下記のリンクを開いて欲しい。
以下のようなページが開くはずである。このページは次回以降も毎回用いるので、お気に入りやブックマークに登録し、
すぐに開けるようにしておこう。
なお、「オンラインコンパイラ」と言ったときの「コンパイラ」という用語の正式な意味は次回に解説するが、
今回は「書いたプログラムをコンピュータ上で実行出来るように変換するもの」がコンパイラだと思っておこう。
それをブラウザで行えるようにしたものが「オンラインコンパイラ」というわけである。
今回目指すプログラムは、
- コンソールに「はじめてのコンソールアプリケーション」と表示して改行するプログラム
である。
そのために実行する内容をまとめたのが下図である。
箇条書きでまとめると以下のようになる。
- 1. 言語が C++ であることを確認 (通常そうなっている)
- 2. コンソールに文字を表示するための1行のプログラムを書く (後で解説)
- 3. 実行ボタンを押す
- 4. 結果が表示されるので確認する
問題となるのは「2. コンソールに文字を表示するための1行のプログラムを書く」の部分であろう。
今日学ぶことの本質はこの1行だけなのであるが、ここをおろそかにすると次回以降の演習でつまずくことになりかねない。
以下で詳しく解説していくのでしっかりと理解して欲しい。
まず、プログラムを書きはじめる前の枠組みは以下のようになっている。
色が違うので同じに見えないかも知れないが、文字で書かれた内容は同じである。今後もこの書き方をするので慣れて欲しい。
#include <iostream>
using namespace std;
int main(void){
// Your code here!
}
それぞれの行の意味を追記すると以下のようになる。
#include <iostream> // 画面に文字を表示する機能を読み込む
using namespace std; // 画面に文字を表示するために用いる std::cout を cout と略記できるようにする。
int main(void){ // 関数という枠組みの始まり
// Your code here! 「//」で始まる行は、「コメント」と呼ばれメモを書くのに使われる。
// ここに皆さんのプログラムを書くことになる。
// 空行は何行あけてもOK
} // 関数という枠組みの終わり
細かな内容が多いが、皆さんはまず、
- 元からある行は基本的に消さない (ただし「// Your code here!」の行だけはコメントなので消しても問題ない)
- 皆さんがプログラムを書くのは「int main(void){」の行と「}」の行の間 (関数という枠組みの内部)
の二つをしっかり覚えておいて欲しい。そうすれば、無用なトラブルを避けることができる。
さて、どこにプログラムを書くべきか分かったところで、書くべき一行を紹介する。
下記の通りである。
cout << "はじめてのコンソールアプリケーション\n";
上記はコピーできるようになっているので、コピーして paiza.IO に貼りつけることで実行まで問題なく行える。
なお、コピーは、コピーしたい文字をマウスでなぞってキーボードでCtrl-c (Ctrlキーを押しながらcキーを押す)、
貼り付けは、貼り付けたい位置でキーボードでCtrl-v (Ctrlキーを押しながらvキーを押す)である。
しかし、それはどうにもならなくなったときの最後の手段としてとっておき、まずはこの一行を自分で正しく書くことを目指してみよう。
この1行でまず注意すべきことは、
ということである。半角文字と全角文字について補足すると下記の通りである。
- 半角文字: 文字の横幅が縦幅の半分という意味であるが、ここでは英語で用いられる文字や記号のことを指し、a-z, A-Z や !"#$%&\; などの記号のこと。
- 全角文字: 文字の横幅が縦幅と同等という意味であるが、ここでは日本語文字のこと。
注意しなければならないのは、単純に英語の文字や記号と言っても、下記のように半角と全角の区別があるということである。
もちろん、プログラミングで用いるべきなのは半角の英語文字や記号である。
- 半角の英語文字や記号: abcdefg … ABCDEFG … !"#$%&\;
- 全角の英語文字や記号: abcdefg … ABCDEFG … !”#$%&¥;
そして、書くべき1行に関して、半角文字と全角文字をどの位置で書くべきか注釈を入れたのが下図である。
すなわち、コンソールに表示したい「はじめてのコンソールアプリケーション」のみが全角文字で、
それ以外は全て半角文字で書く、ということである。
それは、上図中の「半角/全角切替え」の位置で英語入力と日本語入力を切替えることを意味する。
Windowsならば 「半角/全角」キーを押すべきところである。
このように、プログラミングを学ぶとき、自分が入力する文字の一文字一文字に対して
細やかな心配りが必要となる。
実際のところ、このような心配りが得意な学生と苦手な学生がいるのが現実であろう。
最近は「誰でもプログラミングを習得できる」といううたい文句の学習教材があるが、
このような細やかな心配りが必要な点で、向き不向きはあると個人的には思う。
さて、「はじめてのコンソールアプリケーション」という日本語の直後に、という二文字がある。
これは、「ここで改行する」ということを意味し、「改行コード」と呼ばれる。
改行コードはキーボードでどう入力すれば良いだろうか?
答えは以下の通りである。
→
これは、と入力する時のキーボード入力の方法である。
なぜこれで良いかというと、日本語の OS を使っている限り、
(バックスラッシュ) と (円マーク) は同じものを表すと思って良いからである。
だから、paiza.IO 上で と表示された行をコピーして Word に貼り付けると、
下図のように、 に変化する。
すなわち、 (バックスラッシュ) と (円マーク) は、表示する環境や用いるフォントにより見え方が変わるだけで
実際には同じものだということである。
そのような訳で、改行コードは、 であれ であれ、下記の入力方法で構わない。
→
さて、皆さんが記すべき一行に含まれる記号の意味をまとめると以下のようになる。
- cout : 専門用語では「標準出力に対する出力ストリームオブジェクト」と言うが、ひとまず文字の出力先であるコンソールのことと思っておこう
- << : 専門用語では「挿入子」と言うが、ここでは「コンソールである cout に文字を流し込む機能を持つ」と思っておこう。
- "文字列" : コンソールに表示したい文字は、半角の二重引用符「"」で囲う必要がある。
なお、文字が複数連なったものを「文字列」という。
- \n : 改行コード。二重引用符「"」の内側で用いると、改行の意味を表す。
- 「;」: C/C++ では、命令の末尾に必ずセミコロン「;」を記す必要がある。
そして、一行入力した後の流れを示した図を再掲したのが下図である。
以下のように「はじめてのコンソールアプリケーション」と画面下部に正しく表示されるか、皆さんも試して欲しい。正しく表示されただろうか?
どうにもならなくなったら、上に提示した模範例をコピーして貼り付けても良いだろう。
さて、書くべき一行を自分で入力した場合、「実行 (Ctrl+Enter)」ボタンを押したときにエラーが出ることが多いだろう。
はじめてのプログラミングでは、書くべき文字を書き間違えたり、必要な記号を入力し忘れることが多いからである。
典型的な例を下図に挙げる。
画面上部が赤色になり「Compile Error」と表示されていることにより、エラーの存在がわかる。
このような場合、画面下部の「コンパイルエラー」という項目を見て原因を知り、エラーの原因を取り除かねばならない。
ただし、この「コンパイルエラー」はある程度プログラミングに慣れているか、英語を正しく読みとれないと理解できないことが多い。
上の例の場合、「error: expected ';' after expression」とあり「表現 ("..." のこと) の後に ';' が期待されている」という意味なので
';' の書き忘れがエラーの原因であることがわかる。
とは言え、今回は1行だけのプログラムであるので、エラーメッセージの意味を読みとれなくても、
書いたプログラムを注意深く見直せば原因を見付けることは難しくないであろう。
エラーとは異なるものに「警告」がある。
下の図では「Success」と表示されており、「出力」欄に「はじめてのコンソールアプリケーション」と正しく表示されているので、一見問題なさそうに見える。
しかし、「コンパイルエラー」と書かれた欄が現れているので、何らかの問題があることがわかる。
このような場合に表示されるのは「エラー」ではなく「警告 (warning)」である。
「警告」が出ても「出力」は正しく表示されるので、「警告」は見落とされることが多い。
しかし、プログラミングを本気で習得したいと思ったらこのような「警告」を見落とさず、
「警告」が出ないプログラムを書く癖を付けた方が良い。
今回の例における警告の原因は下図に示されているが、
私が追記した赤い文字を読まずに原因を図から読みとれる学生はまれであろう。
警告の原因は、「半角の空白を書くべきところに全角の空白を書いてしまっていること」である。
空白はスペースともいい、横に長いスペースキーで入力するものである。
日本語入力中にスペースキーを押せば全角の空白となるし、
英語文字入力中にスペースキーを押せば半角の空白となる。
参考のために、以下に全角の空白と半角の空白をそれぞれ表示する。マウスでなぞって色を反転し、違いを確認してみよう。
- 全角の空白→ ←全角の空白
- 半角の空白→ ←半角の空白
さて、paiza.IOでは上図に示したように、半角の空白を書くべきところに全角の空白を書いてしまっても、
警告が表示されるだけで正しく実行できてしまう。
しかし、環境によっては警告ではなくエラーが出てプログラムは実行されない。
例えば、オフラインの講義で例年用いている Visual Studio では、半角の空白を書くべきところに全角の空白を用いるとエラーとなる。
Visual Studio はプロフェッショナル向けのプログラム開発環境でもある。
このエラーを自力で解決できない学生は例年実に多い。
そのような訳で、本気でプログラミングを習得したい学生は「半角空白と全角空白の違いに常に気を配る」ことも重要である。
←コンソールアプリケーションとGUIアプリケーション
/
課題→
オンラインコンパイラで C/C++ を自習しように戻る