« やたら待たされた金曜の夜&今度は左膝に痛み・・ | トップページ | 残り271字、25km走データのみ »

Quick BASICの練習(6)~DIM文と配列変数(添字つき変数)

時間も残り字数も少ない、年の瀬の週末。1ヶ月ぶりにプログラミングで簡単

な記事を書いて済ませようと思ったら、失敗してしまった。久々に、ソフトがフ

リーズ(異常停止)したし、練習問題の完全な解答もまだ出来てない。それで

も、「配列変数」その他、今までに出てない領域に踏み込んだのは確かだか

ら、クイック・ベーシックの6本目の記事としてアップしとこう。

 

これまでのプログラミング記事7本(2本+5本)は以下の通り。ほぼ完全に

知識ゼロ、ソフトも無い状態の初心者状態からスタート。必要なら過去記事

に戻って読むことをお勧めする。 

 

 

  初めてのプログラミング♪

              ~メモ帳でバッチファイル作成(コマンドプロンプト用)

  初めてのプログラミング(2)~計算その他、簡単なバッチファイル

 

    ・・・・・・・・・・・・・・・・・・・・

  Quick BASICのダウンロード、ダイレクトモード(Immediate)入力と計算

  Quick BASICの練習(2)~プログラム・モードでの入力&実行

  Quick BASICの練習(3)~REM 文、GOTO 文、IF 文、各種トラブル・・

  Quick BASICの練習(4)~IF文、FOR文、NEXT文とループ(繰返し)

  Quick BASICの練習(5)~二重ループ、流れ図(フローチャート)

 

 

テキストは高校数学の教科書、数研出版『数学A』1995年版)。教科書のま

まだと上手く行かないこともあるし、勉強にもならないので、マイナーチェンジ

や試行錯誤を繰り返すことになる。

 

 

           ☆          ☆          ☆

では、新しい要素の「配列変数」(array variable)。簡単に言うと、高校数学

以上で出て来る、添え字付きの変数のことだ。X₁、X₂とか、Anとか、右側に

0以上(または1以上)の整数を付けることで、グループ分けした変数。プロ

グラミングの場合、小さい添字の代わりにカッコを使って、X(2)、A(I)のよう

に表現する。

 

変数の数が少なければ、単にアルファベットを多用する方が簡単だけど、変

数が大量にある時に困るし、「k番目の変数」というような指定もできない。配

列変数を使うと、AさんとBさんの2回ずつの点数を、A₁、A₂、B₁、B₂と

表すことも出来るし、実用的なのだ。

 

では、教科書p.188の例を少し変えたプログラムから。

 

141220b

 

まず、Dimension(次元)の略語「DIM」を使って、配列変数A(0)~A(3)を

用意。一番大きな数のもの、つまりA(3)だけ書く。それぞれの値を2、4、6、

8と決めた後、似て非なるものとして、A0~A3も用意(それぞれ、1、3、5、7)。

こちらを先に、そのままプリント(表示)した後、FOR~NEXT構文で、配列変

数をプリントさせる。

 

141220a  実行(RUN)の結果は左の通り。下

  段がA(0)~A(3)で、これだけの事

  なら配列変数を使う意味は無い。た

  だ、書き方や扱いが違うわけだ。

 

 

           ☆          ☆          ☆

続いてp.189の例3。さいころを何度か投げて、1~6の目がそれぞれ何回

出たか、カウントするプログラム。メモ用紙に手書きした方が早いが、勉強の

ためだ。

 

141220c2 配列変数は

 X(1)~X(6)。

 出た目をAとし

 て入力、X(A)

 が1ずつ増えて

 行く。3が出れ

 ば、3の回数を

 示すX(3)が1

 増える。GOTO

文で第30行に戻って、次の目を入力。最後は0を入力して、IF~THEN構文

で第80行にジャンプ、さいころ投げ終了。各目の回数が表示される。

 

141220d  左は「3、5、5、2、4、4」と出たと仮定した

  場合。確かに、1は0回、2は1回、3は1回、

  4は2回、5は2回、6は0回と表示された。

 

  これを「X(1)は0、X(2)は1・・・」という表

  示にする方法は、まだ発見できてない。

  「PRINT ”X(I)”」とプログラミングすると、

  「X(I)」と表示されてしまうのだ。クリスマス

  後に再チャレンジの予定。

 

(☆追記: 各配列変数の初期値は、設定しなくても自動的に0となるらしい。)

 

 

            ☆          ☆          ☆

最後に、まだ苦戦中のp190、問9。ある集団の人達の年齢を入力して、年代

別に分けるプログラムを作れという問題だけど、自然数÷自然数の商を求める

関数が使えない環境なので(¥マークが使用不能)、不利な状況。37¥10=3

で30代とか出来ない。

 

とりあえず今日は、「20歳以上の成人と未成年者を分けてカウントするプログ

ラム」を書くだけで終わりにしとこう。

 

141220f3_4

 

 

配列変数は未成年者(0歳以上 AND 20歳未満)がX(0)、成人がX(1)。

REM文(説明書き)に続いて、第20行で「DIM X(1)」とだけ書いて設定。

2つの条件を「AND(かつ)」でつないだのは初めてだし、数Aの教科書には

見当たらない。「200」歳入力で終了。

 

141220e2  8、15、22、35、48と年齢を入力

  すると、「区分0は2人 区分1は

  3人」と出力される。これを「X(0)

  は」とか「未成年者は」などと表示

  させるのが、残された課題。色々

  と試してるとフリーズしたのだ。

 

  それでは今日はこの辺で ☆彡

 

 

cf. Quick BASICの練習(7)~関数値の計算、方程式の近似値

   Quick BASICの練習(8)~素数の判別、エラトステネスのふるい

   Quick BASICの練習(9)~数列の二項間漸化式と固有値、一般項

 

                          (追記 104字 ; 計 2151字)

|

« やたら待たされた金曜の夜&今度は左膝に痛み・・ | トップページ | 残り271字、25km走データのみ »

数学」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« やたら待たされた金曜の夜&今度は左膝に痛み・・ | トップページ | 残り271字、25km走データのみ »