• 検索結果がありません。

グラミングの基礎(式,変数,条件

N/A
N/A
Protected

Academic year: 2021

シェア "グラミングの基礎(式,変数,条件"

Copied!
65
0
0

読み込み中.... (全文を見る)

全文

(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

• R

• Octave

• Scheme

など

5

ここで行う作業

1.20 より大きければ「big」、

さもなければ「small」と表示 2.0 + 1 + 2 + 3 + 4 + 5 を求める

(6)

なぜプログラミング言語は たくさんあるのでしょうか?

6

それぞれ 特徴があ

Java

どのコン ピュータ でも同じ プログラ ムが動く.

普及度は トップレ

ベル.

Python

初心者向 け.その おかげで,

多数の拡 張機能も.

C / C++

コン ピュータ の性能を 最大限引 き出す.

R

「データ 処理」に 特化した コマンド

言語

SQL

「データ ベース」

に特化し たコマン

ド言語

MATLAB / Octave

「数値計 算」,

「信号処 理」など に特化し たコマン

ド言語

(7)

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)

7

すぐに実行できる

さまざまな「パッケージ」で 機能を拡張できる

• Windows でも Linux でも,ほ ほ同じプログラムで動く

(8)

Java プログラム見本

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

}

} 8

• Windows でも Linux でも

Android アプリでも,同じプロ グラムで動く

(9)

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)

JavaScript プログラム見本

process.stdin.resume();

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

Webアプリに向く

(11)

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)

プログラムを,何らかのプログラミング言語 で書いたもの

「ソフトウエアの設計図」ということも.

人間も読み書き、編集できる

複数のプログラミング言語を使うことも

17

import picamera

camera = picamera.PiCamera() camera.capture("1.jpg")

exit()

Raspberry Pi で,カメラを使って

撮影し,画像を保存するプログラムの ソースコード

(18)

Python

プログラムの実行手順例

プログラムの起動は,シェル

(Windows

のコマン ドプロンプトなど)から,コマンドで行える

18

Python プログラムのソース コードを,foo.py のような ファイル名で保存しておく

ソースコード

(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

24

さまざまなプログラミング言語の体験,

演習ができるオンラインサービス

① ウェブブラウザで次の URL を開く https://paiza.io/ja

② 「コード作成を試してみる」をク リック

③ 言語を選ぶ.この授業では Python 3

(25)

1/3 は?

① 次のソースコードを実行.結果を確認

print(1/3)

25

0.00000000000000003333333333 3333333333333333333333333...

が誤差!

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

プログラム作成ができるウエブサービス

(オンラインの開発環境)の例

35

http://pythontutor.com/

Python Tutor

https://www.onlinegdb.com/

GDB online

(36)

プログラム作成ができるウエブサービス

(オンラインの開発環境)の例

36

https://repl.it/

repl.it

https://paiza.io/

Paiza.IO

(37)

プログラム作成ができるウエブサービス

(オンラインの開発環境)の例

37

https://colab.research.google.com/

Google Colaboratory

https://www.tutorialspoint.com/

codingground.htm

Coding Ground

(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, アセンブリ言語など多数の言語

ファイル作成,ファイル読み書きの実習も簡単にできる

複数プログラムファイルの組み合わせも簡単にできる

• Google Colaboratory

https://colab.research.google.com/

Python の開発環境

多数のパッケージがインストール済み

ノートブックにより,記録が簡単に残せる.ビジュアルな 表示も簡単に可能

プログラムの共有も簡単

40

(41)

まとめ

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

41

(42)

4-6 式と変数

(コンピューターサイエンス)

URL: https://www.kkaneko.jp/cc/cs/index.html

42

金子邦彦

(43)

Python

プログラミング言語の1つ

無料で使うことができる言語である

• Python

には,バージョン

2,

バージョン

3

などが ある.

この授業では,バージョン

3

を使用

43

(44)

Paiza.IO

44

さまざまなプログラミング言語の体験,

演習ができるオンラインサービス

① ウェブブラウザで次の URL を開く https://paiza.io/ja

② 「コード作成を試してみる」をク リック

③ 言語を選ぶ.この授業では Python 3

(45)

① 次のソースコードを実行.結果を確認

print(100*200)

45

すべて半角文字

*」は掛け算の記号

(46)

② 次のソースコードを実行.結果を確認

print(2*4*3*5)

46

すべて半角文字

*」は掛け算の記号

(47)

変数

変数は,値を覚えておくためのメモリ

③ 次のソースコードを実行.

x = 100

④ 次のソースコードを実行.結果を確認

x = 100

print(x)

47

実行ボタンを押しても,

何も表示されない のは OK

x の値が表示される

(48)

⑤ 次のソースコードを実行.結果を確認

a = 10 b = 20

print(a + b) print(a * b)

print((a + 10) * b)

48

(49)

⑥ 底辺が2.5で,高さが5のとき,

三角形の面積は,面積: 6.25 次のソースコードを実行.結果を確認

teihen = 2.5 takasa = 5

print(teihen * takasa / 2)

49

(50)

⑦ 面積が9の正方形について,辺の長さを求める.

次のソースコードを実行.結果を確認

import math

print(math.sqrt(9))

50

(51)

4-7 条件分岐,繰り返し

(コンピューターサイエンス)

URL: https://www.kkaneko.jp/cc/cs/index.html

51

金子邦彦

(52)

条件分岐

条件分岐では,変数の値によって,結果が変 わるなどの判断を行う

age

の値が

12

以下

→ 500 yen 13

以上

→ 1800 yen

52

(53)

条件分岐のプログラム例

53 age = 18

if age <= 12:

print(500) else:

print(1800)

if (age <= 12)

の直後に「

:

else

の直後に「

:

(どちらも,コロン)

字下げも正確に!

print の前に,「タブ (Tab)」を 1つだけ

ノートページ

(54)

字下げ

54

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

(55)

Paiza.IO

55

さまざまなプログラミング言語の体験,

演習ができるオンラインサービス

① ウェブブラウザで次の URL を開く https://paiza.io/ja

② 「コード作成を試してみる」をク リック

③ 言語を選ぶ.この授業では Python 3

(56)

結果を確認

56

(57)

実習

• 18

7

に書き換えて,実行し,結果を確認

57

(58)

条件分岐

次のプログラムを作成

58

weight と料金の関係は次の通りです

weight の値が 100未満 → 0 yen

100以上 → 1000 yen

weight = 80 のとき、料金はいくらになりますか

正解の例は次のページにありますが,

なるべく見ずに,自分で考える

(59)

59

(60)

配列

データの並びで,0から始まる番号(添字)が付 いている

60

180 20 250 40 0 1 2 3

ノートページ

(61)

配列データ

4つの価格について,1.08倍を求める

61

180 20 250 40 0 1 2 3

(62)

次のソースコードを実行.結果を確認

p = [180, 20, 250, 40]

for i in p:

print(i * 1.08)

62

(63)

月の日数

次のソースコードを実行.結果を確認

days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

print( days[6] ) print( days[7] )

63

6 月は 30日まである.7 月は 31日まである.

ポイント:月の日数についてのデータを作る

うるう年のことは考えないことにする

(64)

実習3.物体の落下

次のソースコードを実行.結果を確認

x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for t in x:

print( (9.8 / 2) * t * t )

64

for を使って計算を繰り返している

(65)

for による繰り返し

x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for t in x:

print( (9.8 / 2) * t * t )

65

ノートページ

繰り返す処理

t

の値は

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

と変化し,全部済んだら終わる

参照

関連したドキュメント

IGESファイルの仕組み IGESファイルを構成する5つのセクションとその役割

画像ファイルの保存方法(5/6) • [ファイル]→[名前をつけて保存]を選択 29 画像ファイルの保存方法(6/6)

その他 タブ その他に関する設定 字幕

[着信応答履歴管理]画面の【着信応答履歴一覧】から「対応履歴ファイルをダウンロード」すると下記フォーマットのような

VBA プログラムを含んだファイルを保存するには  Excel

設定値の保存

上記の例では、新規に data という名前のファイルが作成され、ファイルへのポインタ fp はこのファ イルを指す。以後は fp

ParametricPlot3D を用いて球面を描くプログラムを書いて、kadai2.nb