伝えたいこと日記

WEB開発/読書/バイク/ポーカー 皆でやると楽しいよ?

第4章 計算

Q1

入力を受け取り、出力を生成すること。

Q2

キーボード、マウス、タッチスクリーン、ファイル、その他の入力デバイス(音楽キーボード、ビデオレコーダー、ネットワーク接続、温度センサー、デジタルカメライメージセンサー)、ほかのプログラム:入力

 

ネットワークインターフェイス、ミュージックシンセサイザー、電気モーター、ライト、ヒーター:出力の例

 

Q3

正しく

単純に

効率良く

 

Q4

構造と【コードの品質】に配慮することは多くの場合何かを正常に動作させるために最もすばやい方法である。

 

プログラムを構成するための主な手段は、大きな計算を小さな計算に分離することであり、その方法は2つある。→①抽象化 ②分割統治

 

式は、複数オペランドから値を計算する

Q5

 プログラム実行の流れを制御するのが文

Q6

lvalは演算子オペランドを変更する場合に用いられる、代入の左辺に使用できる値の略記。+= *= -= などがある

Q7

変わらない変数 const int pi = 3.14;

Q8

表記法そのもの

Q9

初期化された後は新しい値を割り当てることができない名前付きのオブジェクトのことであり、コードを読みやすくするのに役立つ

Q10

シンボル定数に定義することなく、リテラルを用いて繰り返しプログラム中で使われている数字、定数、文章

Q11

%以外すべてはintとdoubleの両方に使用可能

Q12

%

Q13

+と-と>と<

Q14

多くの定数と比較する際にはSwitch文をしようすることが 賢明である(少々古風ではあるが)

Q15

caseの最後のbreakの入力忘れ

Q16

初期化、停止条件定義、インクリメント

左から順に実行される

Q17

for文は単純な初期化、条件、インクリメント操作から定義できる場合は必ずfor文を使うようにする。そうでない場合はWhile文を使うようにする

Q18

計算式を行うことで変換してから出力する

Q19

戻り値の型の指定、関数名の指定、パラメータの名前および型の指定

第3章 オブジェクト、型、値

3.1 入力

何かを読み取るためには、それを読み込む場所が必要である。そのような【場所】をオブジェトという。

オブジェクトは配置できる情報の種類を指定する型を持つメモリ領域である

名前付きのオブジェクトは変数と呼ばれる

 #include "../../std_lib_facilities.h"
#include <string>
int main() {
 cout << "Please enter your first name (followed by 'Enter'):\n";
 string first_name;
 cin >> first_name;
 cout << "Hello," << first_name << "!\n";
 return 0;
}

改行によってコンピュータに注意をひかせることができるのである

 

3.2 変数

データを格納する【場所】はオブジェクトと呼ばれる

オブジェクトにアクセスするためには名前が必要である

名前付きのオブジェクトは変数と呼ばれ、①オブジェクトに配置するものと②適用できる操作を決定する型を持つ

C++には多くの型があるが実務上は5つの型に絞っても特に問題は発生しないだろうとのこと

int 整数

double 浮動小数

char 個々の文字

string 文字列

bool 論理変数

3.3 入力と型

string型に数字を入力した場合は自動的に文字列に変換される

 ホワイトスペースによって入力されたものが区別されるようになる

1つの出力文で複数の値を出力できるのと同様に1つの入力文で複数の文が入力できるのである

#include "Header.h"
int main() {
 
 while (1)
 {
  cout << "Please enter your first name and age:\n";
  string first_name="???";
  int age=0;
  cin >> first_name;
  cin >> age;
  cout << "Hello," << first_name << "(age" << age << ")\n";
  keep_window_open();
 }
 
}

 

3.4 演算と演算子

変数の型は変数に格納する値をを指定するだけでなく、変数に適用できる演算とそれらの意味も決定する

int count;

cin >> count;

int型によって演算子は整数にcountを読み込む

 

string name;

cin >> name;

>>演算子は文字列nameに読み込む

 

int c2 = count +2;

+演算子は整数を足す

string s2 name +"Jr";

+演算子は文字を足す

などなど

コンパイラは各変数に適用できる演算を正確に知っているので多くのミスを防ぐことができる

文字列の比較でアルファベット順での並び替えが可能

3.5 代入と初期化

代入と初期化は論理的に異なる

 初期化は常に変数をからであると見なす。

 代入は変数に新しい値を挿入する前にその古い値を削除しなければならない

値はコイン/箱が変数=>箱を空っぽにしておくことはできない

#include "Header.h"
int main(){
 while (1)
 {
  cout << "Please enter a floating value\n";
  double n;
  cin >> n;
  cout << "n==" << n
   << "\nn+1==" << n + 1
   << "\nthree times n==" << n * 3
   << "\n twice n==" << n * 2
   << "\n n squared==" << n*n
   << "\n half of n==" << n / 2
   << "\n square root of n==" << sqrt(n)
   << "\nn==" << n
   << "\nn==" << n
         <<endl;
 };
 
}

3.5.1 例:重複する単語の検出

ドリル

二重引用符は単純引用符と違う意味を持つ 

 

#include "Header.h"
#include<iostream>
using namespace std;
 
void main()
{
  string first_name = "";
  cout << "Enter the name of the person you want to write to\n";
  cin >> first_name;
  cout << "Dear " << first_name << "\n";
  string friend_name;
  cout << "Please enter your friend name!\n";
  cin >> friend_name;
  cout << "Have you seen " << friend_name << " lately.\n";
  char friend_gender = 0;
  cout <<"Please enter gender of your friend\n";
  cin >> friend_gender ;
  if (friend_gender == 'm')
   cout << "If you see " << friend_name << " please ask him to call me \n";
  if (friend_gender == 'f')
   cout << "If you see " << friend_name << " please ask her to call me \n";
  int age = 0;
  cout << "Please enter your age\n";
  cin >> age;
  cout << "I hear you just had a birthday and you are " << age << " years old\n";
  if (age < 0 || age>110)
   simple_error("you are kidding!");
  if (age < 12)
   cout << "Next year you will be " << age + 1;
  if (age == 17)
   cout << "Next you will be able to vote\n";
  if (age > 70)
   cout << "I hope you are enjoying retirement";
 
  keep_window_open();
 復習
Q1
ユーザーに行動を促すメッセージのこと
Q2
>>
Q3
int number;
cin >> number;
Q4
改行を表す特殊シーケンス
Q5
;
Q6
;
Q7
cout <<"Hello" << first_name <<"!\n";
Q8
値を入れるための【場所】。確保されたメモリ
Q9
表記法
Q10
文字列、浮動小数点、整数、文字
Q11
名前と型のついたオブジェクトであり、格納される値と演算子の役割を定義する
Q12
char 1バイト int 4バイト double ??バイト
Q13
ビット
Q14
=は代入演算子 ==は論理演算子
Q15
変数を定義する文
Q16
初期化は空のメモリに対して値を代入するのに対して、代入ではすでに存在している値を削除してから新しい値を代入するという2ステップを踏むことになる
Q17
文字列同士をつなげること。string型の変数に対して++演算子を利用することで文字列の連結を行うことができる。
Q18
_this_is 先頭がアンダーバー
correct? クエスチョンマークが使用されている
latest thing スペースが使用されている
The_$12 ドルマークが使用されている
Q19
大文字と小文字であることだけが異なる変数
標準ライブラリの機能の名前
意味のない名前
流すぎる名前
全て大文字の名前
Q20
人がプログラムする際に内容が理解しやすい名前にする
Q21
最初に定義した型に従ってオブジェクトが運用されること
Q22
doubleよりもintのほうが使用するビット数が少ないために情報がいくつか失われることになるから
Q23
値が別の型に移動するときに元の値と異なるものになる可能性がないもの
縮小変換は多くの情報が失われてしまうために非常に危険である

#include "Header.h"
#include<iostream>
using namespace std;

void main()
{
  string first_name = "";
  cout << "Enter the name of the person you want to write to\n";
  cin >> first_name;
  cout << "Dear " << first_name << "\n";
  string friend_name;
  cout << "Please enter your friend name!\n";
  cin >> friend_name;
  cout << "Have you seen " << friend_name << " lately.\n";
  char friend_gender = 0;
  cout <<"Please enter gender of your friend\n";
  cin >> friend_gender ;
  if (friend_gender == 'm')
   cout << "If you see " << friend_name << " please ask him to call me \n";
  if (friend_gender == 'f')
   cout << "If you see " << friend_name << " please ask her to call me \n";
  int age = 0;
  cout << "Please enter your age\n";
  cin >> age;
  cout << "I hear you just had a birthday and you are " << age << " years old\n";
  if (age < 0 || age>110)
   simple_error("you are kidding!");
  if (age < 12)
   cout << "Next year you will be " << age + 1;
  if (age == 17)
   cout << "Next you will be able to vote\n";
  if (age > 70)
   cout << "I hope you are enjoying retirement";

  keep_window_open();

#include "Header.h"
void main()
{
 double d = 0;
 while (cin >> d) {
  int i = d;
  char c = i;
  int i2 = c;
  cout << "d==" << d <<"\n";
  cout << "i==" << i << "\n";
  cout << "c==" << c << "\n";
  cout << "i2=" << i2 << "\n";
  cout << "char(" << c << ")\n";
 }
}

用語

代入

cin

連結

変換

宣言

デクリメント

定義

インクリメント

初期化

名前

初期化

名前

縮小

オブジェクト

演算

演算子

型安全

変数

 

練習問題

Q1 完了しました!

Q2#include "Header.h"
void main()
{
 cout << "これはマイルとキロメートルを変換するプログラムです。マイル数を入力してください!\n";
  int mile = 0;
  cin >> mile;
  cout << mile << "は " << 1.6*mile << " kmです!";
  keep_window_open();
}

Q3

やりました

Q4

#include "Header.h"
void main()
{
 cout << "これは入力した2つの値の最小値、最大値、合計、差、比率を求め表示するプログラムです。\n";
 cout << "スペースを空けて2つの数字を入力してください\n";
 int val1 = 0;
 int val2 = 0;
 cin >> val1 >> val2;
 int small = 0;
 int large = 0;
 if (val1 > val2)
  large = val1;
     small = val2;
 if (val2 > val1)
  large = val2;
     small = val1;
 cout << "2つの数字の最小値は " << small << " です\n";
 cout << "2つの数字の最大値は " << large << " です\n";
 cout << "2つの数字の合計は " << val1+val2 << " です\n";
 cout << "2つの数字の差は " << large-small<< " です\n";
 cout << "2つの数字の比率は " <<small/small <<"対" <<large/small << " です\n";
 keep_window_open();
}

Q5

#include "Header.h"
void main()
{
 cout << "これは入力した2つの値の最小値、最大値、合計、差、比率を求め表示するプログラムです。\n";
 cout << "スペースを空けて2つの数字を入力してください\n";
 double val1 = 0;
 double val2 = 0;
 cin >> val1 >> val2;
 double small = 0;
 double large = 0;
 if (val1 > val2)
  large = val1;
     small = val2;
 if (val2 > val1)
  large = val2;
     small = val1;
 cout << "2つの数字の最小値は " << small << " です\n";
 cout << "2つの数字の最大値は " << large << " です\n";
 cout << "2つの数字の合計は " << val1+val2 << " です\n";
 cout << "2つの数字の差は " << large-small<< " です\n";
 cout << "2つの数字の比率は " <<small/small <<"対" <<large/small << " です\n";
 keep_window_open();
}

Q6

#include "Header.h"
#include "string"
void main()
{
 int one = 0;
 int two = 0;
 int three = 0;
 cin >> one >> two >> three;
 int first;
 int second;
 int third;
 if (one>two && one>three)
  third = one;
   if (two > three)
    second = two;
    first = three;
   if (three > two)
    second = three;
    first = two;
      cout << "oneが1番大きいよ!\n";
 if (two>one && two>three)
   third = two;
    if (one > three)
     second = one;
     first = three;
    if (three > one)
     second = three;
     first = one;
      cout << "twoが1番大きいよ!\n";
 if (three>one && three>two)
   third = three;
   cout << "threeが1番大きいよ!\n";
    if (two > one)
     second = two;
     first = one;
    if (one > two)
     second = one;
     first = two;
      cout << "threeが1番大きいよ!\n";
 cout << first << "," << second << "," << third <<"\n";
 keep_window_open();

 

#include "Header.h"
#include "string"
void main()
{
 int one = 0;
 int two = 0;
 int three = 0;
 cin >> one >> two >> three;
 double smallest=0;
 double middle=0;
 double largest=0;
 if (one <= two && one <= three) {
  smallest = one;
  if (two < three) {
   middle = two;
   largest = three;
  }
  else {
   middle = three;
   largest = two;
  }
 }
 else if (two <= one && two <= three) {
  smallest = two;
  if (one > three) {
   middle = one;
   largest = three;
  }
  else {
   middle = three;
   largest = one;
  }
 }
 else {
  smallest = three;
  if (one > two) {
   middle = one;
   largest = two;
  }
  else {
   middle = two;
   largest = one;
  }
 }

 cout << smallest << "," << middle << "," << largest << "\n";
 keep_window_open();
}

Q8

#include "Header.h"
#include "string"
void main()
{
 int val = 0;
 cout << "こちらに数字を入力してください!\n";
 cin >> val;
 if (val % 2 == 0) {
  cout << val << " は偶数です。\n";
 }
 else {
  cout << val << " は奇数です。\n";
 }
 keep_window_open();
}

Q9

#include "Header.h"
#include "string"
void main()
{
 cout << "Please Enter strings of number\n";
 string val;
 cin >> val;
 if (val == "zero") {
  cout << 0 <<"\n";
  }
 else if(val=="one") {
  cout << 1 << "\n";
 }
 else if (val == "two") {
  cout << 2 << "\n";
 }
 else if (val == "three") {
  cout << 3 << "\n";
 }
 else if (val == "four") {
  cout << 4 << "\n";
 }
 else {
  cout << "not a number I know";
 }
 keep_window_open();
}

Q10

#include "Header.h"
#include "string"
void main()
{
 string operand;
 int val1 = 0;
 int val2 = 0;
 cout << "Please enter operand and two numbers!\n";
 cin >> operand >> val1 >> val2;
 if (operand == "+") {
  cout << "You want to caluclate " << val1 << "+" << val2 <<"\n"
 }
 else if (operand == "-") {
  cout << "You want to caluclate " << val1 << "-" << val2 << "\n";
 }
 else if (operand == "*") {
  cout << "You want to caluclate " << val1 << "*" << val2 << "\n";
 }
 else if (operand == "/") {
  cout << "You want to caluclate " << val1 << "/" << val2 << "\n";
 }
 else if (operand == "plus") {
  cout << "You want to caluclate " << val1 << "+" << val2 << "\n";
 }
 else if (operand == "minus") {
  cout << "You want to caluclate " << val1 << "-" << val2 << "\n";
 }
 else if (operand == "mul") {
  cout << "You want to caluclate " << val1 << "*" << val2 << "\n";

 }
 else if (operand == "div") {
  cout << "You want to caluclate " << val1 << "/" << val2 << "\n";
 }
 keep_window_open();
}

Q11

だるいから飛ばすわ。悪い。

 

第2章 Hello,World!

2.1 プログラム

  1. コンピュータに何かをさせるには、何をするか正確に(極端なほど詳細に)伝える必要がある。そうした【何をするか】の説明をプログラムと呼ぶ。
  2. プログラミングとは、そうしたプログラムを記述し、テストすることである。
  3. 誰でもプログラムをすでに理解しているということになる。
  4. 【近くの映画館まで車で行く方法】【2階のトイレに行く方法】【電子レンジで食事を温める方法】などなど...これらとプログラムをわけ隔てるものは【精度】である!
  5. コンピュータは全く持って要領が悪い!ex.廊下って何? 右に曲がるって何? 階段を上がるにはどうすれば良いの?

2.2 最初のプログラム

 

#include "std_lib_facilities.h"

 

int main()

{

 cout<<"Hello,World!!:¥n";

 return 0;

}

 

  1. コメントはプログラマの意図を明らかにするために使用される
  2. cout = character output stream
  3. std = standard
  4. プログラムはコンピュータとプログラマの2人の読み手の為に書かれる
  5. #を使ってincludeされるファイルはヘッダーファイルと呼べれ拡張子.hがつけられる
  6. coutなどの用語の定義が示されることになる
  7. コンピュータはmainという名の関数を探し出し、その中に書かれた命令から実行する
  8. 関数とは、複数(0個以上)の命令をひとまとまりにして名前を付けたものであり、【その関数の中に書かれた命令が、書かれた順番に実行される】ためのものである。通常は以下の4つの部分から構成される
  9. 戻り値の型
  10. 今回の場合は、intであり実行を要求した側に関数が返す結果の種類を指定する。intは予約語なので他の何かの名前として使用することはできない
  11. 名前
  12. mainが名前にあたる
  13. パラメータリスト
  14. ()内は空なので今回は空
  15. 関数の本体
  16. {}で囲まれており関数が実行するアクションを列挙する
  17. main関数は【システム】によって戻り値は使用しないが、UNIXなどの一部のシステムではプログラムの正常終了の可否をしらべるために戻り値を使用するのである
  18. ↑return 0; の意味 ※ちなみに書かなくてもreturn 0;であるかのように振る舞う

 

2.3 コンパイル

  1. ソースコード=人間が読める形式
  2. 拡張子: cpp .h
  3. 実行可能ファイル、マシンコード、オブジェクトコード=コンピュータ理解できる形式
  4. 拡張子: .obj .o
  5. コンパイラは文法に非常にうるさい、少しでもミスがあれば仕事をしない難儀な野郎だ
  6. 多くのC++文は;で終了することを忘れてはいけない
  7. 1つの文が終了し次の文が開始することをコンパイラに知らせるのが;の役割
  8. コンパイラは私たちが招く多くの問題から私たちを救ってくれているのである。
  9. コンパイラプログラマの味方であり、最も頼りになる存在なのである
  10. コンパイラが吐き出すエラーメッセージを理解できるようになることが言語のスキルアップには欠かせないのである

2.4 リンク

 Q1

実行画面にHello,World!の文字列を表示すること

Q2

名前

戻り値の型

パラメータ

内容本体

Q3

 main

Q4

LINUX系のOSにおいて、正常にビルドが終了したことを知らせるため。なお、特に記述がなければプログラムは0を戻り値として返すことになる

Q5

人間が記述したソースコードをコンピュータが理解できるオブジェクトファイル/マシンコードに変換すること

Q6

外部からヘッダーファイルを取り込みこと。ヘッダーファイル内には用語の定義などが記述されている

Q7

ヘッダーファイルであることを明示している

Q8

 マシンコードの集合を実行可能ファイルにまとめる役割

Q9

ソースファイルは人間が書いて人間が理解するためのもの、オブジェクトファイルはソースファイルをコンパイラし、コンピュータが理解できる形に変換したもの

Q10

統合開発環境の略称(Interractive Development Interface)プログラムにの実装に必要なものがパッケージ化されて用意されている

Q11

実践してみないと分らないことはたくさんある

 

練習問題

Q1

何も持たずに立ち上がる

右を向く

2歩前進する

左を向く

2歩前進する

右を向く

ドアを開ける

1歩前進する

ドアを閉める

1歩前進する

右を向く

2歩前進する

左を向く

左足を前に1段目にかける

右足を2段目にかける

左足を3段目にかける

階段がなくなったならば、両足をそろえる

左を向く

ドアを開ける

前に進む

正しい部屋であるかどうか確認する

FIn

 

用語の定義

//

コメントアウト用の文字

二重スラッシュ。この後に書かれたものは全てコメントである

<<

出力演算子と呼ばれ、>>の右に書かれたものを左の出力ストリームに送る

C++

Cが発展した言語

幅広いプログラミングタスクの為に開発されたプログラム言語

コメント

プログラムの理解を助けるためにプログラマーが記述するコメント

コードで直接表現できないプログラマの意図を説明するために書かれる。

たいていの場合一番役に立つのは自分自身にとってである

コンパイラ

コードを人が読める形式から、機会が読める形式に変換するもの

ソースコードをオブジェクトコードに変換するもの

コンパイルエラー

コンパイル時に発生するエラー

コンパイルによって検出されるエラー

cout

シーアウトと発音する。Charactor outputo systemの略称で標準出力ストリームを表す

モニタに文字列を表示する関数

実行可能プログラム

プログラムのうち機械が直接理解できる形式のもの

.exeの拡張子を持つファイルでプログラムの実行に使用する

関数

複数の命令をひとまとめにして名前をつけたもの

命令の集まり。名前、戻り値の型、パラメータ、関数本体から構成される。

ヘッダー

#includeを用いてインクルードされるファイル全般

main関数の上に記述し用語の定義などが記されているファイル。拡張子は.h

IDE

 

統合開発環境のことであり、プログラム開発に必要なあらゆるものがセットになっているもの

#include

外部かヘッダーファイルを読み取るための命令

 

ライブラリ

用語の定義などが記されているファイル、ヘッダーファイルの1種

リンカ

複数のオブジェクトファイルを結び付けて実行可能ファイルを生成するプログラム

main()

 あらゆるC++ファイルに含まれている関数

オブジェクトコード

 ソースコードコンパイルすることによってコンピュータが理解できる形式に変換したもの

出力

 画面上にデータを表示すること

プログラム

 何らかの問題解決を行うために記述される命令の集合体

コンピュータに対して、何をするかを正確に伝える必要があるが、その何をするかの説明のこと

ソースコード

 プログラムの実際の姿

 プログラムにおける最小単位。セミコロン;で1つ1つの文は区切られる

 

 

 

 

 

第1章 コンピュータ、人、プログラミング

1.1 はじめに

  1. プログラミングはなぜ価値ある行為なのか?
  2. 現代文明におけるプログラミングの役割は何か?
  3. プログラマが立派に貢献できる場所はどこか
  4. 現代文明はソフトウェアの上に成り立っている。ソフトウェアを改良し、ソフトウェアの新しい用途を見つけることで、多くの人々に貢献できる。プログラミングはそのことに関して不可欠な役割を果たす。

 

1.2 ソフトウェア

  1. 操作系とそれ以外→生活の中にプログラミングは溶け込んでいる

 

1.3 人

1.4 コンピュータサイエンス

  1. プログラミングはツールである。基礎的で実践的な問題への解決策を表現し、テスト、実験による改良、使用を可能にする基本ツールである。

1.5 偏在するコンピュータ

時計、運輸、電気通信、医学、情報、垂直視野

1.6 プログラマの基準

  1. 正確さを求め、信頼性を求める、うまく設計されていることを望む、手ごろな価格であることを望む、メンテナンス可能である必要がある
  2. コンピュータは細かいことにうるさく、容赦のない、愚かな機械である。
  3. 世の中は私たちが望む以上に複雑で、私たちは自分たちが要求するものの実際の意味をよく分かっていない。
  4. わたしたちは常識を前提にしがちである。
  5. プログラミングは理解することである。=タスクをプログラムできる=理解している
  6. プログラミングはテーマを完全に理解する試みの一部ある。
  7. プログラムはテーマの理解度を正確に写す鏡である。

 

プログラムの開発の4つのステージ

  • 分析 =>問題は何か?ユーザーは何を求めているか?ユーザーは何を必要とするか?ユーザーは何ができるか?どのような信頼性が必要か?

 

  • 設計 =>問題をどのようにして解決するか?システムの全体的な構造はどのようなものにすべきか?それはどのようなパーツで構成されるか?パーツとパーツはどのようにやり取りするか?システムとユーザーはどのようにやりとりするか?  

 

  • プログラミング =>問題への解決策(設計)をコードで表現する。すべての制約(時間、スペース、資金、信頼性など)を満たす方法でコードをする記述する。正確でメンテナンス可能なコードにする。

 

  • テスト =>体系的に試してみることによって、すべての状況下でシステムが正しく動作することを確認する。 
  1. プログラミングとテストはよく実装と呼ばれる。これらの開発ステージは順序よく進んでいくとは必ずしも限らない。
  2. フィードバックが重要である。私たちは経験から学び、学んだことに基づいて行動を変える
  3. イデア段階においては、設計上のアイデアを書き、それらを友人たちに説明してフィードバックを得るほうが簡単である。1人きりで設計することはなるべく避け、自分のアイデアを誰かに説明して試してみるまで、コーディングを開始してはならない。単にアイデアを明確にしようとするだけで、驚くほど多くのことを学べる。
  4. プログラムの実装で行き詰ったときは、問題そのものに関して考えてみる。誰かと話をする。自分が何をしたいのか、そしてなぜそれが上手くいかないのかを説明する。問題を誰かに丁寧に説明するだけで解決策が見つかることは意外と多い。必要がない限り、1人きりでデバックを行うことは適策ではない。
  5. イデアをコードで直接表現することは、プログラミングの基本原理である。
  6. 複素数型 int型 文字列 string型 複素数 complex型 グラフィックス Sharp型 Circle型 Color型 Dialog_box型 データストリーム isream型
  7. 最も基本的なレベルにおいて、アイデア、概念、エンティティ、【もの】として考える何か、ホワイトボードに描けるもの、言葉で表せるものがあるときにその何かをプログラムに名前付きのエンティティ(型)として存在させ、それにふさわしいと思われる操作を提供する。

復習

Q1

コンピュータ上で実行されるプログラムの集まり

Q2

現代の便利な生活はコンピュータを基盤に成り立っており、従ってそれらの働きを規定する役割になるソフトウェアも当然重要と言えるから

Q3

電話機、カメラ、ホームベーカリー、車、風力タービン、食料倉庫、牛舎などなどその他多数の場面

Q4

携帯電話のソフトウェアが正しく動作しない場合、画面の強制終了が発生する

エンジンの燃料噴射装置のソフトウェアが正しく動作しない悪燃費での運転を強いられる

Q5

カーナビゲーションシステムにおいて最短距離を進む道を高度なアルゴリズムによって導出する

Q6

ユーザーのニーズを考えること、他人と活発に意見を交換すること、実際にコーディングを行うこと

Q7

コンピュータサイエンスはコンピュータを用いて創造的な活動を行うために考慮すべき要因の全体集合を指し、プログラミングはその体系を形成する1部分になる

Q8

設計:

空間や部品の視覚化、計算全般、部品のシミュレーション

 

構造:

溶接ロボット、CAD/CAMによる銅板の切断'()

 

エンジン:

EFI(電子制御式燃料噴射装置)の制御

 

マネージメント:

運行経路のシミュレーション

 

監視:

人工衛星からのGPS情報の受け取り

商船の位置をいつで確認できるようなWEBサイト

Q9

WEBサービスを提供するコンピュータの集まり

Q10

2008年2月に211の地域から発信された通話の数

山田太郎はがんにかかったことがあるか

染野良一郎の注文したコーヒーメーカーは発送されたのか

Q11

ヒトゲノムの解析、人間の脳の構造の解析、テキストマイニング

Q12

CTスキャナ、執刀補助システム、カルテの閲覧システム

Q13

オンラインゲーム、映画におけるCG表現、漫画ソフト

Q14

正確さ、信頼性、うまく設計されていること、手ごろな価格であること、メンテナンス可能であること

Q15

ソフトウェアに求められる要求を満たしながら、設計、プログラムなどの諸活動を周囲との調和を保ちながら行う人

Q16

分析→設計→プログラミング→テスト

Q17

コンピュータは細かいことに厳しい愚かな機械であるから

現実の社会は私たちが思っている以上に複雑なものであるから

Q18

ヤマト運輸の商品配送システム

=いつ何を注文したとしても基本的には遅滞なく商品を届けてくれるから

Amazonのレコメンドエンジン

=自分の興味のある商品について推薦してくれるので商品購入の幅が広がる

図書館の在庫検索WEBシステム

=家にいながらにして、県内すべての蔵書の状態を知ることができる

 

Q19

う~ん、特に思いつかない

 

練習問題

Q1

テレビをつける

=リモコンからの操作受付はコンピュータによって行われている

=視聴者参加型の番組の場合、専門ソフトウェアで記述されていることになる

=制作されている番組じたい、コンピュータによって動く高性能ビデオカメラによって撮影されている

=映像の編集には、編集ソフトウェアが使用されている

Q2

中小企業/官公庁向け経営コンサルタント

=事業の分析に表計算ソフトウェアを使用する

=タブレットコンピュータによって相手方にプレゼンテーションを行う

=システム導入自体を提案することがある

 

Q4

図書館の在庫情報を調べること

東京に行くときの最も安い行き方を調べること

 

Q5

映像を編集する

最短経路を調べる

調べ物をする

ゲームをする

 

Q6

寝る

歩く

あくびをする

人と話をする

孤独に考えことをする

好きな人を思う

絵を描く

海に潜る

 

Q7

 店頭での接客

 街頭でのビラ配り

 単純ライン工

 教師による授業

 車の運転

 

Q8

私がコンピュータプログラマになりたいのは、自分の作った何らか形あるものをこの社会に残したいからである。そして、現代において価値ある生産物を生み出そうと思うならばもはやコンピュータが必ず関与してくることは自明のことであるように思う。

自分の思い描いたアイデアをすぐに形にできることによって、その他の優秀なプログラマともコミュニケーションが取れる。そのことによってはじめて組織システムを統括する資格を得ることができる、価値ある創造物作りに関与することができるようになると考えるのである。

 

Q9

顧客のニーズをくみ取り(あるいは顧客が真に抱えている問題を特定し)、プログラマに伝える役割を担いたいと思う。技術偏重になるばかりでユーザーの声に耳を傾けない技術者は驚くほど大勢存在するのではないかと私は考えており、そういった不幸を生み出さないためにも正しい道を示す先導者としての役割をソフトウェア開発において演じてみたいとは思うのである

Q10

私はコンピュータが思考体にまで発展する可能性は大いにあると考えている。

なぜなら私たちのを構成しているものは間違いなくこの地球に存在している物質であり、その構成さえ判明すれば人類がそれと全く同じものを作り出すのは不可能ではないと考えるからである。我々が抱く感情というものも所詮は物質同士反応、共鳴しておこる物理現象にすぎないと考えるわけである。

 

Q11

社交的である

あらゆる方面に好奇心旺盛である

コードを書く前の前段階の時間が長い

 

Q12

流通システムの管理

電車内の車内放送、発券システム、ブレーキ

ロケット制御

時計

カルテ管理システム

 

ロケット制御

=>夢がある

8月2日 エメリヤーエンコ=アレキサンダー

久々に快調に飛ばせた1日でした~

勝因は単にフレッツ光持ちが多かったことかな、それだけでも大分着地変わってくる。

やっぱり外部要因に影響されやすいお仕事。なんでもそうだろうけどね

 

キャッシュゲームのコツみたいなのが少し分かってきたかも。

コールの基準を持たないとバッドコールでいつか破産しそうなので、早めに作る!

 

試験終わったら本格的に、①ポーカー本②データアナリティクス③プロになるためのWEB開発&Ruby on Railsスクリーンキャストに取り組む!

 

GROM買ったらジムカーナにも挑戦してみたいなあせっかくだし!

そんな感じでした~!

 

今日のバンクロール

着地は36ドル!(1)雑魚手で不用意にリンプイン(2)降りない相手に無駄にブラフこの2つは大きく財を失うプレーだと分かった。逆に自分がエッジを得られるのはこういった低レベルの相手をしているとき。でっかい負けを減らす!

 

今日の新体験

ローソンでたらこスパゲッティを買った!(前も買ったかも笑)

8月1日 ウイリアム=クラーク

スマホで反復学習をすると思いのほか効率が良いことに気付く!

→あと1週間は真面目に勉強します..

 

0.05/0.10から0.1/0.25にレートを上げて一瞬で7ドル吹き飛ぶ事件が発生w

→自重せねばなあ。バンクロール管理を学ばねば、ポーカーは全てに通ず

 

栃木県でバイク購入して直帰してくる計画実行開始!

 

そとでピザ食いながら花火を見た

→きれいだった

 

今日の戦績

最終結果28ドル

一瞬43ドルまで増えたけど、暴走して一気にバンクロール削られるの巻!

→はい、酒飲んだときはやめときましょうね~|д゚) 

 

今日の新体験

ベランダで花火を見る

 

 

7月31日 ミルトン・フリードマン

日々ポーカーをプレイしていて常に気にしていなければいけないのは、

自分の選択したプレーが期待値(Expected Value)がプラスであるかどうか。

 

これがプラスなら、統計学でいう大数の法則に従って最終的には期待値通りにの成績に収束していくことになるっちゅうわけ。(分散が大きいゲームであればあるほど収束までに必要なプレー数は増えるみたいね)

 

自分のような、駆け出しプレイヤーの味方になってくれるのが、

Snowieというポーカートレーニングソフトウェアの存在!

 

公式HPにはこのソフトを使用してトレーニングを行ったことによってわずか三~四か月で富豪になったという青年のインタビューが乗っている笑

 

特にプリフロップのプレイに関してはかなり改善点が多いようなので(ベットすべき場所でコール&降りるべき場所でとりあえずついていく)まずはここから直していきたいところ!

 ーーーーーーーーーーーーーーー

今日の戦績

25ドル→41ドル→30ドル→40ドル

5ドルバイインのリングゲームで小遣い稼ぎな日でした。

 ーーーーーーーーーーーーーーー

今日の学習

中小企業政策/法務

税制に関して重点的に・・・・

 ーーーーーーーーーーーーーーー

今日の新経験

ヤフオク/メルカリ/フリマノに出品!

 ーーーーーーーーーーーーーーー