220 Views
December 17, 21
スライド概要
トピックス:プログラミング,Python Tutor での Python プログラム実行,プログラムによる問題解決,計算誤差,さまざまなプログラミング言語
コンピューターサイエンス
URL: https://www.kkaneko.jp/cc/cs/index.html
YouTube 動画
https://youtu.be/blBX7q2hdCQ
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
cs-4. プログラミング入門 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 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
アウトライン 4-1 4-2 4-3 4-4 4-5 項目 プログラミング Python Tutor での Python プログラム 実行 プログラムによる問題解決 計算誤差 さまざまなプログラミング言語 4
4-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
4-2. Python Tutor での Python プログラム実行 14
Python • プログラミング言語の1つ • この授業では,Python バージョン 3 を使用 15
Python 言語の特徴 • 「入門者に学習しやすい」とされる • 多数の拡張機能(外部プログラムのインポートに よる) • Python 言語システムのソースコードは公開され ている • オブジェクト指向の機能を持つ オブジェクト,クラス,メソッド,属性,クラ ス階層,継承 16
Python プログラムの実行手順例 • ソースコード Python プログラムのソース コードを,foo.py のような ファイル名で保存しておく • プログラムの起動は,シェル (Windows のコマン ドプロンプトなど)から,コマンドで行える 17
Python Tutor • プログラミング学習を行えるオンラインサービス http://www.pythontutor.com/ • Web ブラウザを使う • たくさんの言語を扱うことができる Python, Java, C, C++, JavaScript, Ruby など 18
Python Tutor の起動 ① ウェブブラウザを起動する ② Python Tutor を使いたいので,次の URL を開く http://www.pythontutor.com/ ③ 「Python」をクリック ⇒ 編集画面が開く 19
Python Tutor の編集画面 「Python 3.6」になっている エディタ (プログラムを書き換えることができる) 実行のためのボタン 20
Python Tutor でのプログラム実行手順 (1)「Visualize Execution」をク リックして実行画面に切り替える (2)「Last」をクリック. (4)「Edit this code」をク (3) 実行結果を確認する. リックして編集画面に戻る 21
Python Tutor 使用上の注意点① • 実行画面で,次のような赤の表示が出ることがある → 無視してよい 過去の文法ミスに関する確認表示 邪魔なときは「Close」 22
Python Tutor 使用上の注意点② 「please wait ... executing」のとき,10秒ほど待つ. → 混雑しているときは, 「Server Busy・・・」 というメッセージが出ることがある. 混雑している.少し(数秒から数十秒)待つと自 動で表示が変わる(変わらない場合には,操作を もう一度行ってみる) 23
演習 資料:25 ~ 28 【トピックス】 • Python Tutor の使い方 24
① Python Tutor のエディタで次のプログラムを入れる print(100 * 200) すべて半角文字 「*」は掛け算の記号 ② 「Visual Execution」をクリック.そして 「Last」をクリック.結果を確認 25
③ 「Edit this code」をクリックすると,エディ タの画面に戻る 26
④ Python Tutor のエディタで次のプログラムを入 れる x = 100 すべて半角文字 ⑤ 「Visual Execution」をクリック.そして 「Last」をクリック.結果を確認 27
⑥「Edit this code」をクリックすると,エディタ の画面に戻る 28
4-3. プログラムによる問題解決 29
プログラムは何の役に立つか • コンピュータを使い,さまざまな問題を解くこと ができる • 人間は,コンピュータを使いこなす(コンピュー タが人間の能力を増幅する). • コンピュータへの指令を行うのがプログラム. プログラム アプリケーション Word, Excel, Web ブラウザなど コンピュータ 自作のプログラムなど 自作の Python プログラム,Java プログラムなど 30
演習 資料:32 ~ 37 【トピックス】 • プログラムでできること 31
プログラムで出来ることの例 計算問題 • 現在の日時 • 最大公約数 • 平方根 • 円周率 • 三角関数 その他,データ処理,データ送受信,AI,グラフィックス など,コンピュータによる情報処理や情報通信 32
① Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する オペレーティングシステム(コンピュータ)のタイマー を利用.いまの日時が表示される import datetime now = datetime.datetime.now() print(now) 結果を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 33
② Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 24 と 18 の最大公約数を求めたい import math print( math.gcd(24, 18) ) 結果の 「6」を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 34
③ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 面積が 7 の正方形の一辺の長さは? import math print( math.sqrt(7) ) 結果の 「 2.6457513110645907」 を確認(結果は近似値) 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 35
④ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 半径 3 の円の面積は? import math print( 3 * 3 * math.pi ) 結果を確認 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 36
⑤ 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」をクリックすると,エディタの画面に戻る 37
4-4. 計算誤差 38
コンピュータで「1÷3」 を求めると どうなると思いますか 1. 0.333333333333333333333333333333 と無 限に表示される 2. 計算できない 3. 正確な値が表示されない(誤差を含む) 39
演習 資料:41 ~ 45 【トピックス】 • 計算誤差 40
① Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 結果を確認 0.00000000000000003333333333 3333333333333333333333333... が誤差! 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 41
② Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 結果を確認 計算誤差がある 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 42
③ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 結果を確認 計算誤差がある 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 43
④ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する print(0.333333333333333 * 3) ※ 「3」は15個.(すべて半角文字) 結果を確認 計算誤差がある 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 44
⑤ Python Tutor のエディタで次のプログラムを入れ, 実行し,結果を確認する 結果を確認 計算誤差がある場合と無い場合が ある 「Visual Execution」をクリック.そして「Last」をクリック.結果を確認. 「Edit this code」をクリックすると,エディタの画面に戻る 45
• コンピュータだから「計算が完璧に正確」という 思い込みはしないこと 1 ÷ 3 を計算して表示させると、 正確な値が表示されない(誤差を含む) • 誤差があっても、十分に役に立つ • 誤差を許しているから、計算が効率的に済むとい う考え方もある 46
4-5. さまざまなプログラミング 言語 47
プログラミングを学ぶときに気を付けること • プログラミング言語には,種類が数多くある • 基礎となる知識が大事. 一度,あるプログラミング言語で基礎をマス ターしておけば,他のプログラミング言語でも 応用が利く,という考え方も 48
• 複数のプログラミング言語を学 ぶことは大事. 賛成できますか? プログラミング 言語は複数ある • 「1つを知っていれば,どの言 語も大体似ているので,応用が 利く」という考え方もある. • 「やりたいこと,学びたいこと に向いた言語を,そのときどき で選ぶのが,一番良い」とも. • 人によって「好きな言語が違 う」ということも. 49
さまざまなプログラミング言語 • Python •C • Java • JavaScript ここで行う作業 1.20 より大きければ「big」, さもなければ「small」と表示 2.0 + 1 + 2 + 3 + 4 + 5 を求める •R • Octave • Scheme など 50
なぜプログラミング言語は たくさんあるのでしょうか? それぞれ 特徴があ る Java R SQL MATLAB / Octave どのコン 初心者向 コン ピュータ け.その ピュータ でも同じ おかげで, の性能を 「データ 処理」に 特化した 「データ ベース」 に特化し 「数値計 算」, 「信号処 プログラ 多数の拡 最大限引 ムが動く. 張機能も. き出す. コマンド 言語 たコマン ド言語 理」など に特化し たコマン ド言語 普及度は トップレ ベル. Python C / C++ 51
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) 52
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);
}
}
53
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;
}
54
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));
55
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)
56
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) 57
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))) 58
まとめ • プログラミング言語にはさまざまな種類がある • 「1つを知っていれば,どの言語も大体似ている ので,応用が利く」という考え方もある • 「やりたいこと,学びたいことに向いた言語を, そのときどきで選ぶのが,一番良い」という考え 方もある 59
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
60
プログラミング • コンピュータによりさまざまな問題を解くとき,プ ログラミングが役立つ (例)現在の日時,最大公約数,平方根,三角 関数など • コンピュータを使うからといって,計算が完璧に正 確というわけではない • さまざまなプログラミング言語がある.用途や状況 に応じて使い分ける • 「1つを知っていれば,どの言語も大体似ているの 61 で,応用が利く」という考え方もある