cs-12. 変数,入力と出力,関数
(コンピューターサイエンス)
URL: https://www.kkaneko.jp/cc/cs/index.html
1
金子邦彦
①実践的な学習。Trinket Python Tutor
を活用。段階的に確認しながら学習
プログラミング基礎。変数、入出力、関数、
繰り返し、条件分岐について、Pythonのプロ
グラム例で理解を深める。抽象化と関数の重要
ステップ実行によるプログラム動作の理解
プログラムのエラー対処力と論理的思考力の向
Pythonプログラミングの基本、問題解決能
力、自己学習力、実践的なツールの活用力の向
2
アウトライン
1. for による繰り返し
2. 条件分岐のステップ実行
3. 入力と出力
4. 式の抽象化と関数
5. 関数定義,def
3
プログラミング
プログラミング人間の力を増幅し、私たちができること
を大幅に広げる
プログラミングはさまざまな分野で活用されている
シミュレーション:複雑な現象をモデル化し、予測や
分析を行います
大量データ処理:データの収集、加工、分析
AIシステムの開発
Webサイト,アプリケーションなどのソフトウェア
プログラミングはクリエイティブな行為
さまざまな作業を自動化したいとき、問題解決したいとき
にも役立つ
4
プログラミングの楽しさと達成
楽しさ
未来の技術を学ぶことは楽しい。
プログラミングは自分のアイデアを形にできるクリエイ
ティブな行為。
視覚的なプログラムを書くことで、ゲーム感覚をもって
楽しみながら学習することも可能。
達成感
プログラミングを通じて問題解決のスキルを身につける
ことは、大きな達成感につながる
新しいソフトウェアや技術を生み出す。
5
trinket
Trinket オンライン PythonHTML 等の学習サイト
有料の機能と無料の機能がある
自分が作成した Python プログラムを公開し、他の人に実
行してもらうことが可能(そのとき、書き替えて実行も可
能)
Python の標準機能を登載、その他、次のモジュールや
パッケージがインストール済み
math, matplotlib.pyplot, numpy, operator, processing, pygal,
random, re, string, time, turtle, urllib.request
6
trinket Python, HTML などのプログラムを書き実行できる
サイト
https://trinket.io/python/cdc4896571
のように、違うプログラムには違う URL が割り当てられる
実行が開始しないときは、「実行ボタン」で実行
ソースコードを書き替えて再度実行することも可能
trinket でのプログラム実行
7
ソースコードの
メイン画面
実行結果
実行、STOP ボタン
12-1. for による繰り返し
8
タートルグラフィックス
カーソルを使って絵を描く
タートルグラフィックスを用いた演習により、プログラム
によって図形を描画する.それを通して、プログラムの
作を視覚的に理解
論理的思考力や課題解決力の向上にもつながる
9
(, 0)
(, 100)
(100, 0)
タートルグラフィックスの機能をインポー
トする「import turtle」が必要
タートルグラフィックス入門
主なメソッド
goto(<横方向の値>,<縦方向の値> 移動
forward(<移動量>) 前進
backword(<移動量>) 後退
right(<角度>) 右回りに回転
left(<角度>) 左回りに回転
10
メソッド
オブジェクト
メソッドは、オブジェクト
が持つ機能を呼び出すため
のもの
goto」は指定した座標へ
の移動
11
亀(タール)
の最初の位置
(0, 0)
(プラスの数, 0)
(マイナスの数, 0)
(0, プラスの数)
(0, マイナスの数)
メソッド goto の引数となる
縦方向の値と,横方向の値
演習1
for による繰り返し
ページ12~14
トピックス
trinket の利用
for による繰り返し
12
trinket の次のページを開く
https://trinket.io/python/895c3ea5b6
実行結果が,次のように表示されることを確認
13
trinket の次のページを開く
https://trinket.io/python/0d8dbc1139
実行結果が,次のように表示されることを確認
プログラム内の5」や「20」や「100」や
170」をいろいろ書き換えて実行してみ
14
まとめ
for を用いて特定の処理を繰り返すことができる.
for i in range(10)」は0から9までの値 i 順次
代入する
タートルグラフィックスカーソルで絵を描く
ツールで、gotoforwardbackwardrightleft
などのメソッドで操作
15
12-2. 条件分岐のステップ実行
16
ステップ実行
ステップ実行では、1行ずつの実行が行われ、そのときの
変数の値の変化などを確認できる
ステップ実行により、プログラムの動作を細かく追跡でき、
不具合が発生している箇所の特定、プログラムの学習に役
立つ
通常実行は、プログラムを最初から最後まで一度に実行
るもの(プログラム実行中の変数の値の変化を確認するな
どは困難)。ステップ実行は、プログラムを1行ずつ実行
し、実行後にプログラムを一時停止するもの。
17
条件分岐の Python プログラム
age の値が 11以下 500
12以上 1800
18
条件式は「age <= 11」のようになる
age = 18
if age <= 11:
print(500)
else:
print(1800)
19
Python Tutor というウェブサ
イトを利用しよう
http://www.pythontutor.com/
Web ブラウザを使ってアクセ
スできる
PythonTutor では,Python
けでなくJavaC,C++
JavaScriptRuby など,多く
のプログラミング言語を学ぶ
ことができる.
Python Tutor
Trinket Python Tutor の特徴と使い分け
Trinket
特徴:オンラインでPythonプログラムを実行・共有できる
使用目的:基本的なプログラム実行と結果確認
Python Tutor
特徴:プログラムの実行過程を視覚化し、変数の変化を追
跡できる
使用目的:プログラムの動作理解、デバッグ(プログラム
中の誤りの発見と解決)スキルの向上
20
Python Tutor の使用方法
まず,ウェブブラウザを開く
Python Tutor を利用するために,以下の URL
アクセス
http://www.pythontutor.com/
Python」をクリック 編集画面が開く
21
Python Tutor の編集画面
22
Python 3.6」になっている
実行のためのボタン
エディタ
(プログラムを書き換えることができる)
Python Tutor Python などのプログラムを書き実行できる
サイト.ステップ実行変数の値表示などの機能がある。
Python Tutorのウェブサイトにアクセス.「Python」を選択
https://www.pythontutor.com/
Python Tutor でのプログラム実行
23
Visualize Execution ボタン
メイン画面で、プログラムを書く
通常実行: Last
ステップ実行:First, Prev, Next
変数の値を
視覚的に
確認できる
メイン画面に
戻るには
Edit this code
Python Tutor でのプログラム実行手
24
(1)Visualize Execution」をク
リックして実行画面に切り替える
(2)Last」をクリック.
(3) 実行結果を確認する.
(4)Edit this code」をク
リックして編集画面に戻る
Python Tutor 使用上の注意点①
実行画面で,赤いエラーメッセージが出ることがある
過去の文法ミスに関する確認表示.
基本的には, 無視して問題ない
邪魔なときは「Close
25
Python Tutor 使用上の注意点②
please wait ... executing」のとき,10秒ほど待つ
Python Tutor が混雑しているとき Server
Busy・・・」 と表示される場合がある.
このメッセージは,サーバが混雑していることを示す.
数秒から数十秒待つ自動で処理が始まるはずです(し
かし,表示が変わらないときは,操作をもう一度試して
ください)
26
演習2
条件分岐のステップ実行
資料:27~ 37
トピックス
Python Tutor
字下げ
:
条件分岐
if
else
ステップ実行
27
ステップ実行により確認できること
28
ステップ実行により,ジャンプの様子を観察
ジャンプの
様子を示す
矢印
ステップ実行は、
ボタンやスライダーでコントロール
変数の値の
確認もできる
Python Tutor の起動
ウェブブラウザを起動する
Python Tutor を使いたいので,次の URL を開く
https://www.pythontutor.com/
Python」をクリック メイン画面が開く
29
30
if (age <= 11)の直後に「:
else の直後に「:
(どちらも,コロン)
字下げも正確に!
print の前に,「タブ (Tab)」を 1つだけ
Python Tutor のエディタで次のプログ
ラムを入れる
31
delキー」などを使い
ながら編集
正しくない字下げ
正しい字下げ
通常実行するために,「Visual Execution」を
クリック.そして「Last」をクリック.結果 1800
を確認
32
結果の
1800」を確認
⑥プログラム実行を最初の行に戻す操作
First」をクリックして,最初の行に戻す
33
⑦「Step 1 of 3」と表示されているので,
全部で,ステップ数 3 あることが分かる
(ステップ数と,プログラムの行数は違うもの
34
ステップ実行したいので,「Next」をクリッ
クしながら矢印の動きを確認
Next」ボタンを何度かクリックし,それ以上
進めなくなったら終了
35
見どころ
2行目から 5行目
ジャンプするところ
First, Prev, Next, Last ボタンとスライダーによ
よりプログラム実行を制御してみる
36
メイン画面に戻るには、「Edit this code」をク
リック
37
ステップ実行 まとめ
通常実行は、プログラムを最初から最後まで一度に実行
ステップ実行は、プログラムを1行ずつ実行し、実行後に
プログラムを一時停止するもの
ステップ実行により、プログラムの動作を細かく追跡でき、
不具合が発生している箇所の特定、プログラムの学習に役
立つ
38
12-3. 入力と出力
39
入力と出力
入力は,他のコンピュータや人間などが,コン
ピュータにデータを入れる
input は,キーボードから与えられたデータ(文字列)
を,Enter キーが押されるまで読み込む
出力は,コンピュータが,他のコンピュータや人
間などにデータを出す
print は,メッセージ(文字列)や,変数の値表示
行う
40
演習3
input による入力と print
よる出力
ページ41~43
トピックス
trinket の利用
input
print
41
trinket の次のページを開く
https://trinket.io/python/bdca234a3e
実行する。
右下の画面で 3 Enter キー
右下の画面で,続けて 5 Enter キー
結果の 7.5 を確認
3角形の面積を求めるプログラムである.いろいろ試して
みよう.
42
trinket の次のページを開く
https://trinket.io/python/3b490869e4
実行する。
右下の画面で 3 Enter キー
結果の 28.26 を確認
円周率を 3.14 として,半径から円の面積を求めるプログ
ラムである.いろいろ試してみよう.
43
12-4. 式の抽象化と関数
44
プログラミングの本質を考える
以下の問いについて、あなたの考えを書き出してみましょう。
1.プログラミングで最も難しい課題は何だと思いますか?
: バグの少ないプログラムを書くこと、複雑な問題を解決
すること
2.効率的にプログラムを書くために必要な基本スキルは何
でしょうか?
: 論理的思考力、問題分析力
これらの問いについて考えたら、次のページから学ぶ「抽象
化」という概念が、 あなたの回答とどのように関連してい
るか注目しながら読み進めてください
45
プログラミングでの抽象化
プログラミングでの根本問題:
誤り(バグ)のないプログラムの作成
プログラミングの一番の基礎
抽象化を行うこと
以降のページでは、抽象化の概念とその要性につ
いて詳しく説明します。
46
抽象化:複雑さを単純化する技術
抽象化は、複雑な詳細を隠し、本質的な特徴だけを
取り出す
47
例: 交通手段の抽象化
タクシー、バス、鉄道、自転車、徒歩
抽象化後:「移動手段」
共通の本質:ある場所から別の場所へ移動すること
プログラミングでの応用:
抽象化を使うと、複雑な問題を扱いやすくするこ
とができる
プログラミングにおける抽象化
48
ある値に 1.1 を掛ける
という共通の操作を行う
抽象化された式
a は任意の数を表す変数
a * 1.1
100 * 1.1
150 * 1.1
400 * 1.1
式の抽象化:類似した複数の式を1つにまとめ
複数の式
関数による抽象化
49
抽象化された式
a * 1.1
100 * 1.1
150 * 1.1
400 * 1.1
複数の式
抽象化された式
関数として定義
def foo(a):
return a * 1.1
《利点》
抽象化された式を関数として定義することで、
同じ式を何度も書く必要がなくなる
「抽象化された式」に名前が付くので、分
りやすくなる
変更は、関数内の変更だけで済む
関数による抽象化:プログラムの再利用性と
可読性の向上
①コードの簡潔化
抽象化前:
price1 = 100 * 1.1
price2 = 150 * 1.1
price3 = 400 * 1.1
抽象化後
def foo(a):
return a * 1.1
price1 = foo(100)
price2 = foo(150)
price3 = foo(400)
50
関数による抽象化:プログラムの再利用性と
可読性の向上
エラーリスクの低減
計算式を1回だけ書くため、タイ
プミスなどのヒューマンエラーが
減少
保守性の向上
例:税率が10%から8%に変更さ
れた場合 修正箇所は1か所だけ:
def foo(a):
return a * 1.08
51
抽象化前:
price1 = 100 * 1.1
price2 = 150 * 1.1
price3 = 400 * 1.1
抽象化後
def foo(a):
return a * 1.1
price1 = foo(100)
price2 = foo(150)
price3 = foo(400)
抽象化の重要性:40ページの問いかけへ
詳細な回答
プログラミングでの根本問題
誤り(バグ)のないプログラムの作成
抽象化により、同じようなことを何度も書くことが減り、
エラーの可能性が減少
プログラミングの一番の基礎
抽象化を行うこと
式の抽象化により、 バグの防止ができ、プログラムの
変更が容易になる
抽象化はプログラミングの根本問題を解決し、基礎となる
重要な概念です。
52
12-5. 関数定義,def
53
関数定義
54
この関数本体
return a * 1.1
この関数は,式「a * 1.1」に,名前 foo を付
けたものと考えることもできる
式の抽象化と関数
55
類似した複数の
実行結果
関数の定義と使用
同じ
実行結果になる
抽象化前
抽象化後
演習4
関数を定義し使ってみる
ページ56,57
トピックス
trinket の利用
式の抽象化と関数
関数定義
def
56
trinket の次のページを開く
https://trinket.io/python/68a090babf
実行結果が,次のように表示されることを確認
57
全体まとめ
プログラム実行の方法
通常実行: プログラムを最初から最後まで一度に実行
ステップ実行: プログラムを1行ずつ実行し、動作を細かく追跡
Python プログラムの基本構造
繰り返し: 特定の処理を反復
条件分岐: プログラムの流れを制御
入出力: input()で入力、print()表示
抽象化と関数
式の抽象化: 類似した複数の式を一つにまとめる
関数定義: def キーワードを使用して式に名前をつける
: def foo(a):
return a * 1.1
抽象化と関数の利点:同じ処理を何度も書く必要がなくなる、可読性
の向上、 保守性の向上: 変更が1箇所で済み、バグの防止にも貢献
学習ツール
Trinket: オンラインでのプログラム実行と結果確認
Python Tutor: プログラムの実行過程の視覚化とデバッグ
58
実践的スキルと思考力の向上Pythonプロ
グラミングの基礎習得。問題解決能力の向上。
抽象化」の理解。論理的思考力の向上。
学習体験。プログラム実行の成功体験。実
践的ツールによる体験。抽象化と関数の有用性
の実感。
デジタル社会のための実力。将来のプログ
ラミング応用へ向けた基礎取得。継続的学習の
基礎構築。
実用性と将来性。プログラミングは、作業
の自動化やデータ分析などの多様な用途がある。
将来のITエンジニアとしての実力強化。
59
今回の授業の学ぶ意義と満足感