24
3: 四則演算でアニメション

3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

3: 四則演算でアニメション

Page 2: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

前回のまとめ

コンピュータは

‣情報に対する機械‣メモリ+CPU

データの元素

‣0と1(二進数)

計算の元素

‣代入する、繰り返す、増やす、減らす

2

超基本要素

+=1 -=1

繰り返し

代入

Processor

Memory

情報 情報

94.3 53.9 76.5 87.8 92.3 30.9 65.3 65.5 65.3 12.465.9 80.1 76.0 80.3 18.7 77.5 93.2 50.5 70.2 20.664.9 58.2 14.6 23.7 35.4 57.1 31.2 81.3 14.4 60.580.5 11.0 54.2 77.3 74.0 34.5 39.8 98.3 43.6 86.389.3 29.9 16.8 97.3 31.5 22.3 36.0 67.5 55.7 41.282.1 75.5 73.4 30.6 68.2 17.9 91.4 81.2 98.9 55.585.1 47.7 39.5 80.8 65.5 67.3 43.9 19.2 27.6 40.639.2 27.2 26.2 44.2 75.7 69.5 12.1 68.2 47.9 46.251.8 35.8 94.1 28.8 10.4 57.6 58.7 83.2 41.6 65.411.2 32.9 61.4 19.0 87.2 57.5 55.6 46.0 29.0 78.933.8 23.4 20.7 38.5 65.9 81.7 29.9 51.0 58.2 17.445.9 63.1 86.6 55.4 65.1 41.3 58.7 79.5 94.4 53.543.1 43.5 57.9 19.5 89.4 66.3 60.5 72.8 86.2 21.780.2 46.4 94.4 51.1 68.3 27.6 51.4 20.7 50.8 95.551.7 66.4 59.7 24.2 47.1 99.9 47.2 45.5 40.7 54.090.5 92.8 45.3 70.8 12.3 54.1 97.4 43.3 23.2 74.437.5 20.7 75.0 39.3 61.9 31.0 55.0 22.9 61.5 37.427.3 42.0 83.8 67.9 18.7 33.6 85.0 32.9 25.0 33.759.1 89.9 37.2 17.2 43.4 12.9 19.6 45.4 17.6 92.089.2 97.5 72.6 63.2 38.5 63.8 61.5 32.0 62.2 38.478.2 62.5 42.2 89.4 92.1 31.7 87.6 22.9 95.7 62.911.0 21.9 60.3 79.3 34.3 28.7 69.3 74.8 44.1 60.819.0 94.8 24.6 27.5 40.7 35.6 24.0 35.1 71.2 65.345.6 25.4 41.0 91.3 59.7 46.2 71.2 22.8 84.6 62.545.8 64.4 82.5 93.5 71.8 41.7 48.5 30.0 52.6 47.777.3 32.6 77.7 74.8 20.6 66.6 21.4 45.9 47.6 80.818.5 60.1 54.3 44.0 66.0 41.8 37.6 88.3 92.5 41.793.4 50.8 25.9 34.0 44.4 30.0 80.1 57.9 67.0 80.647.6 16.4 75.3 94.8 98.4 61.7 77.3 61.5 77.2 47.230.8 93.9 80.9 80.7 60.7 71.8 63.1 17.9 59.2 12.889.1 21.2 67.5 85.0 73.6 16.6 23.2 99.7 44.2 16.663.6 63.4 62.1 53.2 27.6 68.3 91.7 96.7 19.2 74.667.3 33.3 67.4 16.5 63.7 19.0 73.3 33.7 56.1 30.981.0 88.6 78.3 76.1 88.5 30.3 80.1 87.3 58.1 85.089.5 29.0 90.4 43.4 70.8 24.0 23.6 26.0 94.6 62.498.5 86.0 19.3 42.6 69.1 93.0 60.8 67.8 40.1 96.782.1 35.6 59.7 44.3 59.3 59.5 66.9 40.4 97.6 73.482.4 97.6 27.0 27.2 93.7 16.3 81.1 89.9 92.2 95.756.3 11.9 73.0 40.1 22.5 14.0 94.7 56.2 13.7 40.736.0 17.6 73.8 54.4 54.7 12.2 79.3 90.6 96.8 96.610.6 50.5 72.2 80.6 42.3 31.1 34.2 79.8 24.0 60.738.3 85.5 95.9 52.7 40.7 12.0 49.4 81.0 58.9 81.112.4 11.4 59.2 14.9 40.8 75.8 80.4 58.8 64.6 31.372.9 48.0 57.4 40.6 45.1 20.9 81.1 47.9 91.0 84.355.8 74.9 42.0 53.9 97.7 10.1 18.5 89.1 18.3 88.833.4 41.6 35.5 70.4 23.0 63.6 53.6 42.7 23.9 54.289.5 22.5 51.5 20.1 86.4 34.2 46.3 16.4 44.1 10.792.2 66.6 57.1 40.9 85.7 73.5 36.0 84.8 18.5 12.254.0 87.6 17.9 85.2 71.8 51.3 76.0 85.1 77.0 62.532.0 14.5 50.6 59.7 53.4 65.0 21.9 22.7 75.8 64.827.3 69.4 16.5 72.4 80.9 44.9 53.3 40.9 88.8 31.538.0 61.6 90.1 50.9 35.0 51.7 41.2 83.4 37.4 88.456.4 78.8 64.0 65.0 49.4 89.1 72.5 89.8 54.3 86.291.5 67.4 23.1 21.6 82.2 42.8 88.4 60.1 97.0 27.741.6 49.5 97.3 83.2 29.2 29.3 53.4 28.2 96.4 35.661.0 37.3 32.3 35.0 94.2 66.9 89.3 42.0 64.0 17.061.0 41.9 43.7 92.9 26.6 84.5 19.3 78.8 94.4 82.257.1 49.2 98.2 15.5 10.9 29.7 54.4 68.3 54.6 18.495.2 54.9 54.7 29.4 59.2 37.5 19.9 33.2 31.5 29.849.0 41.3 11.0 46.6 75.9 47.8 52.3 87.8 86.2 50.3

Page 3: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

本日の概要

計算の元素

レポート1の説明:四則演算でアニメーション

宿題1のSolution:掛け算と割り算

チャレンジー・コンテスト

3

Page 4: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

計算の元素

Page 5: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

はじめに

例え

‣(1 + 4) x 5 =‣12 と 16 の最大公約数‣○○都〜○○府の最短路

‣原子炉の設計図‣遺伝子を解析する‣銀行のATMの制御

5

全ては計算である

‣ の因数分解

Page 6: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

元素

6

データの元素は0と1

計算の元素は

1. 代入する2. 繰り返す3. 増やす(+=1)・減らす(-=1)

a = 0 # 代入while a > 0: # 繰り返し文

a -= 1 # 減らす

例)

超基本要素

+=1 -=1

繰り返し

代入

Page 7: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

基本演算

7

代入

+

×

//

%

最短経路

囲碁、将棋

四則演算

超基本要素

Processor

xy

sin

アニメーション

演算装置 = 基本演算を行う装置

繰り返し

+=1 -=1

Page 8: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

四則演算でアニメション

プロジェクト1

Page 9: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

目標‣計算の基本要素を知る

テーマ

‣四則演算でアニメーション

プロジェクト1

9ひつじさん

Dessine-moi un mouton.

Page 10: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

演習プログラムの例

ステップ1:絵を作る

10

# smile.py# 出力: スマイルマークimport time

img0 = 1000000000000000000000000000img1 = 1000000000110000110000000000img2 = 1000000000110000110000000000img3 = 1000000000000000000000000000img4 = 1000001100000000000011000000img5 = 1000000110000000000110000000img6 = 1000000011000000001100000000img7 = 1000000000111111110000000000img8 = 1000000000000000000000000000img9 = 1000000000000000000000000000

t = 0while t < 29:print(img0)print(img1)print(img2)print(img3)print(img4)print(img5)print(img6)print(img7)print(img8)print(img9)print()time.sleep(0.1)t += 1

つづき

つづく各変数には 28 桁の数が入っているその各々が絵の1 行分を表している.

t = 0 〜 28 まで29 回繰り返す.

空行を出力

「0.1秒休メ」という命令

⎫⎪ ⎪⎪ ⎬⎪ ⎪ ⎪⎭

Page 11: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

演習プログラムの例ステップ2:動かす

11

# smile2.py# 出力: スマイルマークimport time

img0 = 1000000000000000000000000000img1 = 1000000000110000110000000000...

t = 0while t < 29:

print(img0)print(img1)...print()

img0 = img0 // 10img1 = img1 // 10img2 = img2 // 10img3 = img3 // 10img4 = img4 // 10img5 = img5 // 10img6 = img6 // 10img7 = img7 // 10img8 = img8 // 10img9 = img9 // 10

time.sleep(0.1)t += 1

つづき

つづく

画面に出す部分⎫⎫ ⎫⎫ ⎫

⎫⎫ ⎫⎫ ⎫⎫ ⎫ ⎫⎫

動かす

Page 12: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

演習プログラムの例ステップ2:動かす

12

# smile2.py# 出力: スマイルマークimport time

img0 = 1000000000000000000000000000img1 = 1000000000110000110000000000...

t = 0while t < 29:

print(img0)print(img1)...print()

img0 = img0 // 10img1 = img1 // 10img2 = img2 // 10img3 = img3 // 10img4 = img4 // 10img5 = img5 // 10img6 = img6 // 10img7 = img7 // 10img8 = img8 // 10img9 = img9 // 10

time.sleep(0.1)t += 1

つづき

つづく

画面に出す部分⎫⎫ ⎫⎫ ⎫

⎫⎫ ⎫⎫ ⎫⎫ ⎫ ⎫⎫

動かす

x // y 割り算の整数部(整数除算)x % y 割り算の剰余(余り, mod

)x / y 割り算(除算)x ** y べき乗

あとは各自で工夫して下さい

Page 13: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

レポート1

レポートの書き方‣ 使い方の説明素人にどうやってプログラムを実行できるのか?

‣ 計算の仕組みの説明どうやって計算がアニメションになっているのか?考え方四則演算以外を利用の場合は、四則演算で作れる方法?

‣ 工夫した点の説明何処が工夫として認めて欲しいのか?(Smileyの正しいスライド以上なら工夫だと考えられます)

13

(数字は配点)

(5)

(10)

(〜10加点)

Page 14: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

レポート1

注意

‣LaTeX等で作成、PDF方式で提出‣仮定:採点者は授業の説明などは知らない‣仮定:プログラムも読みます‣付録:プログラムファイル

採点基準(満点 20)‣レポート点数 (15) +工夫 (〜 10 ← 加点)

14

〆切‣OCWiにて

‣〆切を過ぎると受け取らない

‣なお事前提出も可能

‣提出はOCWiのみ

Page 15: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

四則演算でアニメション要求仕様

‣ファイル名は anime.py とすること.‣動きがあること.‣「計算」を使うこと.- 演算は四則演算のみ- 四則演算以外を使うなら、なぜ使える事を説明- 繰り返し文,条件分岐文,代入文もOK

‣おもしろいこと. ← これはオマケ

15

(プログラムに要求される条件)

while if-else =

Page 16: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

配列

Page 17: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

配列

17

複数のデータを格納することのできる変数

a = [2, 4, 6, 8, 10, 12]total = 0i = 0while i < 6:

total = total + a[i]i += 1

print(total)

a

a[0] 2

a[1] 4

a[2] 6

a[3] 8

a[4] 10

a[5] 12

例 )総和を求める例 )アニメション

t = 0while t < 29:

print(img0)print(img1)print(img2)print(img3)print(img4)print(img5)print(img6)print(img7)print(img8)print(img9)print()time.sleep(0.1)t += 1

i = 0while i < 10:

print(img[i])i += 1

⎫⎫ ⎫ ⎫⎫ ⎫⎫

Page 18: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

extra (optional)

便利な書き方:for 文

18

a = [2, 4, 6, 8, 10, 12]res = 0i = 0while i < 6:

res = res + a[i]i += 1

print(res)

a = [2, 4, 6, 8, 10, 12]res = 0

for i in range(6):res = res + a[i]

print(res)

a = [2, 4, 6, 8, 10, 12]res = 0

for i in range(len(a)):res = res + a[i]

print(res)

変数 i の値を 0 から 5 まで変えながら繰り返す for 文

for v in a:res = res + v res = sum(a)

足し算の場合

Page 19: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

extra (optional)

便利な書き方:for 文

19

a = [2, 4, 6, 8, 10, 12]res = 0

for i in range(len(a)):

res = res + i*a[i]

print(res)

for i, v in enumerate(a):res = res + i*v

res i v

0

0 0 2

4 1 4

16 2 6

40 3 8

80 4 10

140 5 12

140

Page 20: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

配列

20

a = list(map(int, input().split()))

res = 0for i in range(len(a)):

res = res + a[i]

print(res)

sum.py

・ 加算するデータは入力データとして与える.・ 個々に空白で区切る.改行がデータの終わり.

$ python sum.py-3 8 19 -420$

Terminal

Page 21: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

配列

21

a = list(map(int, input().split()))

res = 0for i in range(len(a)):

res = res + a[i]

print(res)

sum.py

・ 加算するデータは入力データとして与える.・ 個々に空白で区切る.改行がデータの終わり.

$ python sum.py-3 8 19 -420$

Terminal

整数を配列に入力する方法.(これは決まり文句として使って下さい.)

"-3 8 19 -4"

"-3" "8" "19" "-4"

int("-3") int("9") int("19") int("-4")

map(int,...)

.split()

input()-3 8 19 -4

list(...)

-3 8 19 -4

int int int int

Page 22: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

宿題1について

Page 23: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

宿題1

問1.引き算

問2.割り算(整数)

23

x = int(input("x = "))

y = int(input("y = "))

diff = ... # 差

# ...計算...

print("x-y=", diff)

x = int(input("x = "))

y = int(input("y = "))

quotient = ... # 商

remainder = ... # 余

# ...計算...

print("x div y=", quotient)

print("x mod y=", remainder)

+=1 -=1

繰り返し

代入

+=1 -=1

繰り返し

代入

+ -

限り

限り

Page 24: 3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは ‣情報に対する機械 ‣メモリ+CPU データの元素 ‣0と1(二進数)

演習時間

レポート1

‣基本課題・工夫・レポート

宿題の復習

‣足し算・割り算

24