JS の知識を前提として C++ を学習する - cin, cout, 関数化
参考
柴田望洋の
https://www.amazon.co.jp/dp/B0787YH4L2/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
ヘッダ
node.js の import みたいな感じで
include を使う
std と count
using namespace std;
これで std の使用を明示すると
cout をそのまま 使えるようになるらしい。
これがないと std::cout って使うときに std を明示しないといけないらしい。
cout は「標準入力ストリーム」って言うらしい。
数を数えるカウントとは全く別らしい。C OUT !!!! アウト!!!!
これに挿入記号の << を使うことで console.log() ができる
実際に動かすと
#include <iostream> using namespace std; int main() { cout << "Hello cpp \n"; }
コードがこれで
[Done] exited with code=0 in 0.437 seconds [Running] cd "/Users/kaede/code/cpp/" && g++ main.cpp -o main && "/Users/kaede/code/cpp/"main Hello cpp
この結果が出る。
in out stream の ライブラリを import して
std の namespace を明示して
最初に実行される main 関数で、console.log にあたる C OUT に 文字列を打ち込む!!
js との違いとして、'
のシングルクォートで文字列をくくるのはダメで、;
の セミコロンがないと即エラーが出る。
アラート
cout << "\aHey Guys! We have a gift for you!\n";
VScode だからか警告音が出ない...
文字列の連結
cout << "ABC" "PPP" "XYZ" ;
ABCPPPXY
空白や改行を挟んで文字列を複数入れても、連結されて表示される
文字列 数値 文字列の出力
JS だと
`text ${number} text`
だが
cpp は
cout << "18 + 63 = " << 18 + 63 << "some text";
18 + 63 = 81some text
となる。異なる型のをつなげるときは、inserter の <<
で区切る必要があるらしい
変数と計算複数出力
cpp は型を明示しないといけないので
main の中で宣言して使う
int main() { int x = 2; int y = 3; cout << "x: " << x; cout << "\n x + y: " << x + y; cout << "\n (x + y) / 2 : " << (x + y) / 2 ; }
x: 2 x + y: 5 (x + y) / 2 : 2
x と y と 合計と 平均 を出力する
console.log や println と違って改行記号を文末か次の文頭に表示しないといけない。
キーボードからの入力受け付け
C in
さっきの C out の逆。
Code Runner の OUTPUT の場所では打てないが、設定で解決できるようだ
設定で runInTerminal って検索してチェックしたら Terminal で実行できた
コードはこう
int num = 0; cout << "What is your favorite number?\n"; cin >> num; cout << "I will punch you " << num << " times.\n"
What is your favorite number? 5 I will punch you 5 times.
c out の出力先に
出力先 <- 文字列
で "好きな数字を言え" をターミナルに表示して
入力先 -> 変数
で 変数 number に 入力された数値を突っ込む
出力先 <- 文字列 << 変数の数値
で 文字列と変数の値が出る!!ヨシ!!!
double で小数点まで計算する
main.cpp:4:11: warning: implicit conversion from 'double' to 'int' changes value from 0.25 to 0 [-Wliteral-conversion] int x = 0.25;
int に小数点の入った数値を入れるとエラーが出るので、double を使う
double x = 1; cout << x/4;
0.25
小数点が出る計算の時は double
コメントアウト
js と同じ単一行
// some code
html と同じ複数行
/* double x = 1; cout << x/4; */
スラッシュ アスタリスクで初めて
アスタリスク スラッシュで終わらせる。
後から変えられない const
cpp には Math.PI とかがないらしいので 自分で定義する
こう言う後から変わるわけがないものは const で変更できなく定義する。
js ではカジュアルに使っていたが、cpp では デフォルトで使うことにはならないのかな?
ts だと
const App: React.FC = { }
みたいに const と type を両方使っていた
同じように書く。
const double PI = 3.1416
関数化する
js では とにかく脳死で const に入れていればヨシ!!だった。
入れたい。とにかく入れたい。変数は無理だから関数でもいい。処理を入れたい。
そしてその名前だけで C out に渡したい。
int main() { double radius; const double PI = 3.1416; cout << "Input Radius:"; cin >> radius; cout << 2 * PI * r; }
これの計算を cout に直接渡しているのを関数化した。
int getCircumference(double radius) { const double PI = 3.1416; return 2 * radius * PI; } int main() { double radius; cout << "Input Radius:"; cin >> radius; cout << getCircumference(radius); }
getCircumference(radius) を作って それを main で呼び出すことにした。
cpp では 数値計算の関数は int の型にするらしい。
main で type を宣言した上で、関数で 引数として使う際も再度 type を明示して、
変数は関数内部で宣言して使い、return する。
main で PI を宣言しても 関数内部では使えなかった。
関数はなぜか 6章の内容でいくまで遠いので、自分から探しに行ってよかった。
( const の章は 1.4 章 )