FC2ブログ

C++講座④ VC++2010の使い方

 前回は「C言語は関数で大きな処理をまとめたり、構造体でいくつかの関連した情報をまとめたりすることで、人にとって分かりやすくなった高級言語である。そしてC++はモノ(オブジェクト)の概念からそれをさらに分かりやすく改良したものである」というようなことを学びましたね。
 今回から実際のプログラミングに入っていきます。とはいえ今回プログラムの解説は全くなしで、有名な無料のコンパイラ(C++を機械語に翻訳し、アプリケーションをつくるソフト)であるマイクロソフト社のVisual C++ 2010 Express Editionの基本的な使い方を説明します。
 ↓やっぱ無料っていいですね。昔は10万とかしたみたいなんで、MS社に感謝です↓


 おそらくこの講座をご覧の方のほとんどは、コンパイラを持っていないであろう。なのでここで、無料のコンパイラを紹介する。ここで紹介するのは、マイクロソフト社の「Visual C++ 2010 Express Edition」である。これを使うにはまず、Visual C++ 2010 Express Edition(以下、VC++と略称する)をダウンロードして、インストールする。(おそらく、Visual C++ 2010でグーグル検索して一番上にあるサイトに入るとそれがあるので、その中でVisual C++の枠を探し、インストールとかダウンロードとか書いてある場所をクリックすれば、あとはむこうが示す手順どおりに進めるだけでよいはずである)
 インストールができたらさっそくプログラムを作ってみてほしい。プログラムを作るにはまず、プロジェクトを作る。プロジェクトが何者なのかはここでは記述しないが、これがないとVC++でのプログラミングができない。プロジェクトをつくるには、以下の手順で進めればよい。

1、最初のページ(スタートページ)の「新しいプロジェクト」をクリックする
2、新しく出てきたウィンドウの「Win32コンソールアプリケーション」をチェックし、「プロジェクト名」につくりたいアプリケーション(実行可能なプログラム)の名前を入れて、OKをクリックする。なお、「ソリューションのディレクトリを作成」がチェックされてる(レがついてる)場合は、チェックをはずす。
3、新しく出てきたウィンドウの「次へ」をクリックする。
4、「アプリケーションの種類」を「コンソールアプリケーション」に、「追加のオプション」を「空のオブジェクト」に設定して、「完了」をクリックする。

 次に、ソースファイルを作る。ソースファイルは以下の手順で作る。

1、プロジェクトをつくったあと、その画面のどこかに「ソースファイル」と書かれた部分がある。その「ソースファイル」を右クリックし、「追加」→「新しい項目」を選択する。
2、新しく出てきたウィンドウの「C++ファイル」をチェックして、「名前」にソースファイルの名前を入れ、「追加」をクリックする

 では、ソースファイルにプログラミングしてみる。試しに、以下のソース(プログラムの内容のこと)をコピーして、ソースファイルに張り付けていただきたい。
#include <iostream>
using namespace std;

int main(){
cout << "Hello, World!" << endl; //文字を出力

getchar(); //入力待ち
return 0; //アプリケーション終了
}
 では、このプログラムをビルドする。ビルドとはほとんどコンパイルと同じような意味なので、まったく同じものだと思って差し支えないだろう。ビルドするには画面のどこかに再生ボタンのような緑色の右向き三角のボタン(以下、再生ボタンと呼ぶ)があると思われるので、それをクリックすればよい。それで作ったプログラムがビルドされ、アプリケーションが作成される。なお、このプログラムはただ画面に「Hello, World!」という文字を表示するだけの単純なプログラムである。
 プログラムが出来たと思ったら、まず再生ボタンの右側の項目を「Debug」にしてビルドする。このようにして自作プログラムをデバッグするのである。デバッグとはバグを探すことであり、一般には実際に実行してみてバグがないか確かめることである。デバッグして自作プログラムにエラーがないことが分かったら、再生ボタンの右側の項目を「Release」にしてビルドすればアプリケーションが作成される。作成されたアプリケーションはおそらくドキュメントにあるであろう「Visual Studio 2010」というフォルダの中の「Project」というフォルダの中に、プロジェクト名と同じ名前のフォルダが入っているはずなので、そのフォルダの中の「Release」フォルダの中にアプリケーションがあるはずである。なお、アプリケーションは.exeという拡張子を持つファイルである。
 なお、バグには大きく分けて2種類ある。ひとつは文法上のミスなどでプログラムがコンパイルできないバグである。もうひとつはコンパイルでき実行できるが、プログラムが思った通りに動作しないバグである。前者のバグはコンパイラが~行目にエラーがあると教えてくれるため、発見しやすい。しかし後者のバグは実際にプログラムが動くため、どこにバグがあるか特定するのは前者に比べ難しいであろう。


 コメントで教えて下さった親切な方がいらっしゃったので追記です。
 プログラム初心者の方は上で述べたように2種類のバグを意識してもらえば十分です。僕もそのバグしか意識していません。
 ただ、プログラムによっては『「ライブラリ等の設定ミス」っていうバグ』もあるそうです(例:LNK2005)。MFC等を使う人は気をつけた方がよさそうです(ちなみに、僕は全くそういうのを使っていません)。
 ついでに、もう1つ追記します。僕が作ったアプリケーションはここからダウンロードできるので、興味があったら試しに実行してみてください。ではまたノシ
スポンサーサイト



C++講座③ C言語とC++

 前回は、「実行可能なプログラムは機械語で書かれているが、その機械語に近い言語を低級言語、その機械語からあれこれ改良されて人に分かりやすくされたものを高級言語と呼ぶ。また、高級言語を機械語に翻訳する方式は二つあるが、そのうちのコンパイラ方式では翻訳することをコンパイルするといい、翻訳機に値するプログラムをコンパイラと呼ぶ」という感じでしたね。長いですね、すみません。
 ↓というわけで、今回はここで講座するプログラミング言語の話です。↓ 


 高級言語の中でも最も人気が高いのがC/C++である。C/C++とはすなわち、C言語C++のことであるが、これらのプログラミング言語は文法が同じであるため同じ枠組みのプログラミング言語としてとらえられている。今回はこのC/C++とはどのような言語なのかを知ってもらうため、C/C++の特徴について説明する。まず、C言語の特徴について説明する。
 C言語の特徴はいろいろあるが、個人的には同じ処理や大きな処理を『関数』として一つの処理にまとめたり、さまざまな変数を『構造体』という形で一つにまとめることで、ソースファイルを見やすくできることがC言語の一番の特徴だと思っている。ソースファイルとは、プログラミング言語で書かれたコンパイル前のファイルのことで、これをコンパイルすると実行可能なプログラムが出来上がる。C言語の特徴の話に戻すが、分かりにくいので関数と構造体を身近な例でたとえてみる。まず関数についてであるが、たとえば自分がある打ち上げの幹事になったとする。幹事は店を探したり、予約をしたり、日時を決めたり、参加者に連絡をしたりと、やることがいろいろある。さらに、仕事のレポートの締切日も近いとする。レポートを作るにしても、レポートに書く材料を集めたり、タイトルを決めたり、構成を練ったり、練った構成からレポートを実際に作成したりと、やることがいろいろある。ここで、

 打ち上げの店を探す → 予約をする → 日時を決める → 参加者に連絡する → レポートに書く材料を集める → タイトルを決める → 構成を練る → 練った構成からレポートを作成する

と表現するよりは、

 幹事の仕事をする → レポートを作る

とした方が見やすいであろう。このように、いくつかの処理をひとまとめにしたもの関数なのである。
 また、構造体についてはたとえば、リンゴやみかん、ももやレモンなど、いろいろな商品があったとする。この商品はそれぞれ、商品名・値段・産地といった情報を持っている。「情報」というと分かりにくいかもしれないが、ここでいう情報とはその商品がどういうものなのかを表した情報のことである。たとえばリンゴであれば、

 商品名:リンゴ
 値段 :100円
 産地 :青森県

といった情報を持っていることになる。しかし、これらの情報(商品名・値段・産地の3つ)をそれぞれ別々に管理していては、必要な情報と他の情報を取り違える可能性がある。たとえば、リンゴの値段を知りたいのに、間違えてみかんの値段を見て、その値段でリンゴを販売したら大問題であろう。なので通常、これらの情報はひとまとめにして管理されるであろう。このような仕組みを利用したのが構造体である。
 関数や構造体は後ほど詳しく説明するので、ここではそれらをアバウトに理解しておけば(大丈夫だ、)問題ない。ここで私が述べたいのは、C言語がどのようにわかりやすいのかということである。なお、関数や構造体のような機能を持つプログラミング言語を構造化プログラミング言語という。
 また、コンパイル(C言語を機械語に翻訳)する際にライブラリファイルをリンクするのもC言語の特徴だと思われる。ライブラリファイルとは、ある命令がどのような命令なのかという情報が入っているファイルである。なぜこのようなことをするのかというと、プログラマー(プログラムをする人)がすべてのプログラムで使う命令をいちいち書く手間を省くためだからである。たとえば、画面に文字を表示する命令はほとんどのプログラムで用いられるが、いちいちその命令をプログラムに書かなければならないというのは非常に面倒である。
 ここまで述べたのがC言語の特徴である。ここからはC++の特徴を説明する。
 C++はオブジェクト指向プログラミング言語である。オブジェクト指向プログラミング言語とは、人間のものの考え方から生まれ、より使いやすいプログラミング言語を目指して作られたプログラミング言語である。人は複雑な物事を一つのもの(オブジェクト)としてまとめるようとする。上記の関数や構造体で挙げたたとえを見れば、人がそのような考えをもつというのが分かるだろう。そのような観点から構造化プログラミング言語を改良したものがオブジェクト指向プログラミング言語なのである。
 オブジェクト指向プログラミングの特徴を利用したプログラミングは便利であるがやや難しいため、この講座では後回しにする。ちなみに私はこれらの特徴のほとんどを利用していない。つまり、普段私はほとんどC言語の機能だけでC++のプログラムを作っているのである。それでもC++にこだわるのは、C++のプログラムはC言語のプログラムと比べて簡単に書けるからである。たとえば、C言語の命令は以下のようにC++に直せる。




C言語C++
int main(void)int main()
printf("半径%dの円の面積は%dだ\n", r, s);cout << "半径" << r << "の円の面積は" << s << "である" << endl;
scanf("%d", &r);cin >> r

『printf』の部分はどこが簡単なのかはいまいち理解できないと思うが、これはオブジェクト指向を利用して分かりやすくなっているのである。また、他の二つはオブジェクト指向と言えないはずだが、明らかにC++の方が簡単であることが分かるであろう。このようにC++の方が使い勝手がいいので、私はC++を使っているし、この講座でC++を教えようとしているのである。


 ……今回はこの辺でで終わりです。僕も最初はC言語で講座をつくろうと思ってたんですが、C++で書いたほうが楽だし便利だし、自分自身C++を学んだらC言語もできたから問題ないかなと思いました。将来C言語でプログラミングしようとしている人に言いますが、一応C++を学んでおいたほうがいいですよ。すべての機能を使うことはないと思いますが、すごく便利な機能があったりするはずです。
 次回からプログラミングですが、次回はコンパイラであるVC++2010をある程度使いこなせるようにするための講座になるはずなので、実質プログラミングはその次からになりそうです。では今回はこの辺でノシ

C++講座② 低級言語と高級言語

 持病(5月病)持ちですが、がんばって2日連続で更新できました!
 前回は、「プログラムとは命令を書き連ねたものであり、CPUがその命令を一つ一つ順番に実行していくことでプログラムが動くのである」ということを学びましたね。
 ↓というわけで、今回はプログラミング言語についてです↓


 プログラムはCPUが命令を読み取ることで動くが、この命令は2進数で書かれたものである。
 2進数とは、0と1のみで表される数のことである。われわれが使用する数字は0から9までの10個の数字で表わされるので、10進数と呼ばれる。10進数では、1の次は2、2の次は3と変化し、9の次は位が1つ上がって10になる。しかし、2進数は0と1でしか表せないため、2進数だと1の次は10、10の次は11、11の次は100というように、1に1を足すだけで位が1つ上がってしまう。そのような数を2進数と呼ぶのである。
 コンピュータが扱うデータはすべて2進数である。その方がコンピュータにとって都合がいいのである。なので、CPUが読みとる命令もすべて2進数で表されたものである。このように、2進数だけで表わされるプログラミング言語(プログラムに使う言語)機械語と呼ぶ。
 しかし2進数で表された命令でのプログラミング(プログラムを作ること)はとても難しいものである。なぜなら機械語は、

0111110000001000000000101010011010111111……

というように、2進数だけで表わされたものだからである。
 この分かりにくさを改善するため、アセンブリ言語というものが開発された。アセンブリ言語は、機械語の命令部分を分かりやすい文字に置き換えたものである。たとえば、ある値を加えるという命令をADDとする(例:「ADD 6」とすると、6を加える命令になる)というようなものである。これは実際にマイコンなどで用いられたりする。しかし、機械語は1つ1つの命令が細かいため、機械語を置き換えただけのアセンブリ言語も1つ1つの命令が細かいのである。なので大きい(命令がたくさんある)プログラムになると、アセンブリ言語でのプログラミングは難しいのである。
 機械語や機械語に近いプログラミング言語を低級言語と呼ぶ。それに対し、人間に分かりやすく改良されたプログラミング言語を高級言語と呼ぶ。
 高級言語にはC言語やC++、Basic、Javaなどがあるが、それらは人間に分かりやすくしてあるがCPUはその言語で作ったプログラムを直接読み取ることはできない。そのプログラムを実行するには、高級言語を機械語に翻訳しなければならないのである。翻訳の形式にはコンパイラ形式とインタプリタ形式の2種類ある。インタプリタ形式はプログラムを起動するたびに機械語に翻訳して、プログラムを実行する形式である。それに対し、コンパイラ形式はプログラムを作るときに機械語に翻訳する形式である。なお、C++でのプログラミングにはたいていコンパイラ形式が用いられる。また、コンパイラ形式のプログラムを機械語に翻訳することをコンパイルといい、翻訳を行うプログラムをコンパイラと呼ぶ。


 ……まあ、ここら辺はあまりわからなくてもプログラミングはできますが、プログラミングの根本を知っておくことは重要なので、あえて長々と説明しています。おそらく、もう1,2回はこんな説明が続くでしょうね。
 では今回はこの辺でノシ

C++講座① プログラムが動く仕組み

 突然ですが、DirectXの講座は難しすぎるため取りやめました。というわけで、まずは簡単なC++の講座を作ることにしました。
 C++の講座はすでに作ってありますが、以前作ったものは、なるべく早くC++のプログラミングができるように作ったため、分かりやすさを欠いている気がしたのです(まあ、がんばって作ったのでそちらでプログラミングを学んでもらってもうれしいですけど)。というわけで、また新たにC++のプログラミング講座を作っていくことにしました。なお、この講座は「です・ます調」でなく「である調」でいくつもりです。
 ↓それでは、C++講座① プログラムが動く仕組み、始まります!! ↓

 
 プログラムといっても、おそらくこの講座をご覧の方の多くはプログラムというものを詳しくは知らないだろう。そこでC++のプログラミングを学ぶ前に、まずはプログラムそのものについて学んでいただく。
 英語でよくつかわれるプログラム(program)の日本語訳は予定とか計画とかの意味になる。式典や大会のプログラムはそういう意味であり、その式典・大会で実際に行われる内容がずらりと書かれたものである。
 みなさんがこれから学ぶプログラムはこれと同じようなものであり、実際にコンピュータが実行する内容(命令)がずらりと書かれたものである。ここで、プログラムを実行するにはCPUという装置が活躍する。CPU(シーピーユー、中央処理装置)はいわばコンピュータの頭脳であり、計算や判断を行う部分である。プログラムを実行すると、CPUはプログラムに書かれた命令を順番に実行してゆくのである。
 プログラムの命令には、足し算や引き算、掛け算や割り算をしたり、状況に応じて次に実行する命令を変更したり、といったものがある。このような命令が集まって、テレビゲームなどのプログラムは動いているのである。


 ……短っ!? 今回はこれで終了です。ではまた。

だいたい分かるC++ 作成

 なんか、DirectXの説明するとか言っておきながら、ぜんぜんせずに、なにかつくってしまいました。
 というわけで、C++のプログラミング講座をつくりました。しかし、僕はプログラミングの講座をつくることを完全になめていましたね。
 この講座をつくったきっかけは、友達に、
「C++の講座をつくってやるぜ」
と宣言してしまったことでしょう。当時は、C++を分かったつもりになっていて、教えるのもそれほど難しくないと思っていました。ええ、普通の人なら、難しいことぐらい気付きますよね?
 講座を作り始めてから、
「これは確実に地雷踏んだな」
と思いました。正直、これのせいで4月中はまともにゲーム製作ができませんでした。やってもうた。
 しかし、宣言したからには作る。そう決めていたので、やるしかありませんでした。はじめのうちは、かなり精度を意識していましたが、だんだんと完成させることだけが目標になってきました。こんなんで分かるのか?
 とはいえ、僕としては一生懸命つくったつもりです。手抜きしたところなど、あんまりない!
 なので、もし、プログラミングに興味があって、「まあ、仕方ないから見てやるか」的な広い心の持ち主は、どうぞご覧になってください。せっかくつくったのに誰も見ないんじゃ、僕も報われませんからね。(報われようが報われなかろうがどうでもいいと言ったやつ、表へ出ろ!)
 というわけで、左下か、この記事の上らへんから行けるので、ご覧になってくれるとうれしいです。ではまた。


 ……へ? 表へ出てきてやった? ちょwwww あれはただの冗談……、ちょwwww……、マジ……、許して……
プロフィール

ケーケー

Author:ケーケー
趣味:自作小説執筆、プログラミング、電子工作
好きなゲーム:ぷよぷよ

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR