cs-11. 式の抽象化と関数

592 Views

December 17, 21

スライド概要

トピックス: 式,変数,式の抽象化と関数,関数定義,def,関数呼び出し

コンピューターサイエンス
URL: https://www.kkaneko.jp/cc/cs/index.html

YouTube 動画
https://youtu.be/zeleeooCfT0

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

cs-11. 式の抽象化と関数 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 1

2.

式の抽象化と関数 プログラム 実行結果 実行結果 3つの式を1つにまとめる 式「a * 1.1」を含む 関数 foo を定義 110.00000000000001 440.00000000000006 は計算誤差を含む (誤作動やミスではない)2

3.

アウトライン 11-1 11-2 11-3 項目 復習 式,変数 式の抽象化と関数 関数定義,def 3

4.

ソースコード (source code) • プログラムを,何らかのプログラミング言語 で書いたもの • 「ソフトウエアの設計図」ということも. 人間も読み書き,編集できる • 複数のプログラミング言語を使うことも import picamera camera = picamera.PiCamera() camera.capture("1.jpg") exit() Raspberry Pi で,カメラを使って 撮影し,画像を保存するプログラムの ソースコード 4

5.

オブジェクト,変数,メソッド,代入,変数 • オブジェクト:コンピュータでの操作や処理の対象と なるもののこと • 変数:名前の付いたオブジェクトには,変数,関数な どがある(「変数」は,数学の変数とは違う意味) • メソッド: オブジェクトに属する操作や処理.メソッド 呼び出しでは,引数を指定することがある.引数(ひ きすう)は,メソッドに渡す値のこと Hero.attack("fence", 36, 26) • 代入:「=」を使用.オブジェクトの値が変化する b = a + 100 5

6.

メソッドアクセス,代入 Python プログラムの例 x = 100 a = x + 200 enermy1 = hero.findNearestEnemy() hero.attack(enemy1) • 代入:オブジェクト名 + 「=」 + 式または値またはメソッド呼び出し • メソッドアクセス:オブジェクト名 + 「.」 + メソッド名 +「()」 (引数を付けることも) Python プログラムでは,その他にも,属性アクセス,関数 呼び出し,制御,「*」, 「+」などの演算子,コマンド, 定義など 6

7.

Python Tutor の起動 ① ウェブブラウザを起動する ② Python Tutor を使いたいので,次の URL を開く http://www.pythontutor.com/ ③ 「Python」をクリック ⇒ 編集画面が開く 7

8.

Python Tutor でのプログラム実行手順 (1)「Visualize Execution」をク リックして実行画面に切り替える (2)「Last」をクリック. (4)「Edit this code」をク (3) 実行結果を確認する. 8 リックして編集画面に戻る

9.

Python Tutor 使用上の注意点① • 実行画面で,次のような赤の表示が出ることがある → 無視してよい 過去の文法ミスに関する確認表示 邪魔なときは「Close」 9

10.

Python Tutor 使用上の注意点② 「please wait ... executing」のとき,10秒ほど待つ. → 混雑しているときは, 「Server Busy・・・」 というメッセージが出ることがある. 混雑している.少し(数秒から数十秒)待つと自 動で表示が変わる(変わらない場合には,操作を もう一度行ってみる) 10

11.

11-1. 式,変数 11

12.

いまから 行うこと • Python で,式や変数や計算に 上達する 12

13.

式の実行結果 式の実行結果として,値が得られる print(100 * 200) プログラム 実行結果 13

14.

変数 • 名前の付いたオブジェクトのことを変数という 場合がある(数学の変数とは違う意味) • 式の中に変数を含めることができる x = 100 y = 200 print(x + y) プログラム 実行結果 14

15.

代入 • 代入:プログラムで,「x = 100」のように書く と,x の値が 100 に変化する x = 100 プログラム 実行結果 15

16.

演習 資料:17 ~ 20 【トピックス】 • 式と変数 16

17.

① Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する x = 100 y = 200 print(x + y) 結果の 「300」を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 17

18.

② Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する x = 100 y = 200 print(x * y) 結果の 「20000」を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 18

19.

③ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する x = 100 y = 200 print((x + 10) * y) 結果の 「22000」を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 19

20.

④ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 底辺が2.5で,高さが5のとき, 三角形の面積は,面積: 6.25 teihen = 2.5 takasa = 5 print(teihen * takasa / 2) 結果の 「6.25」を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 20

21.

まとめ • 代入:プログラムで,「x = 100」のように書く と,x の値が 100 に変化する • 式の実行結果として,値が得られる • 式の中に,変数名を書くことができる x = 100 y = 200 print(x + y) 21

22.

11-2. 式の抽象化と関数 22

23.

問いかけ • プログラミングでの根本問題は 何でしょうか? • プログラミングの一番の基礎は 何でしょうか? 23

24.

式の抽象化 100 * 1.1 150 * 1.1 400 * 1.1 類似した複数の式 a * 1.1 変数 a を使って,複数 の式を1つにまとめる (抽象化) 24

25.

式の抽象化と関数 100 * 1.1 a * 1.1 150 * 1.1 400 * 1.1 類似した複数の式 変数 a を使って,複数 の式を1つにまとめる (抽象化) 式「a * 1.1」を含む 関数 foo を定義 関数 foo を使用. 100, 150, 400 は引数 25

26.

抽象化がなぜ大切なのか • プログラミングでの根本問題は何でしょうか? 誤り(バグ)の無いプログラムの作成 • プログラミングの一番の基礎は何でしょうか? • 抽象化を行うこと. • 抽象化により,繰り返し同じことを書くことが減り, バグを防げる. • プログラムの変更(消費税率 10%変更)も簡単に. 26

27.

11-3. 関数定義,def 27

28.

関数定義 • この関数の本体は 「return a * 1.1」 • この関数は,式「a * 1.1」に,名前 foo を付 けたものと考えることもできる 28

29.

式の抽象化と関数 抽象化前 類似した複数の式 実行結果 抽象化後 関数の定義と使用 同じ 実行結果になる 29

30.

演習 資料:31 【トピックス】 • 式の抽象化と関数 • 関数定義 • def 30

31.

Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する def foo(a): return a * 1.1 print(foo(100)) print(foo(150)) print(foo(400)) 結果を確認 (計算誤差がある. 「return a * 1.1」の行は字下げが必要 動作は正常) 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 31

32.

11-4. 関数呼び出し 32

33.

関数呼び出し 呼び出し 呼び出され foo 33

34.

ステップ実行 ステップ実行により、プログラム 実行の流れをビジュアルに観察 34

35.

演習 資料:36 ~ 42 【トピックス】 • 関数呼び出しにおけるジャン プ • 関数内で使用される変数が消 えるタイミング 35

36.

① Python Tutor のエディタで次のプログラムを入 れ,実行し,結果を確認する(あとで使うので消 さないこと) def foo(a): return a * 1.1 print(foo(100)) print(foo(150)) print(foo(400)) 結果を確認 (計算誤差がある. 「return a * 1.1」の行は字下げが必要 動作は正常) 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 36

37.

②「First」をクリックして,最初に戻る 37

38.

③ 「Step 1 of 13」と表示されているので, 全部で,ステップ数は 13 あることが分かる (ステップ数と,プログラムの行数は違うもの) 38

39.

④ 最初に戻したので ・すべてのオブジェクトは消えている ・赤い矢印は先頭のところに戻っている 39

40.

⑤ ステップ実行したいので,「Next」をクリック しながら,矢印の動きを確認. ※「Next」ボタンを何度か押し,それ以上進めなく なったら終了 見どころ foo との間で ジャンプするところ 40

41.

⑥ 終わったら,もう一度,「First」をクリックし て,最初に戻る 41

42.

⑦ もう一度,ステップ実行. 今度は、緑の矢印を見ながら、変数 a が生成、消 去されるタイミングを確認 緑の矢印:いま実行が終わった行 関数 foo の実行中は, 変数 a が現れる 42

43.

全体まとめ プログラム 実行結果 実行結果 3つの式を1つにまとめる 式「a * 1.1」を含む 関数 foo を定義 110.00000000000001 440.00000000000006 は計算誤差を含む (誤作動やミスではない) 43