658 Views
December 17, 21
スライド概要
トピックス: オブジェクトとメソッド,引数,代入,データの種類,制御,コードコンバット(Code Combat)の紹介
コンピューターサイエンス
URL: https://www.kkaneko.jp/cc/cs/index.html
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
cs-10. Python プログラミングの基 本 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 1
オブジェクト,変数,メソッド,代入,変数 • オブジェクト:コンピュータでの操作や処理の対象と なるもののこと • 変数:名前の付いたオブジェクトには,変数,関数な どがある(「変数」は,数学の変数とは違う意味) • メソッド: オブジェクトに属する操作や処理.メソッド 呼び出しでは,引数を指定することがある.引数(ひ きすう)は,メソッドに渡す値のこと Hero.attack("fence", 36, 26) • 代入:「=」を使用.オブジェクトの値が変化する b = a + 100 2
条件分岐,繰り返し(ループ) • 条件分岐 x > 20 のときのみ print("big") が実行される x ≦ 20 のときのみ print("small") が実行される • 繰り返し(ループ) 足し算の 5回繰り返し(0 + 1, 1 + 2, 3 + 3, 6 + 4, 10 + 5) 同じ結果 15 が得られる 3
アウトライン 10-1 10-2 10-3 10-4 項目 復習 オブジェクトとメソッド,引数,代入 データの種類 制御 コードコンバット(Code Combat)の紹 介 4
ソースコード (source code) • プログラムを,何らかのプログラミング言語 で書いたもの • 「ソフトウエアの設計図」ということも. 人間も読み書き,編集できる • 複数のプログラミング言語を使うことも import picamera camera = picamera.PiCamera() camera.capture("1.jpg") exit() Raspberry Pi で,カメラを使って 撮影し,画像を保存するプログラムの ソースコード 5
プログラミング • コンピュータによりさまざまな問題を解くとき,プ ログラミングが役立つ (例)現在の日時,最大公約数,平方根,三角 関数など • コンピュータを使うからといって,計算が完璧に正 確というわけではない • さまざまなプログラミング言語がある.用途や状況 に応じて使い分ける • 「1つを知っていれば,どの言語も大体似ているの 6 で,応用が利く」という考え方もある
プログラムが役に立つ理由 ① プログラム次第で,様々な処理が可能. ② プログラムは,コンピュータでの様々な処理を自 動化する ③ プログラムのソースコードは,作業記録としても 使うことができる.いつでも再現できる. ④ プログラム中の値などを変えて再実行も簡単 7
10-1. オブジェクトとメソッド,引数, 代入 8
オブジェクト • オブジェクト:コンピュータでの操作や処理の対 象となるもののこと • 名前の付いたオブジェクトには,変数,関数,モ ジュールなどがある. 9
オブジェクトとメソッド hero.moveDown() Python プログラム hero オブジェクト moveDown() メソッド 間を「.」で区切っている • メソッド: オブジェクトに属する操作や処理. • メソッド呼び出しでは,引数を指定することがある.引数 (ひきすう)は,メソッドに渡す値のこと Hero.attack("fence", 36, 26) 10
オブジェクトとメソッド オブジェクトが動く 実行画面 オブジェクトとメソッド (Python プログラム) 11
オブジェクトが動く 実行画面 オブジェクトとメソッド (Python プログラム) 12
メソッドの引数 オブジェクトが動く 実行画面 オブジェクトとメソッド (Python プログラム) 引数がある場合もあれば, ない場合もある. 13
代入 • 代入:プログラムで,「x = 100」のように書く と,x の値が 100 に変化する x = 100 プログラム 実行結果 14
メソッドアクセス,代入 Python プログラムの例 x = 100 a = x + 200 enermy1 = hero.findNearestEnemy() hero.attack(enemy1) • 代入:オブジェクト名 + 「=」 + 式または値またはメソッド呼び出し • メソッドアクセス:オブジェクト名 + 「.」 + メソッド名 +「()」 (引数を付けることも) Python プログラムでは,その他にも,属性アクセス,関数 呼び出し,制御,「*」, 「+」などの演算子,コマンド, 15 定義など
10-2.データの種類 16
Python の主なデータの種類 データの種類 データ型名 Python プログラムでの書き方 整数 int 10 Decimal import decimal decimal.Decimal(10) 浮動小数 float 1.23 文字列 str "Hello, World\n" true/false bool True 日時 datetime.datetime import datetime as dt dt.datetime(2022, 12, 1, 1, 23, 45) リスト List [1, 2, 3] レンジ range range(1, 4) 辞書 dict {1: "orange", 2: "apple", 3: "apple"} numpy 配列 numpy.ndarray import numpy as np np.array([1, 2, 3]) 17
演習 資料:19 ~ 22 【トピックス】 • データの種類 • 変数 18
変数 ① Python Tutor のエディタで次のプログラムを入れ る. 整数を使ってみる. 変数 x の値を 100 に変化させる. 次のように「x = 100」を入れる. 19
② 実行し,結果を確認する 「x 100」となっている. 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 20
変数 ③ Python Tutor のエディタで次のプログラムを入れ る. 今度は、文字列を使ってみる 21
④ 実行し,結果を確認する. 「s "Hello"」となっている. 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 22
10-3. 制御 23
制御 • プログラムは,上から順に実行(逐次実行)が基 本である • 条件分岐では,「実行される部分」と「実行され ない部分」がある • 繰り返し(ループ)では,同じ部分が繰り返し実 行される 24
条件分岐 条件分岐では,「実行される部分」と「実行され ない部分」がある 実行結果 プログラム x > 20 のときのみ print("big") が実行される x ≦ 20 のときのみ print("small") が実行される 25
繰り返し(ループ) 繰り返し(ループ)では,同じ部分が繰り返し実 行される 実行結果 プログラム 足し算の 5回繰り返し 0 + 1, 1 + 2, 3 + 3, 6 + 4, 10 + 5 26
繰り返し(ループ) while True: hero.moveRight() hero.moveLeft() Python プログラム 同じ処理や操作を繰り返す これをマスターしておく. 他の多くのプログラミング言語でも応用がきく. 27
オブジェクト,変数,メソッド,代入,変数 • オブジェクト:コンピュータでの操作や処理の対象と なるもののこと • 変数:名前の付いたオブジェクトには,変数,関数な どがある(「変数」は,数学の変数とは違う意味) • メソッド: オブジェクトに属する操作や処理.メソッド 呼び出しでは,引数を指定することがある.引数(ひ きすう)は,メソッドに渡す値のこと Hero.attack("fence", 36, 26) • 代入:「=」を使用.オブジェクトの値が変化する b = a + 100 28
条件分岐,繰り返し(ループ) • 条件分岐 x > 20 のときのみ print("big") が実行される x ≦ 20 のときのみ print("small") が実行される • 繰り返し(ループ) 足し算の 5回繰り返し(0 + 1, 1 + 2, 3 + 3, 6 + 4, 10 + 5) 同じ結果 15 が得られる 29
10-4. コードコンバット(Code Combat)の紹介 30
Python まとめ • オブジェクトとメソッド hero.moveDown() hero はオブジェクト moveDown() はメソッド • 文字列は「"」または「'」で囲む • メソッド呼び出しでは,引数を指定することがある hero.attack("fence", 36, 26) hero.attack(enemy1) • 変数と代入 x = "Door" • メソッドの結果を,変数に代入 enermy1 = hero.findNearestEnemy() • 繰り返し(ループ) while True: hero.moveRight() hero.moveLeft() 31
コードコンバット • コードコンバットは,Python プログラムの実習ができ るオンラインサービス • • • • • • オブジェクト メソッド 文字列 引数 変数と代入 繰り返し(ループ) プログラム実行結果 プログラム編集 がビジュアルに表示 の画面など される画面など 32
コードコンバットを使うには URL: https://codecombat.com • 各自で会員登録することもできる(メリット:課金アイテ ムを買うことができる.履歴が残る) ・メールアドレス ・パスワードは,コードコンバット専用の パスワードを自分で考える ・誕生日 • 課金のメッセージがでたら,注意深く対処する • この資料では,会員登録しないとして説明する • 最初のダンジョンのクリア:目安は1から3時間 33
① Web ブラウザを使う • https://codecombat.com 「課金のメッセージ」などで心配なことが あるときは,無理に使い続けないこと 課金のメッセージの例 34
② 「今すぐプレイ」をクリック • 「日本語」になっていない場合には,日本語に変える • アカウント登録やログインは行わないことにする 35
③ キースガードのダンジョンを選んでみる。 「ゲームスタート」をクリック 36
④ 「キースガードのダンジョン」の最初の ダンジョンを選ぶ 音声が出るので、このとき、各自で「音量」を調整 ゴール 課金なしで も ゴールに 行ける 最初のダンジョン 37
⑤ 「ゲームスタート」をクリック 38
⑥ 「Python(デフォルト)」を選び、「次 へ」をクリック 39
⑦ 使用可能なアイテムを選ぶ(ダブルク リック) 40
⑧「ゲームスタート」をクリック 41
⑨ 「レベルスタート」をクリック 42
ヒントを見たいときは、「ヒント」を クリック 43
メソッドの説明を見たいときは、「メソッ ド」の下のリストの中から、説明を見たい メソッドをクリック 44
⑩ 編集画面で、試しに、 「hero.moveDown()」と追加して、「実行」 をクリックしてみる 45
⑪ 「実行」で,キャラクタが動くので確認 する hero.moveRight() で右に動き、hero.moveDown() で 下に動く 46
迷ったら,「ミッション(目標)」や 「ヒント」を確認する • プログラミングの練習だけでなく,ゲーム要素 (パズル)もある.楽しんで解く. • ヒントや説明が,英語で表示される場合がある (日本語版が無いときは英語表示) 47
⑫「目標:成功!」になるまで、編集画面を 書き換えて、「実行」を繰り返す。 • 「目標:成功!」になったら「完了」をクリック 48
⑬ 完了の確認.「続ける」をクリック 49
ダンジョンのゴールを目指す • 赤い旗をたどり,ダンジョンのゴールを目指す • 有料のダンジョンもある.支払いをしない場合は, 有料のダンジョンは選べない 赤い旗をたどる 青い旗は有料のことも 50
⑭ ダンジョンの出口を目指す 51
オブジェクト,変数,メソッド,代入,変数 • オブジェクト:コンピュータでの操作や処理の対象と なるもののこと • 変数:名前の付いたオブジェクトには,変数,関数な どがある(「変数」は,数学の変数とは違う意味) • メソッド: オブジェクトに属する操作や処理.メソッド 呼び出しでは,引数を指定することがある.引数(ひ きすう)は,メソッドに渡す値のこと Hero.attack("fence", 36, 26) • 代入:「=」を使用.オブジェクトの値が変化する b = a + 100 52
条件分岐,繰り返し(ループ) • 条件分岐 x > 20 のときのみ print("big") が実行される x ≦ 20 のときのみ print("small") が実行される • 繰り返し(ループ) 足し算の 5回繰り返し(0 + 1, 1 + 2, 3 + 3, 6 + 4, 10 + 5) 同じ結果 15 が得られる 53