(書きかけです)
プログラムの基本は 入力 > 処理 > 出力 です。プログラムのことを関数と呼ぶことがありますが、関数は英語で function つまり「何らかの機能を持ったもの」という意味で、世の中のあらゆるアプリケーションは、function の集合体と捉えることができます。
中学・高校の数学で登場する「関数」を思い出して下さい。例えば・・
y = 2x + 1 ・・・ y = f ( x ) と書いたりします
は、入力データ x を受け入れて、これに処理 f ( ) つまり「2倍して1加える」を施して、その結果を y として返す・・・つまり、入力>処理>出力の機能を数式で表現したものと言えます。
データサイエンスの演習では、その大半理を、各種ライブラリーに定義された関数を利用するだけで実現させていますが、自分自身でオリジナルの関数を作って利用することもできます。以下のように記述します。
# 自作関数の定義 def myFunc(x): # 入力:引数(ひきすう)として x を受け取る y = 2*x+1 # 処理 return y # 出力:戻り値として y を返す # 自作関数を利用したプログラム s = input("数を入力して下さい >>>") # 入力 x = float(s) # 処理(文字列を数値に変換) y = myFunc(x) # 処理(計算) print("計算結果:", y) # 出力 --- 実行結果 --- 数字を入力して下さい >>> 2.5 計算結果: 6
この事例は、演習の最初に作成した PythonBasics.ipnbに追記しておくことをおすすめします。
def は define(定義)という意味の英語の略です。
付記
プログラマーは、世界のあらゆる現象を関数(入力・処理・出力)として捉える思考を身につけることで、問題を効率的に解決しています。プログラミング教育の目的は、特定の言語によるコーディングの技術を身につけることではなく、プログラマー的思考を身につけることにあります。
データの集合体(プロパティ)と、それを操作する手続き(メソッド)を、ひとまとめにしたものをオブジェクトと言います。オブジェクト指向プログラミング(OOP)とは、このオブジェクトを要素単位として、それらの関係を記述するプログラミング手法です。
プロパティやメソッドを利用する際は、以下のように [ . ] 接続で記述します。
「モンテカルロ法で π の値を求める」プログラムのノートを、学科サイトの個人ページからリンクして下さい。以下、手順です。
このリンクを知っているインターネット上の全員が閲覧できます。
-[[MonteCarloMethod>https://colab.research.go・・=sharing]]
人間と道具は「共進化」するものです。今日の社会は、オブジェクト指向でプログラミングされたアプリケーションがその基盤を支えていることから、私たち自身、日常の様々な手続きや情報交換を通して、無意識のうちに、その思考的枠組の影響を受けていると言えます。逆に言えば、それを意識化することができれば、我々をとりまく社会システムをクリアに捉えることができます。
コンピュータの設計と人間の活動は、共に進化しなければならない
Apple Computer, 1987, Human Interface Guidelines
道具の使い方を学ぶことが私たち自身を変える・・ という点に人間と道具の関係の本質がある。
アラン・ケイ, 1994, 人間のためのコンピュータ, Addison Wesley Publisher JP
従来の「手続き型プログラミング」では、「データ」と「処理」はバラバラに捉えられていて、プログラマーは、処理を担う「関数(引数>処理>戻り値)」を、いかに独立性の高いものに仕立てるか・・ということに関心を集中させていましたが、機能、手続きを中心に構成されたプログラムには、以下のような問題がありました。
オブジェクト指向プログラミングでは「データ(プロパティ)」と「処理(メソッド)」をセットにした「オブジェクト」を構成単位と見なすとともに「オブジェクトのデータは、オブジェクトが持つメソッドによって処理される」と考えることで、プログラマーは、それがいかに単品としてうまく動くかということに専念できるようになりました。これは、画期的な意識改革です。
オブジェクトを具体的な「モノ・コト」に例えみましょう。例えば「車」は以下のようなデータと処理機能を持ったオブジェクトであると言えます。
我々が使っている自然言語で例えると・・・