SlideShare a Scribd company logo
⼊⾨講座
~ Hello, Worldを読む~
Kuyuri Iroha
今回の講座について
前半:
Hello, Worldを読み解く座学
後半:
ProcessingのプログラムをC++に書き直してみるワークショップ
1内容以前
今回の講座について
注意:
今回の教え⽅はかなり邪道。
ちゃんと⼊⾨したい⽅は網羅的なWeb⼊⾨サイトか、⼊⾨書籍の購⼊を
おすすめします。
- やさしいC++(https://amzn.to/2Zw3UEG)が個⼈的にはおすすめ
- しっかり勉強したい⼈はローベルのC++⼊⾨講座(https://amzn.to/2ZtPkhf)も
おすすめ
2内容以前
C++とは
Ø何でもできるなんでもあり⾔語
Ø書いた部分以外で重くはならない
- ⾔語仕様の話。
Øハードウェアとの相性がいい
- ハードウェアに近い処理はC++で書かれている
(書く必要がある)ことが未だに多い。
Ø何でもできる故に器⽤貧乏
Øソースコードの拡張⼦
- “.cpp”, “.h”, “.hpp” etc.
内容以前 3
https://blog.sourcerer.io/building
-a-website-with-c-db942c801aee
今回の内容
1. Hello, Worldを読む
1. まずは書いてみる
2. #include
3. 基本型
4. int main()
5. 名前空間とusing指令
6. 構造体とクラス
7. 演算⼦オーバーロード
4
2. ワークショップ
~ ProcessingからC++ ~
1. P演習をC++で書き直す
内容以前
まずは書いてみる
Hello, Worldを読む 5
C++のコードは意外と短いが…
- #include <iostream>
- using namespace std;
- cout << "Hello, World!" << endl;
上記のような、⾒慣れない
書き⽅が多い。
まずは書いてみる 6
まずは書いてみる 7
1つ1つ軽く説明します😊
#include
#include <iostream>
名称:
include⽂
処理内容:
<iostream>ライブラリをこのソース
コードに“差し込む”
- Processingのimport⽂とほぼ同じ
- iostream
(C++の標準⼊出⼒ライブラリ)
#include 8
基本型
int, float, char, double 型:
- 役割、値の範囲共にProcessingと同等のもの。
bool 型:
- Processingのbooleanと同じ、真偽値を⼊れるための型
void 型:
- 役割、値の範囲共にProcessingと同等のもの。
基本型 9
基本型
unsigned int, unsigned char 型:
- 負数の値がない整数型。
- 負数がない代わりに、signed(通常の)型よりも値の範囲が⼤きい。
long long int, unsigned long long int 型:
- 通常のint型が4byteなのに対して、long long修飾⼦をつけると、8byte
になって値の範囲がさらに⼤きくなる。
- 競技プログラミング(競プロ)によく使う
基本型 10
参考: https://ja.cppreference.com/w/cpp/language/types
int main()
int main()は Processingの void setup()と同じような役割
の関数
エントリーポイントと呼ぶ事が多い
int main() 11
int main()
戻り値はint型だが、Hello, World中では0を返しているだけ。
これは、C⾔語時代からある慣習のようなもので、
今この慣習に従う必要はあんまりない。
- ⼀応、return 0; は正常終了。return 1;は異常終了という扱い。
- そもそもvoid main()でも動く。
int main() 12
名称:
名前空間
役割:
変数名などの汚染を防ぐ
- 名前付きで、後で呼び出せる
ブロックスコープのようなもの
名前空間とusing指令 13
namespace
名称:
using指令
役割:
このコードでは、
「このスコープで“std”という
名前空間を使⽤する」
ということを明記している。
- そもそも、明記しなければ cout は
std::cout のように所属する名前空間を
明記しなければ呼び出すことができない。
名前空間とusing指令 14
using
using namespace std;
この1⽂を書かない場合、
std::coutという具合に所属する
名前空間を明記して書く必要が
ある。
C++では「::」は主にスコープ
(名前空間)の明⽰に使う。
名前空間とusing指令 15
名称:
クラス
役割:
Processingのクラスとだいたい
同じ。
- デフォルトのアクセス制限が
privateになっている。
構造体とクラス 16
class
private:
同クラス内のメンバ関数から
のみアクセス可能。
protected:
同クラス内のメンバ関数と
継承先のメンバ関数からのみ
アクセス可能。
public:
どこからでもアクセス可能。
Processingでは全てのメンバが
このアクセス制限。
構造体とクラス 17
アクセス制限
privateがなぜ必要かは「カプセル化」
について調べるといいかもしれません。
名称:
構造体
役割:
現⾏のC++ではclassとほとんど
同じ。
- デフォルトのアクセス制限が
publicになっている。
構造体とクラス 18
struct
C++ではある特定のデータ型として使うことが多い
C++には、あるクラスや構造体に
対して特有の振る舞いをするように
演算⼦を改変する機能がある。
- 例として、⽐較演算⼦(<)を上書き
してオリジナルの型に既存の
ソート関数を使えるようにする。
演算⼦オーバーロード 19
演算⼦オーバーロード
cout << "Hello, World!" << endl;
この⽂では、
シフト演算⼦(<<)を
演算⼦オーバーロードによって
改変しているから
このように使える。
演算⼦オーバーロード 20
⾒返してみる
Hello, Worldを読む 21
1 <iostream>ライブラリを
このソースコードに“差し込む”
3 std名前空間の使⽤を明記
5 int型の関数 main()を定義
7 coutのシフト演算⼦のオーバー
ロードを使って標準⼊出⼒を⾏
なっている
9 0だと正常終了、1だとエラー
Hello, Worldを読む 22
Hello Worldが読めました!(完)
P演習をC++で書き直す 23
ProcessingをC++に書き直す
- P演習の時の課題、calendarを
C++で書き直してみる。
- 基本制御⽂と標準出⼒の理解が
できる。
ProcessingをC++に書き直す 24
calendar (Processing)
これは作例で、いろいろな書き⽅ができる。
C++は同じ処理でも、書き⽅が⾊々ある。
ProcessingをC++に書き直す 25
calendar (C++)
C++は⼈のコードが読みにくいから、⼊⾨書籍で勉強しよう!

More Related Content

What's hot

WordCampOsaka2012 WordPressあるある
WordCampOsaka2012 WordPressあるあるWordCampOsaka2012 WordPressあるある
WordCampOsaka2012 WordPressあるある
Takashi Uemura
 
NUTハッカソン2014成果報告
NUTハッカソン2014成果報告NUTハッカソン2014成果報告
NUTハッカソン2014成果報告
Joe_noh
 
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXKazuyuki Todo
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
Uchio Kondo
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
Jun-ichi Sakamoto
 
Dioxy : How To Presentation [HTML/CSSワークショップ #1 / パンくずリストを作ろう]
Dioxy : How To Presentation [HTML/CSSワークショップ #1 / パンくずリストを作ろう]Dioxy : How To Presentation [HTML/CSSワークショップ #1 / パンくずリストを作ろう]
Dioxy : How To Presentation [HTML/CSSワークショップ #1 / パンくずリストを作ろう]
dioxy
 

What's hot (8)

Ltthon2012
Ltthon2012Ltthon2012
Ltthon2012
 
WordCampOsaka2012 WordPressあるある
WordCampOsaka2012 WordPressあるあるWordCampOsaka2012 WordPressあるある
WordCampOsaka2012 WordPressあるある
 
NUTハッカソン2014成果報告
NUTハッカソン2014成果報告NUTハッカソン2014成果報告
NUTハッカソン2014成果報告
 
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaX
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
 
Dioxy : How To Presentation [HTML/CSSワークショップ #1 / パンくずリストを作ろう]
Dioxy : How To Presentation [HTML/CSSワークショップ #1 / パンくずリストを作ろう]Dioxy : How To Presentation [HTML/CSSワークショップ #1 / パンくずリストを作ろう]
Dioxy : How To Presentation [HTML/CSSワークショップ #1 / パンくずリストを作ろう]
 

NCC C++入門講座