3: 四則演算でアニメションichiji/cs-19/cs1-3.pdf前回のまとめ コンピュータは...

Preview:

Citation preview

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

前回のまとめ

コンピュータは

‣情報に対する機械‣メモリ+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

本日の概要

計算の元素

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

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

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

3

計算の元素

はじめに

例え

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

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

5

全ては計算である

‣ の因数分解

元素

6

データの元素は0と1

計算の元素は

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

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

a -= 1 # 減らす

例)

超基本要素

+=1 -=1

繰り返し

代入

基本演算

7

代入

+

×

//

%

最短経路

囲碁、将棋

四則演算

超基本要素

Processor

xy

sin

アニメーション

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

繰り返し

+=1 -=1

四則演算でアニメション

プロジェクト1

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

テーマ

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

プロジェクト1

9ひつじさん

Dessine-moi un mouton.

演習プログラムの例

ステップ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秒休メ」という命令

⎫⎪ ⎪⎪ ⎬⎪ ⎪ ⎪⎭

演習プログラムの例ステップ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

つづき

つづく

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

⎫⎫ ⎫⎫ ⎫⎫ ⎫ ⎫⎫

動かす

演習プログラムの例ステップ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 べき乗

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

レポート1

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

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

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

13

(数字は配点)

(5)

(10)

(〜10加点)

レポート1

注意

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

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

14

〆切‣OCWiにて

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

‣なお事前提出も可能

‣提出はOCWiのみ

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

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

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

15

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

while if-else =

配列

配列

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

⎫⎫ ⎫ ⎫⎫ ⎫⎫

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)

足し算の場合

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

配列

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

配列

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

宿題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

繰り返し

代入

+ -

限り

限り

演習時間

レポート1

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

宿題の復習

‣足し算・割り算

24

Recommended