見出し画像

中学生の大学共通テスト情報ぷろぐらみんぐ脳トレ 第2回 配列変数に慣れよう!!

第一回はループ処理について学習、脳トレを行いました。今回は配列処理について学習、脳トレをいたします。
実際、大学共通テスト情報のプログラミングのサンプル問題では、配列処理の慣れがなければ、困惑してしまうのです。


ちなみに  サンプル問題はこちらです。

ご覧のとおり。このサンプル問題の第2問が、プログラミング問題に該当します。一見見た感じ、ギョッとするでしょう!難しい!訳わかんない!という感じでしょうか。だいたい中学生にこんな問題解ける訳ないでしょう!と言うのが大半でしょう。しかし使われているプログラミングルールは、大きく、ループ処理、配列、分岐処理の3つです。そしてその中核を配列処理が占めています。

実際高校生でもプログラミングルールはわかっていても、プログラミング脳トレをやっていなければ解答不能なのです。将棋やチェスや囲碁のルールは知っていても、ゲームができないのと一緒です。

ではまず配列のルールです。
ルールは極めて簡単です。配列とはイメージしてもらうと、表のようなものと思って下さい。

例えば、このようなお財布別の金額一覧表のようなものです。お財布ごとにナンバーが付いていると思って下さい。

     (第0列) (第1列)   (第2列) (第3列)・・・・ (第n列)
    お財布[0]   お財布[1]  お財布[2]  お財布[3]                お財布[n]
 金額    300    100    200   500 ・・・・・お財布[n]の金額

もうお気づきでしょうが、列は第0列から始まります。言語により1から始まるものもありますが、サンプル問題も、Python, Javascript, VBAのいずれの言語も配列は第0列から始まりますので、0から始まることに慣れておいてください。

まずこのように[ ]型カッコを使って、配列を宣言します。宣言することで、その変数は配列変数となります。

宣言例
お財布=[]
これは配列変数のお財布を宣言し、
お財布[0]=0   お財布[1]=0  お財布[2]=0  ・・・・・・ お財布[n]=0
をあらわします。

お財布=[300,100,200,500]
と書くと、配列変数のお財布を宣言し、
お財布[0]=300   お財布[1]=100  お財布[2]=200  お財布[3]=500
であることを表します。

配列変数も普通の変数と同じく、代入や計算ができます。例えば
お財布[0]=100
お財布[1]=200
お財布[2]=お財布[0]+お財布[1]
print(お財布[2])

お財布[2]はお財布[0]の100とお財布[1]の200を足して300と表示されます。

では例題です。

お財布=[1000, 2000, 0]
お財布[2]=1000+お財布[0]+お財布[1]
表示せよ(お財布[2])

何か見覚えありませんか? 第一回の記載例とそっくりですね。普通の変数を使って書くと第一回のように

お財布赤=1000
お財布青=2000
お財布黄=0
お財布黄=お財布黄+(1000+お財布赤+お財布青)
表示せよ(お財布黄)

となります。

では配列変数の脳トレ開始です。何と表示されるでしょう?

問1) 簡単!
A=[ ]
A[0]=A[0]+1
A[0]=A[0]+1
A[0]=A[0]+1
A[0]=A[0]+1
print( A[0] )

問2)このぐらいは頭の中でやりましょう。脳トレです。
A=[ ]
A[0]=A[0]+1
A[1]=A[1]+1
A[0]=A[0]-1
A[1]=A[1]+1
print( A[0], A[1])

問3) 問2と似てますね!
A=[ ]
L=1
A[0]=A[0]+L
A[1]=A[1]+L
A[0]=A[0]-L
A[1]=A[1]+L
print( L, A[0], A[1])

問4) 問3と似てますね!
A=[ ]
L=4
A[0]=A[0]+L
A[1]=A[1]+L
A[0]=A[0]-L
A[1]=A[1]+L
print( L, A[0], A[1])

問5)  さあここからが、本題です!!!
A=[ ]
L=0
A(L)=100
L=L+1
A(L)=200
print( L, A[0], A[1])

答え:
1、100,200

問6)  まだまだ大丈夫!!
A=[ ]
L=0
A(L)=100
L=L+1
A(L)=200
L=L+1
A(L)=500

print( L, A[0], A[1], A[2])

答え:
2、100,200 , 500

問7)  同じく!!
A=[ ]
L=0
A(L)=100
L=L+1
A(L)=200
L=L+1
A(L)=500
L=L+1
A(L)=100

print( L, A[0], A[1], A[2], A[3])

答え:
3、100,200 , 500, 100

問8-1 いよいよループです。
A=[ ]
L=0
●繰り返し始まり 回数2回
    A[L]=A[L]+1
      L=L+1
   ●繰り返し にもどる
print(L , A[0] , A[1] , A[2])

答え:
2,  1,1 , 0

問8-2 2回ループです。
A=[ ]
L=0
●繰り返し始まり 回数2回
    A[L+1]=A[L]+2
      L=L+1
   ●繰り返し にもどる
print(L , A[0] , A[1], A[2])

答え:
2,  0 , 2,4

問8-3 3回ループです。
A=[ ]
L=0
●繰り返し始まり 回数3回
    A[L+1]=A[L]+1
      L=L+1
   ●繰り返し にもどる
print(L , A[0] , A[1], A[2] ,A[3])

答え:
3  0 , 1,2,3

問8-4 4回ループです。
A=[ ]
L=0
●繰り返し始まり 回数4回
    A[L+1]=A[L]+1
      L=L+1
   ●繰り返し にもどる
print(L , A[0] , A[1], A[2] ,A[3] , A[4])

答え:
4  0 , 1,2,3 , 4

問8-5 同じく4回ループです。
A=[ ]
L=0
●繰り返し始まり 回数4回
    A[L+1]=A[L]+2
      L=L+1
   ●繰り返し にもどる
print(L , A[0] , A[1], A[2] ,A[3] , A[4])

答え:
4  0 , 2,4,6 , 8

問 9  やや複雑です。
A=[ ]
L=0
A[L]=A[L]+1
L=L+1
A[L]=A[L-1]+1
print(L , A[0] , A[1] , A[2])

答え:
1 ,1 , 2 , 0

問 10 やや複雑です。
A=[ ]
L=0
A[L]=A[L]+1
L=L+1
A[L]=A[L-1]+1
L=L+1
A[L]=A[L-1]+1
print(L , A[0] , A[1] , A[2])

答え:
2 ,1 , 2 , 3

問 11  いよいよ本格ループです。メモをとりましょう。
A=[ ]
L=0
●繰り返し始まり 回数2回
    A[L]=A[L]+1
      L=L+1
   A[L]=A[L-1]+1
  ●繰り返し にもどる
print( L , A[0] , A[1] , A[2])

ヒント
繰り返し1回目で
A[0]は1,で A[1]はA[0]+1なので2です。戻るときの L は1で
繰り返し2回目で
A[1]は1加算されて3になり、A[2]は3になったA[1]に1加算して4です。

答え:
2 ,1 , 3  , 4

問 12  いよいよ本格ループです。メモをとりましょう。
A=[ ]
L=0
●繰り返し始まり 回数 3回
    A[L]=A[L]+1
      L=L+1
   A[L]=A[L-1]+1
  ●繰り返し にもどる
print( L , A[0] , A[1] , A[2] , A[3])

ヒント
繰り返し1回目で
A[0]は1,で A[1]はA[0]+1なので2です。戻るときの L は1で
繰り返し2回目で
A[1]は1加算されて3になり、A[2]は3になったA[1]に1加算して4です。
繰り返し3回目で
A[2]は1加算されて4になり、A[3]は4になったA[2]に1加算して5です。

答え:
3 ,1 , 3 , 4 , 5

この記事が気に入ったらサポートをしてみませんか?