算数とプログラミング

 投稿者:山中和義  投稿日:2016年 6月 1日(水)14時51分57秒
  1時限
テーマ  計算
          四則演算、かっこ、関数
          整数、小数点を含む数
        構造文(順次、反復)
        アルゴリズム → 3つの構造文 → プログラム言語

・計算問題

問題
次の式を計算しなさい。
157+51=
825-561=
38×26=
22÷7=
44+(71-52)=

PRINT 157+51
PRINT 825-561
PRINT 38*26 !※かけ算
PRINT 22/7 !※わり算
PRINT INT(22/7); MOD(22,7) !※商とあまり
PRINT 44+(71-52)
END



問題
1から10までの和はいくつになりますか。
問題
1+2+3+4+5+6+7+8+9+10を計算しなさい。

その1
PRINT 1+2+3+4+5+6+7+8+9+10
END

その2
和を順次求める。1,3,6,10,15,21,…
(終わり)

LET S=0
FOR N=1 TO 10
   LET S=S+N !※代入文
NEXT N
PRINT S
END

その3  ガウスの方法、Σk=n(n+1)/2
    1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+10
+  10+ 9+ 8+ 7+ 6+ 5+ 4+ 3+ 2+ 1
----------------------------------
   11+11+11+11+11+11+11+11+11+11
より、11が10個ある。
(終わり)

PRINT (1+10)*10/2
END


その4
連続する10個の数の和
(x-4)+(x-3)+(x-2)+(x-1)+x+(x+1)+(x+2)+(x+3)+(x+4)+(x+5)
=10x+5
(終わり)

LET X=5
PRINT 10*X+5
END



類題
1+2+3+4+5+6+7+8+9+10+ … +99+100を計算しなさい。



類題 (小数点を含む場合)
0.001+0.002+0.003+0.004+0.005+0.006+0.007+0.008+0.009を計算しなさい。

正しく数を扱えない場合がある。

2進モード(浮動小数点による数値計算)
  LET S=0
  FOR A=0.001 TO 0.009 STEP 0.001
     LET S=S+A
  NEXT A
  PRINT S
  END

  LET S=0
  LET A=0.001
  DO WHILE A<=0.009
     LET S=S+A
     LET A=A+0.001
  LOOP
  PRINT S
  END
は、最後の0.009が加味されないので、正しく計算できません。


LET S=0
FOR A=1 TO 9
   LET S=S+A
NEXT A
PRINT S/1000
END



発展問題 (平面で考える)
10×10の表の対角方向に同じ数字が並んでいる。暗算で、この表の数字の和を求めよ。

  1  2  3  4  5  6  7  8  9 10
  2  3  4  5  6  7  8  9 10 11
  3  4  5  6  7  8  9 10 11 12
  4  5  6  7  8  9 10 11 12 13
  5  6  7  8  9 10 11 12 13 14
  6  7  8  9 10 11 12 13 14 15
  7  8  9 10 11 12 13 14 15 16
  8  9 10 11 12 13 14 15 16 17
  9 10 11 12 13 14 15 16 17 18
10 11 12 13 14 15 16 17 18 19

答え
左上と右下とを10でならして10×(10×10)、または、180°回転したものを加えて(1+19)×(10×10)÷2
より、1000

PRINT 10*(10*10)
PRINT (1+19)*(10*10)/2
END


その2
LET S=0
FOR Y=1 TO 10 !行
   FOR X=Y TO Y+10-1 !列
      LET S=S+X
   NEXT X
NEXT Y
PRINT S
END

その3  等差数列の和
LET S=0
FOR Y=1 TO 10 !行
   LET S=S+(Y+(Y+10-1))*10/2 !1行目の場合、1+10,2+9,3+8,…,10+1 すなわち、11が10個
NEXT Y
PRINT S
END



類題
三角形状に同じ数字が並んでいる。暗算で、この表の数字の和を求めよ。

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

答え
正三角形に並んでいるとする。元の並びに、

120°回転
 10
  9 10
  8  9 10
  7  8  9 10
  6  7  8  9 10
  5  6  7  8  9 10
  4  5  6  7  8  9 10
  3  4  5  6  7  8  9  10
  2  3  4  5  6  7  8  9 10
  1  2  3  4  5  6  7  8  9 10

240°回転
 10
 10  9
 10  9  8
 10  9  8  7
 10  9  8  7  6
 10  9  8  7  6  5
 10  9  8  7  6  5  4
 10  9  8  7  6  5  4  3
 10  9  8  7  6  5  4  3  2
 10  9  8  7  6  5  4  3  2  1

の同じ位置の数を足し合わせると、

 21
 21 21
 21 21 21
 21 21 21 21
 21 21 21 21 21
 21 21 21 21 21 21
 21 21 21 21 21 21 21
 21 21 21 21 21 21 21 21
 21 21 21 21 21 21 21 21 21
 21 21 21 21 21 21 21 21 21 21

21が55個並ぶ。 よって、21×55÷3=385


一般的に、
数字(2n+1)がn(n+1)/2個並ぶ。
よって、3S=(2n+1)×n(n+1)/2 ∴S=n(n+1)(2n+1)/6
また、式を変形すると、1+(2+2)+(3+3+3)+ … +(n+n+ … +n)=1×1+2×2+3×3+ … +n×n=S=Σk^2=n(n+1)(2n+1)/6

LET S=0
FOR N=1 TO 10
   FOR K=1 TO N
      LET S=S+N
   NEXT K
NEXT N
PRINT S
END



----------------------------------------

問題
九九の表をつくりなさい。

FOR X=1 TO 9
   FOR Y=1 TO 9
      PRINT USING " ##": X*Y;
   NEXT Y
   PRINT
NEXT X
END

 

Re: 算数とプログラミング

 投稿者:山中和義  投稿日:2016年 6月 1日(水)14時53分27秒
  > No.4071[元記事へ]

2時限
テーマ  構造文(分岐、条件式)

・文章問題

問題
4で割ると1余り、5で割ると2余る3桁の自然数の和はいくつか。

答え
4で割ると1余る数は、101,105,109,113,117,…
5で割ると2余る数は、102,107,112,117,…

FOR X=100 TO 999 !3桁の自然数
   IF MOD(X,5)=2 THEN !5で割ると2余る
      PRINT X !確認する
   END IF
NEXT X
END

で一方を満たす数を求めて、さらにもう一方を満たすものは、

LET S=0 !和
FOR X=102 TO 999 STEP 5 !5で割ると2余る
   IF MOD(X,4)=1 THEN !4で割ると1余る
      PRINT X !確認する
      LET S=S+X
   END IF
NEXT X
PRINT S
END

まとめると、
LET S=0
FOR X=100 TO 999
   IF MOD(X,4)=1 AND MOD(X,5)=2 THEN
      PRINT X !確認する
      LET S=S+X
   END IF
NEXT X
PRINT S
END


また、

FOR X=100 TO 999
   IF MOD(X,4)=1 AND MOD(X,5)=2 THEN
      PRINT X !確認する
   END IF
NEXT X
END

として、117を求めて、

LET S=0
FOR X=117 TO 999 STEP 4*5
   PRINT X !確認する
   LET S=S+X
NEXT X
PRINT S
END




問題  過不足算
みかんを何人かに分ける。
1人6個ずつ分けると38個残り、1人15個ずつ分けると最後の1人分が何個か不足するという。
人数とみかんの個数を求めよ。

考察
1人に15個ずつ分けるとき、「6個ずつ分け、残り38個を(15-6)=9個ずつ分ける」と考える。
(終わり)

LET N=INT(38/(15-6))+1 !38÷9=4あまり2
PRINT N; 6*N+38
END

また、
1人,2人,3人,…と調べていくと、

LET X=1 !人数
DO
   LET S=6*X+38 !個数
   LET Y=S-15*(X-1) !最後の1人の個数
   IF Y>=0 AND Y<15 THEN EXIT DO
   LET X=X+1
LOOP
PRINT X; S
END


その2
人数をx、最後の1人の個数をy個とする。 6x+38=15(x-1)+yより、不定方程式9x+y=53を考える。
(終わり)

FOR X=1 TO 53/9
   LET Y=53-9*X
   IF Y>=0 AND Y<15 THEN
      PRINT X;Y;6*X+38
   END IF
NEXT X
END

 

戻る