cs-4. さまざまなプログラミング言語,コンピュータでの計算の誤差,プログラミングの基礎(式,変数,条件分岐,繰り返し)

184 Views

December 17, 21

スライド概要

コンピューターサイエンス
URL: https://www.kkaneko.jp/cc/cs/index.html

YouTube 動画
https://youtu.be/blBX7q2hdCQ

profile-image

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

シェア

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

各ページのテキスト
1.

cs-4. さまざまなプログラミング言語, コンピュータでの計算の誤差, プログラミングの基礎(式,変数, 条件分岐,繰り返し) (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 1

2.

アウトライン プログラミングの初心者を想定して,プログラミングの基 礎を教える • さまざまなプログラミング言語 • プログラミングとは • コンピュータでの計算の誤差 • プログラム開発環境 • 式,変数,条件分岐や繰り返しによる処理 2

3.

4-2 さまざまな プログラミング言語 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 3

4.

• 複数のプログラミング言語を学 ぶことは大事. 賛成できますか? プログラミング 言語は複数ある • 「1つを知っていれば,どの言 語も大体似ているので,応用が 利く」という考え方もある. • 「やりたいこと,学びたいこと に向いた言語を,そのときどき で選ぶのが,一番良い」とも. • 人によって「好きな言語が違 う」ということも 4

5.

さまざまなプログラミング言語 • Python •C • Java • JavaScript ここで行う作業 1.20 より大きければ「big」、 さもなければ「small」と表示 2.0 + 1 + 2 + 3 + 4 + 5 を求める •R • Octave • Scheme など 5

6.

なぜプログラミング言語は たくさんあるのでしょうか? それぞれ 特徴があ る Java R SQL MATLAB / Octave どのコン 初心者向 コン ピュータ け.その ピュータ でも同じ おかげで, の性能を 「データ 処理」に 特化した 「データ ベース」 に特化し 「数値計 算」, 「信号処 プログラ 多数の拡 最大限引 ムが動く. 張機能も. き出す. コマンド 言語 たコマン ド言語 理」など に特化し たコマン ド言語 普及度は トップレ ベル. Python C / C++ 6

7.

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) 7

8.
[beta]
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);
}

}

8

9.
[beta]
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;

}

9

10.
[beta]
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));

10

11.
[beta]
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)

11

12.

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) 12

13.

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))) 13

14.

4-3 プログラミングとは (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 14

15.

アウトライン • プログラミング,プログラム • ソースコード • プログラムの実行 15

16.

プログラミング (programming) • コンピュータは、プログラムで動く • プログラミングは、プログラムを設計、製作 すること • 何らかの作業を、コンピュータで実行させる ために行う プログラムの ソースコード プログラムの 実行結果 16

17.

ソースコード (source code) • プログラムを,何らかのプログラミング言語 で書いたもの • 「ソフトウエアの設計図」ということも. 人間も読み書き、編集できる • 複数のプログラミング言語を使うことも import picamera camera = picamera.PiCamera() camera.capture("1.jpg") exit() Raspberry Pi で,カメラを使って 撮影し,画像を保存するプログラムの ソースコード 17

18.

Python プログラムの実行手順例 • ソースコード Python プログラムのソース コードを,foo.py のような ファイル名で保存しておく • プログラムの起動は,シェル (Windows のコマン ドプロンプトなど)から,コマンドで行える 18

19.

プログラミングで気を付けること • コンピュータは「万能のマシン」と言われる こともある • プログラムで行わせたい「作業」について, 深い理解が必要 • プログラム中の誤り(バグ)を,コンピュー タが自動で発見してくれるわけではない. • 「プログラムが期待通りに動いているか」を 検証する、テストが必要 19

20.

まとめ • プログラミングは,プログラムを設計,製作する こと 20

21.

4-4 コンピュータでの 計算の誤差 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 21

22.

コンピュータで「1÷3」 を求めるとどうな ると思いますか 1. 0.333333333333333333333333333333 と無 限に表示される 2. 計算できない 3. 正確な値が表示されない(誤差を含む) 22

23.

• コンピュータを使うからといって,計算が完璧 に正確というわけではない 23

24.

Paiza.IO さまざまなプログラミング言語の体験, 演習ができるオンラインサービス ① ウェブブラウザで次の URL を開く https://paiza.io/ja ② 「コード作成を試してみる」をク リック ③ 言語を選ぶ.この授業では Python 3 24

25.

1/3 は? ① 次のソースコードを実行.結果を確認 print(1/3) 0.00000000000000003333333333 3333333333333333333333333... が誤差! 25

26.

1/6, 1/9 は? ② 「1/6」, 「1/9」を計算 26

27.

半径が 3 の円の面積は 3 × 3 × (円周率) コンピュータで求めてみた結果例 27

28.

③ 次のソースコードを実行.結果を確認 import math print(3 * 3 * math.pi) これも正確な値ではあり ません 28

29.

3倍 ④ 次のソースコードを実行.結果を確認 print(0.33333 * 3) ※ 「3」は5個.(すべて半角文字) ⑤ 次のソースコードを実行.結果を確認 print(0.3333333333 * 3) ※ 「3」は10個.(すべて半角文字) 29

30.

3倍 ⑥ 次のソースコードを実行.結果を確認 print(0.333333333333333 * 3) ※ 「3」は15個.(すべて半角文字) ⑦ 次のソースコードを実行.結果を確認 print(0.33333333333333333333 * 3) ※ 「3」は20個.(すべて半角文字) 誤差がある 誤差がある 30

31.

コンピュータの計算では,誤差が出てくる ことがある 「0.333333333333333」以外でも,桁数や「3」を 変えていろいろ試してみなさい ★ 全員が納得し,実感するのを待ちます 31

32.

4-5 プログラム開発環境 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 32

33.

プログラム開発環境 プログラム開発環境は、プログラミングにおけ るさまざまなことを支援する機能をもったプロ グラム • プログラムの作成、編集(エディタ) • プログラム中の誤り(バグ)の発見やテストの支援 (デバッガ) • プログラムの実行 • マニュアルの表示 • プログラムが扱うファイルのブラウズ • プログラムの配布(パッケージ機能など),共有, 共同編集 • バックアップ,バージョン管理 これらが簡単に行えるようになる 33

34.

オンラインのプログラム開発環境 • プログラム開発環境の操作は,ウエブブラウザで できる • 自分のパソコンに,特別なソフトをインストール する必要がない • 機能制限がある場合が多い • 利用登録の有無と内容,利用条件,料金について は,利用者で確認のこと 34

35.

プログラム作成ができるウエブサービス (オンラインの開発環境)の例 Python Tutor http://pythontutor.com/ GDB online https://www.onlinegdb.com/ 35

36.

プログラム作成ができるウエブサービス (オンラインの開発環境)の例 repl.it Paiza.IO https://repl.it/ https://paiza.io/ 36

37.

プログラム作成ができるウエブサービス (オンラインの開発環境)の例 Coding Ground Google Colaboratory https://colab.research.google.com/ https://www.tutorialspoint.com/ codingground.htm 37

38.

• Python Tutor http://www.pythontutor.com/ • Python, C, Java, JavaScript • ステップ実行,オブジェクトの表示がビジュアルに 38

39.

• paiza.IO https://paiza.io/?locale=ja-jp • Python, C, Java, JavaScript, R の他にも SQL など多数 の言語 • 操作が簡単.表示は日本語. • 一定の条件下でファイル操作も可能 39

40.

• Coding Ground https://www.tutorialspoint.com/codingground.htm • Python, C, Java, JavaScript, R, Octave/MATLAB の他にも , SQL, bash, アセンブリ言語など多数の言語 • ファイル作成,ファイル読み書きの実習も簡単にできる • 複数プログラムファイルの組み合わせも簡単にできる 40

41.

• Google Colaboratory https://colab.research.google.com/ • Python の開発環境 • 多数のパッケージがインストール済み • ノートブックにより,記録が簡単に残せる.ビジュアルな 表示も簡単に可能 • プログラムの共有も簡単 41

42.

まとめ • プログラム開発環境は,プログラミングにおける さまざまなことを支援する機能をもったプログラ ム 42

43.

4-6 式と変数 (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 43

44.

Python • プログラミング言語の1つ • 無料で使うことができる言語である • Python には,バージョン 2, バージョン 3 などが ある. ※ この授業では,バージョン 3 を使用 44

45.

Paiza.IO さまざまなプログラミング言語の体験, 演習ができるオンラインサービス ① ウェブブラウザで次の URL を開く https://paiza.io/ja ② 「コード作成を試してみる」をク リック ③ 言語を選ぶ.この授業では Python 3 45

46.

式 ① 次のソースコードを実行.結果を確認 print(100*200) すべて半角文字 「*」は掛け算の記号 46

47.

② 次のソースコードを実行.結果を確認 print(2*4*3*5) すべて半角文字 「*」は掛け算の記号 47

48.

変数 • 変数は,値を覚えておくためのメモリ ③ 次のソースコードを実行. x = 100 実行ボタンを押しても, 何も表示されない のは OK ④ 次のソースコードを実行.結果を確認 x = 100 print(x) x の値が表示される 48

49.

⑤ 次のソースコードを実行.結果を確認 a = 10 b = 20 print(a + b) print(a * b) print((a + 10) * b) 49

50.

⑥ 底辺が2.5で,高さが5のとき, 三角形の面積は,面積: 6.25 次のソースコードを実行.結果を確認 teihen = 2.5 takasa = 5 print(teihen * takasa / 2) 50

51.

⑦ 面積が9の正方形について,辺の長さを求める. 次のソースコードを実行.結果を確認 import math print(math.sqrt(9)) 51

52.

4-7 条件分岐,繰り返し (コンピューターサイエンス) URL: https://www.kkaneko.jp/cc/cs/index.html 金子邦彦 52

53.

条件分岐 • 条件分岐では,変数の値によって,結果が変 わるなどの判断を行う age の値が 12以下 12より大きい → 500 → 1800 53

54.

条件分岐のプログラム例 age = 18 if age <= 12: print(500) else: print(1800) if (age <= 12)の直後に「:」 else の直後に「:」 (どちらも,コロン) 字下げも正確に! print の前に,「タブ (Tab)」を 1つだけ 54

55.

字下げ 正しくない字下げ 正しい字下げ 55

56.

Paiza.IO さまざまなプログラミング言語の体験, 演習ができるオンラインサービス ① ウェブブラウザで次の URL を開く https://paiza.io/ja ② 「コード作成を試してみる」をク リック ③ 言語を選ぶ.この授業では Python 3 56

57.

結果を確認 57

58.

実習 • 18 を 7 に書き換えて,実行し,結果を確認 58

59.

条件分岐 • 次のプログラムを作成 ① weight と料金の関係は次の通りです weight の値が 100以下 → 0 yen 100より大きい → 1000 yen ② weight = 80 のとき、料金はいくらになりますか 正解の例は次のページにありますが, なるべく見ずに,自分で考える 59

61.

配列 • データの並びで,0から始まる番号(添字)が付 いている 0 1 180 2 20 250 3 40 61

62.

配列データ • 4つの価格について,1.08倍を求める 0 180 1 20 2 3 250 40 62

63.

• 次のソースコードを実行.結果を確認 p = [180, 20, 250, 40] for i in p: print(i * 1.08) 63

64.

月の日数 • 次のソースコードを実行.結果を確認 6 月は 30日まである.7 月は 31日まである. ポイント:月の日数についてのデータを作る ※ うるう年のことは考えないことにする days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] print( days[6] ) print( days[7] ) 64

65.

実習3.物体の落下 • 次のソースコードを実行.結果を確認 x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for t in x: print( (9.8 / 2) * t * t ) for を使って計算を繰り返している 65

66.

for による繰り返し x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for t in x: print( (9.8 / 2) * t * t ) 繰り返す処理 t の値は 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 と変化し,全部済んだら終わる 66