C++基礎講座1回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
アブナイお兄ちゃんによるオンラインC++言語講座
ボチボチやっていこうかなと思います
更新は気まぐれなので期待しないでください
初級者向け+覚書もあるので過度な期待は禁物
なぜC++か?
この辺のことはローテクさんの方が詳しいですが
C++はとりあえず処理が速い!!これに尽きます。
もうひとつはハードウェアに近いということ
C言語ではできないオブジェクト指向という概念が導入されてい...
(オブジェクト指向については後述します)
なおかつ、C言語の文法がほぼ全て使えます(ぉ
(したがって、C言語の文法はある程度わかる人がこの講座の対...
JavaはサーブレットやアプレットWeb系に強いなどの特徴があり...
C、C++言語は同じコード内にアセンブラ言語を書けたりなど
低級な言語に密接な関係があります。
(どこがどのように密接なのって問い詰められるとボロがでそ...
というようなC++言語に特徴があるわけですが
まぁ・・・C++言語は低級な言語にも近い高級言語というわけで
めんどくさいことも色々多いわけです
たとえば、動的なメモリ管理とかはJavaとかC#のような
高級言語にあるガベージコレクションみたいな機能がないので
自分でしなきゃいけないし(動的なメモリって何よ!?それは...
ぁ、この講座はアブナイお兄ちゃんの独断と偏見よる初心者向...
コンソールアプリケーションのみのプログラム(黒画面のみ)...
あとコードが全ての環境において正しく動作するかの保障はで...
VisualStudioの旧バージョン(2003以前)は動く保障はできま...
この講座ではC++言語がC言語と比べてどこがパワーアップして...
まずは標準出力(コンソール画面への出力)が若干違う
C言語講座同様プロジェクトを作ってmain関数をとりあえず作る...
↓のコードを打ってもらいたい(こぴぺでもかまわんよ
// C++での標準出力(コンソールアプリケーション)
// main.cpp(←拡張子がcppというのはC++言語の文法が使えるこ...
#include <iostream>
using namespace std; // 名前空間、とりあえずここではおま...
int main()
{
int a = 5;
cout << "c++ではストリームで書くことができる" << endl;
cout << "連続で" << a << "←変数の値もだせるよ" << endl;
return 0;
}
// ↑ここまで
cout << なんとか(変数とか、文字列)
なんとかの部分にコンソール画面に出力させたいものを書きます
coutのあとに << を使えばいくつでも連続で出力させることが...
endlは改行です。coutとセットで使います。
で、
using namespace stdって何よ?
といわれるとさっきのコードは
↓のコードでも同じものになる
#include <iostream>
int main()
{
int a = 5;
std::cout << "c++ではストリームで書くことができる" << e...
std::cout << "連続で" << a << "←変数の値もだせるよ" << ...
return 0;
}
// ↑ここまで
std::
ってトリアエズ打ってみてほしい、すると通常はなんかいっぱ...
(出ない人は若干待ってみるか打ちなおしてみてほしい)
名前空間については詳しい説明はここでは省く(おぃ
ここではstdっていう名前空間にC++の標準的な関数が
格納されているんだなと思ってくれればかまわない
んで、using namespace std;ってやると
std::のところを省略できるんだな程度でおk
ちなみに
cout関数(変な書き方してるけどこれ関数なの?←はまた今度説...
もちろん、C言語のprintf関数も使える
#include <stdio.h>
int main()
{
int a = 5;
printf("c++ではストリームで書くことができる");
printf("%s%d%s","連続で",a,"←変数の値もだせるよ");
return 0;
}
何がいいのかっていうと%dとか%sとか(マニピュレーターとい...
ただし、coutだと書式指定がメンドクサイというか慣れにくい...
まぁ、この辺はprintf派と分かれるとこなのでどっち使うかは...
つぎは入力のほう
// 標準入力
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cin >> a;
cout << "a = " << a << endl;
// 連続で入力する場合
// bに入力してcに入力する
cin >> b >> c;
cout << "b = " << b << " c = " << c << endl;
}
cin関数は >> で変数に値
C言語のgets関数とかとほぼ同じだけど
cin関数に >> 連続で使うことで連続で入力していける
ぁ、そういえばCTRL + SPACEキーっていうアクセラレータキー
(いわゆるVisual Studioで使えるコマンド)をみんな知ってい...
これをセットで押せば(インクルードしているヘッダーファイ...
自分でコードの途中で宣言した変数などを列挙してくれる
この機能をインテリジェンスというんだけど知っておいて絶対...
長ったらしい関数や変数のときは(あと関数名を途中までで忘...
if文、for文、while文、do while文、switch文などはC言語とま...
では、いきなり
オブジェクト指向って何よ?って話をします。
オブジェクト指向の利点は継承?、ポリモーフィズム?、カプ...
とか巷でよく書かれている参考書が多いけど、何のこっちゃ?...
なんだかんだ実際コードを打って体感してもらったほうが速い...
(自分も最初そうでしたし)
classというキーワードを使います
#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <iostream>
using namespace std;
class MyClass
{
int a;
float b;
public:
char c[256];
// クラス内部の変数(a,b)を表示する
void Show()
{
// クラス内ならどの変数でも書き換え可能でどのクラス内...
a = 5;
b = 10.6f;
cout << "a = "<< a << " b = " << b << endl;
cout << c << endl;
}
};// ←「;」 をよく忘れる人がいるので注意
int main()
{
MyClass mc;
strcpy(mc.c,"public:以降の変数は外部から書き換え可能");
mc.Show();
return 0;
}
MyClassというのは自分で定義した新しい変数型になるので
main関数で使えるようになります。
クラス内の関数や変数にアクセスするためには「.」が必要にな...
↑の例だとmc.Show()でShow関数を呼び出している
これはC言語での構造体の内部変数(関数)呼び出しと同じです。
純粋なC言語だとclassというものは存在しないし、
自分で新しい型を定義するにはtypedefキーワードつけないとい...
(これはC++だから気にしなくておk)
public:というのはpublic:と書かれたところ以降で宣言された...
外部から直接入力できます
(C言語的にはどこからでも書き換え可能なのは当たり前な概念...
C++言語的には、外部から書き換えできない変数もあるんだよっ...
private:というキーワードもあるけど、これは
このクラス内部でしかクラス内で宣言した変数や関数が使えな...
ためしにmain関数のほうでmc.a = 5;とやってみてください、ア...
コンパイルエラーになるはずです。
classでは何も書かないと自動的にprivateとして扱われるので...
(つまりは外部から呼び出したり書き換えたりできない)
このように、外部から書き換えたり呼び出したりを制限して、
クラス内の変数の値などを保守することを
カプセル化といいます。
vote((^ω^)わかったお[35],普通[1],。(`ω´#)。わかりに...
ちっとキリが悪いけど、ここでキリ上げ、次回更新はいつかな...
終了行:
アブナイお兄ちゃんによるオンラインC++言語講座
ボチボチやっていこうかなと思います
更新は気まぐれなので期待しないでください
初級者向け+覚書もあるので過度な期待は禁物
なぜC++か?
この辺のことはローテクさんの方が詳しいですが
C++はとりあえず処理が速い!!これに尽きます。
もうひとつはハードウェアに近いということ
C言語ではできないオブジェクト指向という概念が導入されてい...
(オブジェクト指向については後述します)
なおかつ、C言語の文法がほぼ全て使えます(ぉ
(したがって、C言語の文法はある程度わかる人がこの講座の対...
JavaはサーブレットやアプレットWeb系に強いなどの特徴があり...
C、C++言語は同じコード内にアセンブラ言語を書けたりなど
低級な言語に密接な関係があります。
(どこがどのように密接なのって問い詰められるとボロがでそ...
というようなC++言語に特徴があるわけですが
まぁ・・・C++言語は低級な言語にも近い高級言語というわけで
めんどくさいことも色々多いわけです
たとえば、動的なメモリ管理とかはJavaとかC#のような
高級言語にあるガベージコレクションみたいな機能がないので
自分でしなきゃいけないし(動的なメモリって何よ!?それは...
ぁ、この講座はアブナイお兄ちゃんの独断と偏見よる初心者向...
コンソールアプリケーションのみのプログラム(黒画面のみ)...
あとコードが全ての環境において正しく動作するかの保障はで...
VisualStudioの旧バージョン(2003以前)は動く保障はできま...
この講座ではC++言語がC言語と比べてどこがパワーアップして...
まずは標準出力(コンソール画面への出力)が若干違う
C言語講座同様プロジェクトを作ってmain関数をとりあえず作る...
↓のコードを打ってもらいたい(こぴぺでもかまわんよ
// C++での標準出力(コンソールアプリケーション)
// main.cpp(←拡張子がcppというのはC++言語の文法が使えるこ...
#include <iostream>
using namespace std; // 名前空間、とりあえずここではおま...
int main()
{
int a = 5;
cout << "c++ではストリームで書くことができる" << endl;
cout << "連続で" << a << "←変数の値もだせるよ" << endl;
return 0;
}
// ↑ここまで
cout << なんとか(変数とか、文字列)
なんとかの部分にコンソール画面に出力させたいものを書きます
coutのあとに << を使えばいくつでも連続で出力させることが...
endlは改行です。coutとセットで使います。
で、
using namespace stdって何よ?
といわれるとさっきのコードは
↓のコードでも同じものになる
#include <iostream>
int main()
{
int a = 5;
std::cout << "c++ではストリームで書くことができる" << e...
std::cout << "連続で" << a << "←変数の値もだせるよ" << ...
return 0;
}
// ↑ここまで
std::
ってトリアエズ打ってみてほしい、すると通常はなんかいっぱ...
(出ない人は若干待ってみるか打ちなおしてみてほしい)
名前空間については詳しい説明はここでは省く(おぃ
ここではstdっていう名前空間にC++の標準的な関数が
格納されているんだなと思ってくれればかまわない
んで、using namespace std;ってやると
std::のところを省略できるんだな程度でおk
ちなみに
cout関数(変な書き方してるけどこれ関数なの?←はまた今度説...
もちろん、C言語のprintf関数も使える
#include <stdio.h>
int main()
{
int a = 5;
printf("c++ではストリームで書くことができる");
printf("%s%d%s","連続で",a,"←変数の値もだせるよ");
return 0;
}
何がいいのかっていうと%dとか%sとか(マニピュレーターとい...
ただし、coutだと書式指定がメンドクサイというか慣れにくい...
まぁ、この辺はprintf派と分かれるとこなのでどっち使うかは...
つぎは入力のほう
// 標準入力
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cin >> a;
cout << "a = " << a << endl;
// 連続で入力する場合
// bに入力してcに入力する
cin >> b >> c;
cout << "b = " << b << " c = " << c << endl;
}
cin関数は >> で変数に値
C言語のgets関数とかとほぼ同じだけど
cin関数に >> 連続で使うことで連続で入力していける
ぁ、そういえばCTRL + SPACEキーっていうアクセラレータキー
(いわゆるVisual Studioで使えるコマンド)をみんな知ってい...
これをセットで押せば(インクルードしているヘッダーファイ...
自分でコードの途中で宣言した変数などを列挙してくれる
この機能をインテリジェンスというんだけど知っておいて絶対...
長ったらしい関数や変数のときは(あと関数名を途中までで忘...
if文、for文、while文、do while文、switch文などはC言語とま...
では、いきなり
オブジェクト指向って何よ?って話をします。
オブジェクト指向の利点は継承?、ポリモーフィズム?、カプ...
とか巷でよく書かれている参考書が多いけど、何のこっちゃ?...
なんだかんだ実際コードを打って体感してもらったほうが速い...
(自分も最初そうでしたし)
classというキーワードを使います
#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <iostream>
using namespace std;
class MyClass
{
int a;
float b;
public:
char c[256];
// クラス内部の変数(a,b)を表示する
void Show()
{
// クラス内ならどの変数でも書き換え可能でどのクラス内...
a = 5;
b = 10.6f;
cout << "a = "<< a << " b = " << b << endl;
cout << c << endl;
}
};// ←「;」 をよく忘れる人がいるので注意
int main()
{
MyClass mc;
strcpy(mc.c,"public:以降の変数は外部から書き換え可能");
mc.Show();
return 0;
}
MyClassというのは自分で定義した新しい変数型になるので
main関数で使えるようになります。
クラス内の関数や変数にアクセスするためには「.」が必要にな...
↑の例だとmc.Show()でShow関数を呼び出している
これはC言語での構造体の内部変数(関数)呼び出しと同じです。
純粋なC言語だとclassというものは存在しないし、
自分で新しい型を定義するにはtypedefキーワードつけないとい...
(これはC++だから気にしなくておk)
public:というのはpublic:と書かれたところ以降で宣言された...
外部から直接入力できます
(C言語的にはどこからでも書き換え可能なのは当たり前な概念...
C++言語的には、外部から書き換えできない変数もあるんだよっ...
private:というキーワードもあるけど、これは
このクラス内部でしかクラス内で宣言した変数や関数が使えな...
ためしにmain関数のほうでmc.a = 5;とやってみてください、ア...
コンパイルエラーになるはずです。
classでは何も書かないと自動的にprivateとして扱われるので...
(つまりは外部から呼び出したり書き換えたりできない)
このように、外部から書き換えたり呼び出したりを制限して、
クラス内の変数の値などを保守することを
カプセル化といいます。
vote((^ω^)わかったお[35],普通[1],。(`ω´#)。わかりに...
ちっとキリが悪いけど、ここでキリ上げ、次回更新はいつかな...
ページ名: