po-4. 関数,抽象化

211 Views

December 21, 21

スライド概要

Python プログラミング演習
URL: https://www.kkaneko.jp/cc/po/index.html

profile-image

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

シェア

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

各ページのテキスト
1.

po-4. 関数,抽象化 プログラミングの基礎を Python で学びたい人へ(全9回) URL: https://www.kkaneko.jp/cc/po/index.html 金子邦彦 1

2.

アウトライン 4-1 復習 4-2 式の抽象化と関数 4-3 関数内の変数 4-4 関数呼び出し 4-5 関数の中で関数呼び出し • Python Tutor に慣れる. • 抽象化,関数について理解を深 める. 2

3.

4-1.復習 3

4.

Python のプログラム例 • 変数 x の値を 100 に変化させる 「x = 100」 4

5.

式と変数 まとめページ • 代入 「x = 100」のように書くと,x の値が 100 に 変化する • 式の実行結果として,値が得られる • 式の中に,変数名を書くことができる 式 5

6.

式の実行結果として,値が得られる 複数の式 実行結果 6

7.

演習の指示 • 資料:8~12 • 次のことを理解しマスターする • 式の結果として値が得られる 7

8.

演習 ① ウェブブラウザを起動する ② Python Tutor を使いたいので,次の URL を開く http://www.pythontutor.com/ 8

9.

③ 「Python Tutor」をクリック 9

10.

「Python 3.6」になっている エディタ 実行のためのボタン 10

11.

Python Tutor でのプログラム実行手順 (1)「Visualize Execution」 をクリック. (3) 結果を確認する. (2)「Last」をクリック. (4)「Edit this code」 11 をクリックして戻る

12.

④ 次のプログラムを実行し,結果を確認しなさい 12

13.

使用上の注意点1 • 次のような表示が出ることがある → 無視してよい 過去の文法ミスに関する確認表示 邪魔なときは「Close」 13

14.

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

15.

4-2.式の抽象化と関数 15

16.

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

17.

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

18.

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

19.

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

20.

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

21.

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

22.

演習の指示 • 資料:23 • 次のことを理解しマスターする • 式の抽象化と関数 22

23.

次のプログラムを実行し,結果を確認しなさい 表示を確認 23

24.

4-3.関数内の変数 24

25.

問いかけ • 関数 では,変数が使用されるこ とがあります. • 「関数内で使用される変数 は, 関数の実行終了とともに,自動 で消える」は正しいですか? 25

26.

• 関数 foo では,変数 a が使用されています • 「関数内で使用される変数 a は,関数の実行終了 とともに,自動で消える」は正しいですか? 26

27.

演習の指示 • 資料:28,29 • 次のことを理解しマスターする 「関数内で使用される変数は,関 数の実行終了とともに,自動で消 える」 27

28.

演習 次のプログラムを実行し,結果を確認しなさい 実行結果を確認 28

29.

・変数 p は残っている ・変数 a は自動的に消えている 29

30.

これでは動かない これは動く 「delキー」などを使いな がら書き換えてください 30

31.

関数の中の式の評価のタイミング foo(100) の値は 30000 a 100 x 300 foo(100) の値は 300000 a 100 x 3000 関数の中の式「a * x」の評価では, 最新の a の値,最新の x の値が用いられる 31

32.

4-4.関数呼び出し 32

33.

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

34.

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

35.

演習の指示 • 資料:36~43 • 次のことを理解しマスターする • Python Tutor でのステップ実行 の操作手順 • 関数呼び出しにおけるジャンプ • 関数内で使用される変数が消え るタイミング 35

36.

①「First」をクリックして,最初に戻しなさい 36

37.

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

38.

③ プログラム実行を最初に戻したので ・すべての変数は消えている ・赤い矢印は,先頭行に戻っている 38

39.

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

40.

⑤ 終わったら,もう一度,「First」をクリックし て,最初に戻しなさい 40

41.

⑥ もう一度,ステップ実行しなさい. 「Next」をクリックしながら, ・赤の矢印の動きを確認しなさい. • 変数 a が現れるのは,どういうタイミングですか? 関数 foo の実行中は, 変数 a が現れる 41

42.

⑦ 終わったら「Edit self code」をクリックして, 元の画面に戻る 42

43.

⑧ 次のように書き換えて,②から⑦と同じことを繰 り返しなさい 43

44.

関数呼び出し 呼び出し 関数main 関数foo 呼び出され 関数bar 呼び出され 44

45.

式の抽象化 a * 100 * 1.1 1つの式に抽象化 5 * 100 * 1.1 12 * 100 * 1.1 類似した複数の式 a * 100 a * 1.1 2つの式に抽象化 できるという考え方も 45

46.

単価 150円で,税率 10% のときのプログラム例 変数 c は個数のつもり 5個は 550円 12個は 1320円 46

47.

全体まとめ • 式の抽象化とは,変数を使って,複数の式を1つ にまとめる • 関数の中でのみ使用される変数は,関数の終了と ともに自動で消える • 関数の評価値は return で返す 47

48.

4-5.関数の中で関数呼び出し 48

49.

関数呼び出しの例 呼び出し 呼び出され 関数A 呼び出し 呼び出され 関数B プログラムは,しばしば,複数の 関数に「分割」される 49

50.

• 関数の中で関数を呼び出す場合 def foo(a): return a * 1.08 def bar(x): return foo(x) * 100 p = 12 print(bar(p)) p = 20 print(bar(p)) foo の呼び出し bar の呼び出し 50

51.

演習の指示 • 資料:52~60 • 次のことを理解しマスターする • 関数呼び出しにおけるジャンプ 51

52.

① Python Tutor のエディタで次のように書きなさい 「def foo(a)」と「def bar(x)」の 直後に「:」 字下げも正確に. 「タブ」を 1つだけ 52

53.

これでは動かない これは動く 「delキー」などを使いな がら書き換えてください 53

54.

②「Visualize Execution」をクリック 54

55.

③「Last」ボタンをクリック 55

56.

④ 表示を確認しなさい. 56

57.

⑤「First」をクリックして,最初の行に戻しなさい 57

58.

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

59.

⑦ ステップ実行したいので,「Forward」をクリッ クしなながら,緑の矢印の動きと, オブジェクト p, x, a の変化を確認しなさい. ※ 「Forward」ボタンを何度か押し,それ以上 進めなくなったら終了 見どころ 見どころ 59

60.

⑧ 終わったら「Edit this code」をクリックして, 元の画面に戻りなさい 60

61.

関連資料 • Python まとめページ https://www.kkaneko.jp/cc/python/googlecolab.html • Python の基本 Google Colaboratory,Paiza.IO を使用. https://www.kkaneko.jp/cc/colab/index.html • Python 入門(全6回) Google Colaboratoryを使用. https://www.kkaneko.jp/cc/pf/index.html • Python プログラミング演習(全9回) Python Tutor, VisuAlgo を使用 https://www.kkaneko.jp/cc/po/index.html • さまざまな Windows アプリケーションのインストールと設定 https://www.kkaneko.jp/cc/tools/index.html 61