配列変数

プログラムのはじめの部分に,DIM a(8)と書くと,a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8)の計8個の変数が用意される.a(1),a(2),…,a (8)は,それぞれ,普通の変数として使用できる.これらの変数全体をまとめて配列とよぶ.個々の変数は添字付き変数,括弧内を添字という. 単純にaと書いた変数とは異なり,a(1), a(2)・・a(n)で表される変数である.括弧内の整数値で何番目の変数かを指定することができる.
 下記のプログラムを実行すると,ランダムに列んだn個の数値データを読み込んで,小さい順に並べ替える.そのためには,まずdimension文を使用して,n個の番号のついた記憶場所をメモリー上に用意する.

○並べ替えプログラム

10 read n  →データの個数を100行のdata文から読み込む
20 dim x(n) →変数xはx(1), x(2), x(3), ・・, x(n)のように番号を付けられ,n個のデータの記憶場所が確保される
30 for i=1 to n  → iは1からnまで変化しながら次行でデータx(i)を110行のdata文から読み込む
40  read x(i)
50 next i          →30行と繰り返し文を構成している
55 rem ----- sorting ----- →コメント行(実行とは関係ないメモ)
60 for i=1 to n       →90行と繰り返し構文
65  for j=i+1 to n     →85行と繰り返し構文
70   if x(j)<x(i) then   →80行と判断文を構成(もし条件が成立すれば以下を実行)
72    kari=x(i)     →kariにx(i)の値を代入
74    x(i)=x(j)     →x(i)にx(j)の値を代入
76    x(j)=kari     → x(j)にkariの値を代入,x(j)とx(i)の入れ替えが実行される,
80   end if
85  next j →
90 next i →
91 rem ----- output of result ----- →結果の表示(メモ)
92 for i=1 to n
94  print x(i);
96 next i
100 data 10
110 data 6,2,5,4,10,9,1,8,3,7
120 end


実行すると
1 2 3 4 5 6 7 8 9 10
が得られる.

演習 上記プログラムを入力,実行し,構文を理解せよ.




SWAPによる配列の入れ替え

 十進BASICではSWAPが利用できるが、コマンドとして準備されていないBAISCインタプリタもあるので前例を理解すること。

60 for i=1 to n
65  for j=i+1 to n
70   if x(j)<x(i) then
75    swap x(i),x(j)  →前出のプログラムの72,74,76行を一行で実行する
80   end if
85  next j
90 next i

課題1 先週の試験の点数(下記)を「点数の高い順」に並べるプログラムを作りなさい。
ただし、データの数はプログラムには書き込まないこと。
とある試験の点数

78,71,70,60,101,87,80,23,95,51,84,81,16,84,93,76,88,96,91,76,72,45,83,66,48,
87,66,99,95,111,83,54,67,91,96,81,78,43,74,85,84,82,3,84,71,83,81,72,22,46,103,
62,77,65,67,92,40,76,109,20,33,6,79,61,90,88,95,96,37,74,95,77,35,100,96,56,
75,89,46,73,63,62,90,71,94,42,71,73,12,92,50,55,54,75,83,75,60,23,38,62,54,69,
39,60,55,87,64




課題2
 有機化合物を構成する炭素、水素、窒素等の比を求めるために、元素分析を行う。薬学部キャンパスにある機器分析センターに試料を提出すると、有機物を完 全燃焼させることにより得られる生成物(炭酸ガス、水等)から計算した値(各元素のパーセント)が返される。元素分析値から組成式を計算するプログラムを 作りなさい。
 ○炭素,水素,窒素以外は酸素とすること.
  したがって,酸素%=100−(炭素%+水素%+窒素%)である.
 ○最終的には,分子量が与えられたとして,分子式を求めること.

1.電卓で計算するとしたらどのような手順で計算するか考える.
2.その手順に沿ってフローチャート(メモでもよい)を考える.
  1)配列変数を確保する
  2)データを読み込む
  3)データを合計する
  4)酸素の%を求める
    以下省略
3.フローチャートにBASIC言語をあてはめる.
4.テストデータ
  ニトロベンゼン
  炭素 58.54%:水素 4.09%: 窒素 11.38%
  分子量 123.11
5.計算結果はC6H5NO2のように表示させる。(1は表示しない。含有しない元素は表示しない)

プログラムには、美しさ、も必要です。 上記のような機能をもつプログラムを30行以内で作成してみてください。
(for next文、条件分岐文、配列関数、文字列関数、をうまく利用すると可能です)

プログラムがちゃんと出来たら(上記テストデータで確認)以下のデータで分子式を計算してみて下さい。
また、構造式を推定してChemDrawで作画し、化合物名をIUPAC名で書いてください。
プログラム、問題1-3の計算結果、構造式、化合物名、をPDFファイルとしてMoodle上に提出してください。

  • 問題1
  • 炭素:81.16%、水素:8.32%、窒素:10.52%、分子量 133.19
  • 問題2
  • 炭素:78.90%、水素:10.59%、窒素:0%、分子量 152.24
  • 問題3
  • 炭素:94.34%、水素:5.66%、窒素:0%、分子量 178.23