539 Views
December 21, 21
スライド概要
トピックス:プログラミング,Python Tutor での Python プログラム実行,プログラムによる問題解決,計算誤差,さまざまなプログラミング言語
Python プログラミングの基本
https://www.kkaneko.jp/pro/po/index.html
金子邦彦研究室ホームページ
https://www.kkaneko.jp/index.html
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
po-1. プログラミング 入門 トピックス:プログラミング,Python Tutor での Python プログラム実行,プログラムによる問題解 決,計算誤差,さまざまなプログラミング言語 URL: https://www.kkaneko.jp/pro/po/index.html (Python プログラミングの基本) 金子邦彦 1
Python プログラムの
ソースコード
x = 100
if (x > 20):
print("big")
else:
print("small")
s=0
for i in [1, 2, 3, 4, 5]:
s=s+i
print(s)
Python
オンラインでの Python プログラム
実行(Python Tutor を使用)
public class Main {
public static void main(String[] args) throws Exception
{
int x = 100;
if (x > 20) {
System.out.printf("big\n");
} else {
System.out.printf("small\n");
}
int s = 0;
for(int i = 1; i <= 5; i++) {
s = s + i;
}
System.out.printf("%d\n", s);
}
}
Java
さまざまな
プログラミング言語
#include <stdio.h>
int main(void){
int x, s, i;
x = 100;
if (x > 20) {
printf("big\n");
} else {
printf("small\n");
}
s = 0;
for(i = 1; i <= 5; i++) {
s = s + i;
}
printf("%d\n", s);
return;
}
C
2
24 と 18 の最大公約数を求めたい プログラム 実行結果 コンピュータは便利なものであるが,コンピュータを使うから といって,計算が完璧に正確というわけではない プログラム 実行結果 3
アウトライン 1-1 1-2 1-3 1-4 1-5 1-6 項目 プログラミング Python Tutor での Python プログラム 実行 プログラムによる問題解決 計算誤差 さまざまなプログラミング言語 9回の全体計画 4
1-1. プログラミング 5
プログラム • コンピュータは,プログラムで動く • プログラムを設計,制作することはクリエイティ ブである 6
① さまざまなアプリ Web ブラウザ ワープロ (マイクロソフト・ワード) アプリでは,プログラムが動いている 7
② コンピュータを細かくコントロール 人工知能のプログラム (Python 言語) ニューラルネットワークを 作成している 8
③ コンピュータどうしがつながるときも プログラムが必要 プログラム プログラム ネットワーク 利用者 コンピュータ 利用者 利用者 サーバ(サービスを提供する ITシステム) プログラム プログラム 9
プログラミング (programming) • コンピュータは,プログラムで動く • プログラミングは,プログラムを設計,製作する こと • 何らかの作業を,コンピュータで実行させるため に行う Python プログラムの ソースコード プログラムの 実行結果 10
ソースコード (source code) • プログラムを,何らかのプログラミング言語で書 いたもの • 「ソフトウエアの設計図」ということも. • 人間も読み書き,編集できる import picamera camera = picamera.PiCamera() camera.capture("1.jpg") exit() Raspberry Pi で,カメラを使って 撮影し,画像を保存するプログラムの ソースコード(Python 言語) 11
プログラムが役に立つ理由 ① プログラム次第で,様々な処理が可能. ② プログラムは,コンピュータでの様々な処理を自 動化する ③ プログラムのソースコードは,作業記録としても 使うことができる.いつでも再現できる. ④ プログラム中の値などを変えて再実行も簡単 12
プログラミングで気を付けること ① コンピュータにも,できないことがある ② コンピュータを使うからといって,計算が完璧に正確とい うわけではない ③ 人間がプログラムを作るとき,書き間違い,勘違い,思い 込みなどによるミスがありえる. ④ 「プログラムが期待通りに動いているか」のテストが重要 ⑤ ミスを減らすためにも,「やりたいこと」を1回書いて済 ませることが大切.次のようなさまざまな手段がある • 抽象化 • モジュール,標準ライブラリ • クラス階層 ⑥ 問題をコンピュータで解くとき,解くべき問題を深く理解 した上で,必要に応じて,算法(アルゴリズム)を活用する13
1-2. Python Tutor での Python プログラム実行 14
Python • プログラミング言語 • 「入門者に学習しやすい」とされる • 多数の拡張機能(外部プログラムのインポートに よる) 15
Python の主なキーワード • print 表示 • type 型名(クラス名)の取得 • if, else 条件分岐 • for, while 繰り返し • def 関数定義 • return 関数の評価値 • class クラス定義 • __init__ オブジェクトの生成(コンストラクタ) • self クラス定義内で自オブジェクトへアクセス • vars オブジェクトの属性名と値 • super 親クラス(スーパークラス) 16
Python プログラムの実行 ① ソースコードをファイルに保存し,python コマ ンドで実行 python コマンドで実行. 実行時にファイル名を指定. ソースコードを ファイルに保存 • Python のインストール必要 https://www.python.org • Windows では,python コマンドで実行 • 終了は exit() 17
Python プログラムの実行 ② Python コンソールを使用.Python プログラム を入れるたびに結果が得られる(対話的実行と言っ たりする). 実行 結果 実行 結果 python コマンド • Python のインストール必要 https://www.python.org • Windows では,python コマンドで実行 • 終了は exit() Jupyter QtConsole • インストール必要 https://www.kkaneko.jp/tools/win /tools.html#python • 「jupyter qtconsole」で起動 18
Python プログラムの実行 ③ Python ソースコードの編集,実行機能を持った アプリを利用 実行ボタン 編集画面 実行結果 PyScripter の画面 19
Python プログラムの実行 ④ Python のノートブックを使用.Python プログ ラムを,コードセルの中に入れておく.コードセル 内のプログラムは,編集,実行可能. Python プログラム Python プログラム 実行結果 Python プログラム 20
まとめ Python プログラムの実行にはさまざまな方法が ある ① ソースコードをファイルに保存し,python コマン ドで実行 ② Python コンソールを使用.Python プログラムを入 れるたびに結果が得られる(対話的実行と言ったりす る). ③ Python ソースコードの編集,実行機能を持ったア プリを利用 ④ Python のノートブックを使用.Python プログラム を,コードセルの中に入れておく.コードセル内のプ ログラムは,編集,実行可能. 21
Python の使い方(Windows パソコン) • Python 処理系の起動(Windows の場合) • python または py -3.10 (3.10 はバージョン番号) • pip の起動(Windows の場合) • コマンドプロンプトを管理者として実行し,python -m pip または py -3.10 –m pip(3.10 はバージョン番号) • Python 開発環境 • • • • Jupyter Qtconsole Nteract Jupyter Lab spyder jupyter jupyter jupyter spyder qtconsole で起動 nteract で起動 lab で起動 で起動 Python 処理系と開発環境のインストール手順は、次の ページ等で説明 https://www.kkaneko.jp/cc/tools/index.html 22
開発環境とは 開発環境は、プログラミングにおけるさまざま なことを支援する機能をもったプログラム • プログラムの作成、編集(エディタ) • プログラム中の誤り(バグ)の発見やテストの支援 (デバッガ) • プログラムの実行 • マニュアルの表示 • プログラムが扱うファイルのブラウズ • プログラムの配布(パッケージ機能など),共有, 共同編集 • 公開,共有,共同編集 • バックアップ,バージョン管理 ※ これらが簡単に行えるようになる 23
Python Tutor • プログラミング学習を行えるオンラインサービス http://www.pythontutor.com/ • Web ブラウザを使う • たくさんの言語を扱うことができる Python, Java, C, C++, JavaScript, Ruby など 24
Python Tutor の起動 ① ウェブブラウザを起動する ② Python Tutor を使いたいので,次の URL を開く http://www.pythontutor.com/ ③ 「Python」をクリック ⇒ 編集画面が開く 25
Python Tutor の編集画面 「Python 3.6」になっている エディタ (プログラムを書き換えることができる) 実行のためのボタン 26
Python Tutor でのプログラム実行手順 (1)「Visualize Execution」をク リックして実行画面に切り替える (2)「Last」をクリック. (4)「Edit this code」をク (3) 実行結果を確認する. リックして編集画面に戻る 27
Python Tutor 使用上の注意点① • 実行画面で,次のような赤の表示が出ることがある → 無視してよい 過去の文法ミスに関する確認表示 邪魔なときは「Close」 28
Python Tutor 使用上の注意点② 「please wait ... executing」のとき,10秒ほど待つ. → 混雑しているときは, 「Server Busy・・・」 というメッセージが出ることがある. 混雑している.少し(数秒から数十秒)待つと自 動で表示が変わる(変わらない場合には,操作を もう一度行ってみる) 29
演習 資料:31 ~ 34 【トピックス】 • Python Tutor の使い方 30
① Python Tutor のエディタで次のプログラムを入 れる print(100 * 200) すべて半角文字 「*」は掛け算の記号 ② 実行するために,「Visual Execution」をク リック.そして「Last」をクリック.結果を確認 31
③ 「Edit this code」をクリックして,エディタ の画面に戻る 32
④ Python Tutor のエディタで次のプログラムを入 れる x = 100 すべて半角文字 ⑤ 実行するために,「Visual Execution」をク リック.そして「Last」をクリック.結果を確認 33
⑥「Edit this code」をクリックして,エディタの 画面に戻る 34
1-3. プログラムによる問題解決 35
プログラムは何の役に立つか • コンピュータを使い,さまざまな問題を解くこと ができる • 人間は,コンピュータを使いこなす(コンピュー タが人間の能力を増幅する). • コンピュータへの指令を行うのがプログラム. プログラム アプリケーション Word, Excel, Web ブラウザなど コンピュータ 自作のプログラムなど 自作の Python プログラム,Java プログラムなど 36
演習 資料:38 ~ 43 【トピックス】 • プログラムでできること 37
プログラムで出来ることの例 計算問題 • 現在の日時 • 最大公約数 • 平方根 • 円周率 • 三角関数 その他,データ処理,データ送受信,AI,グラフィックス など,コンピュータによる情報処理や情報通信 38
① Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する オペレーティングシステム(コンピュータ)のタイマー を利用.いまの日時が表示される import datetime now = datetime.datetime.now() print(now) 結果を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 39
② Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 24 と 18 の最大公約数を求めたい import math print( math.gcd(24, 18) ) 結果の 「6」を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 40
③ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 面積が 7 の正方形の一辺の長さは? import math print( math.sqrt(7) ) 結果の 「 2.6457513110645907」 を確認(結果は近似値) 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 41
④ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 半径 3 の円の面積は? import math print( 3 * 3 * math.pi ) 結果を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 42
⑤ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 三角形の2辺の長さが,4と6で,その間の角度が60度 のとき,面積は (1/2) × 4 × 6 × sin(60) import math print( (1/2) * 4 * 6 * math.sin(60 * math.pi / 180) ) 結果を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 43
1-4. 計算誤差 44
コンピュータで「1÷3」 を求めると どうなると思いますか 1. 0.333333333333333333333333333333 と無 限に表示される 2. 計算できない 3. 正確な値が表示されない(誤差を含む) 45
演習 資料:47 ~ 51 【トピックス】 • 計算誤差 46
① Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 結果を確認 0.00000000000000003333333333 3333333333333333333333333... が誤差! 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 47
② Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 結果を確認 計算誤差がある 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 48
③ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 結果を確認 計算誤差がある 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 49
④ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する print(0.333333333333333 * 3) ※ 「3」は15個.(すべて半角文字) 結果を確認 計算誤差がある 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 50
⑤ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 結果を確認 計算誤差がある場合と無い場合が ある 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 51
• コンピュータだから「計算が完璧に正確」という 思い込みはしないこと 1 ÷ 3 を計算して表示させると、 正確な値が表示されない(誤差を含む) • 誤差があっても、十分に役に立つ • 誤差を許しているから、計算が効率的に済むとい う考え方もある 52
1-5. さまざまなプログラミング 言語 53
プログラミングを学ぶときに気を付けること • プログラミング言語には,種類が数多くある • 基礎となる知識が大事. 一度,あるプログラミング言語で基礎をマス ターしておけば,他のプログラミング言語でも 応用が利く,という考え方も 54
• 複数のプログラミング言語を学 ぶことは大事. 賛成できますか? プログラミング 言語は複数ある • 「1つを知っていれば,どの言 語も大体似ているので,応用が 利く」という考え方もある. • 「やりたいこと,学びたいこと に向いた言語を,そのときどき で選ぶのが,一番良い」とも. • 人によって「好きな言語が違 う」ということも 55
さまざまなプログラミング言語 • Python •C • Java • JavaScript ここで行う作業 1.20 より大きければ「big」, さもなければ「small」と表示 2.0 + 1 + 2 + 3 + 4 + 5 を求める •R • Octave • Scheme など 56
なぜプログラミング言語は たくさんあるのでしょうか? それぞれ 特徴があ る Java R SQL MATLAB / Octave どのコン 初心者向 コン ピュータ け.その ピュータ でも同じ おかげで, の性能を 「データ 処理」に 特化した 「データ ベース」 に特化し 「数値計 算」, 「信号処 プログラ 多数の拡 最大限引 ムが動く. 張機能も. き出す. コマンド 言語 たコマン ド言語 理」など に特化し たコマン ド言語 普及度は トップレ ベル. Python C / C++ 57
Python プログラム見本 x = 100 if (x > 20): print("big") else: print("small") • すぐに実行できる • さまざまな「パッケージ」で 機能を拡張できる • Windows でも Linux でも,ほ ほ同じプログラムで動く s=0 for i in [1, 2, 3, 4, 5]: s=s+i print(s) 58
Java プログラム見本
public class Main {
public static void main(String[] args) throws Exception {
int x = 100;
if (x > 20) {
System.out.printf("big\n");
• Windows でも Linux でも
Android アプリでも,同じプロ
グラムで動く
} else {
System.out.printf("small\n");
}
int s = 0;
for(int i = 1; i <= 5; i++) {
s = s + i;
}
System.out.printf("%d\n", s);
}
}
59
C プログラム見本
#include <stdio.h>
int main(void){
・コンピュータの決め細かなコ
ントロール
int x, s, i;
・高速実行できるチューニング
x = 100;
if (x > 20) {
printf("big\n");
} else {
printf("small\n");
}
s = 0;
for(i = 1; i <= 5; i++) {
s = s + i;
}
printf("%d\n", s);
return;
}
60
JavaScript プログラム見本
process.stdin.resume();
Webアプリに向く
process.stdin.setEncoding('utf8');
var util = require('util');
var x = 100;
if (x > 20) {
process.stdout.write('big\n');
} else {
process.stdout.write('small\n')
}
var s = 0;
for(var i = 1; i <= 5; i++) {
s = s + i;
}
process.stdout.write(util.format('%d\n', s));
61
R プログラム見本
x <- 100
データ専門家向け
if (x > 20) {
print("big")
} else {
print("small")
}
s <- 0
for (i in c(1,2,3,4,5)) {
s <- s + i
}
print(s)
62
Octave プログラム見本 x = 100 行列計算,信号処理など if (x > 20) に向く printf("big\n") else printf("small\n") endif s=0 for i = [1 2 3 4 5] s=s+i endfor printf("%d", s) 63
Scheme プログラム見本 (define (decide x) 関数型言語 (cond ((> x 20) "big") (else "small"))) (define (sum n) (cond ((= n 0) 0) (else (+ (sum (- n 1)) n)))) (begin (print (decide 100)) (print (sum 5))) 64
まとめ • プログラミング言語にはさまざまな種類がある • 「1つを知っていれば,どの言語も大体似ている ので,応用が利く」という考え方もある • 「やりたいこと,学びたいことに向いた言語を, そのときどきで選ぶのが,一番良い」という考え 方もある 65
1-6. 9回の全体計画 66
1 2 9回の全体計画 プログラミング入門 プログラミング,Python Tutor での Python プログラ ム実行,プログラムによる問題解決,計算誤差,さまざ まなプログラミング言語,9回の全体計画 Python プログラミング オブジェクトとメソッド,引数,代入,データの種類, の基本 制御,コードコンバット(Code Combat)の紹介 3 式の抽象化と関数 式,変数,式の抽象化と関数,関数定義,def,関数呼び 出し 4 条件分岐,ステップ実 行 条件分岐,if,else,ステップ実行 5 リスト,辞書 リスト,辞書 6 繰り返し(ループ), ステップ実行 モジュール,標準ライ ブラリ,算法(アルゴ リズム) 繰り返し(ループ),for,in,ステップ実行 クラス,メソッド,オ ブジェクト生成 クラス階層,継承 クラス定義,オブジェクト生成,class,def,__init__, メソッドアクセス,属性アクセス,self クラス階層,継承,super,dir,プログラム開発環境, 67 オンライン開発環境 7 8 9 モジュール,インポート,import,サブモジュール, パッケージ,標準ライブラリ,算法(アルゴリズム)
9回で行うこと • 9回の資料で,Python とプログラミングを学ぶ. • • • • Python プログラムの書き方 抽象化 モジュール クラス階層 Python と, プログラミングの基礎の 両方を学ぶ • Python プログラム実行による演習付き(Python Tutor などを利用) • 「プログラミング言語 Python で学んだ知識,ス キルは,他のプログラミング言語を使う時にも役 に立つ」という考え方も 68
Python プログラムの
ソースコード
x = 100
if (x > 20):
print("big")
else:
print("small")
s=0
for i in [1, 2, 3, 4, 5]:
s=s+i
print(s)
Python
オンラインでの Python プログラム
実行(Python Tutor を使用)
public class Main {
public static void main(String[] args) throws Exception
{
int x = 100;
if (x > 20) {
System.out.printf("big\n");
} else {
System.out.printf("small\n");
}
int s = 0;
for(int i = 1; i <= 5; i++) {
s = s + i;
}
System.out.printf("%d\n", s);
}
}
Java
さまざまな
プログラミング言語
#include <stdio.h>
int main(void){
int x, s, i;
x = 100;
if (x > 20) {
printf("big\n");
} else {
printf("small\n");
}
s = 0;
for(i = 1; i <= 5; i++) {
s = s + i;
}
printf("%d\n", s);
return;
}
C
69
プログラミング • コンピュータによりさまざまな問題を解くとき,プ ログラミングが役立つ (例)現在の日時,最大公約数,平方根,三角 関数など • コンピュータを使うからといって,計算が完璧に正 確というわけではない • さまざまなプログラミング言語がある.用途や状況 に応じて使い分ける • 「1つを知っていれば,どの言語も大体似ているの 70 で,応用が利く」という考え方もある
Python 関連ページ • Python まとめページ https://www.kkaneko.jp/tools/man/python.html • Python 入門(スライド資料とプログラム例) https://www.kkaneko.jp/pro/pf/index.html • Python プログラミングの基本(スライド資料とプログラム例) https://www.kkaneko.jp/pro/po/index.html • Python プログラム例 https://www.kkaneko.jp/pro/python/index.html • 人工知能の実行(Google Colaboratory を使用) https://www.kkaneko.jp/ai/ni/index.html • 人工知能の実行(Python を使用)(Windows 上) https://www.kkaneko.jp/ai/deepim/index.html 71