演習問題

問題1  ループを繰り返す毎に変数aとループ変数 i の値を画面に表示するPRINT文を
     下のプログラムに挿入し,それらの値が変化していることを確認するプログラムを作
     成せよ。

                             1+2+3+…・……+10を求めるプログラム
            

  DEFINT  I
  a=0
  FOR i=1 TO 10
     a=a+i
  NEXT i
  END

        ※ ループ変数は,通常整数型の変数を用いる。他言語との移植を考慮する
          ならば,ループ変数名は先頭の英字がi,j,k,l,m,nのいずれかで始
          まる変数名とした方がよい。

問題2 
      においてa=10,d=5,n=100とした場合のSを求めるプログラムをFOR〜NEXT文
     を用いて作成せよ。

問題3 
     を求めるプログラムを指示に従い作成せよ。
     ただし,面積を求めるには次の台形公式を使用する。

                  
                                  
                                         △xが0に近づく程,近似の精度はよくなる。

     (1) △x=0.01とし,a=1.0,2.0,3.0とした場合の各々の面積を求めよ。
     (2) 被積分関数を次式に示すように変更し,△x,aの条件は上に同じとした場合の面積を求めよ。
                 
      上のグラフは次のMatlabのプログラムを用いて描きました。
               

             

問題4 上の問題1のプログラムを基に1+2+3+……+n (n=1000とする)を求める際,
     n=100,200,300,・…,1000の途中結果も表示するようにプログラムを修正せよ。
     ただし,IF文(条件に余りを返す関数MODを利用)を用いること。

問題5 表に示す2回分の実験データを2次元配列変数 f(i,j) (添字の意味:i;班名1〜6,j;実験データ1〜2)
     にREAD〜DATA文を用いて入力し,下記に示す要求を満たすプログラムを作成せよ。

            班名    実験データ1回目     実験データ2回目
            1班         220            185
            2班         200            230
            3班         195            200
            4班         220            210
            5班         170            190
            6班         210            220

                  ※ コンクリートの圧縮強度の単位(kgf/cm^2)

      (1) 全実験データの最大値 fmax,最小値 fminを求めよ。
      (2) IF文を用いて全実験データの内,210kgf/cm^2末満の実験データ個数と
          210kgf/cm^2以上の実験データ個数を求めよ。
      (3) 2回の平均値が210kgf/cm^2以上を合格とした場合,合格となる班名を出カせよ。

問題6 表に示す15人分の身長と体重のデータをREAD〜DATA文で読み取り,次の要求を満たす
     プログラムを作成せよ。ただし,変数名として身長はh(i),体重はw(i)を用いる。

        身長: 173,171,165,165,173   体重:65,55,62,58,77
            175,174,167,163,165       58,68,58,55,68
            160,167,170,180,170       53,65,56,80,70

      (1) 身長の最大値 hmaxを求めよ。
      (2) 身長の平均値 haver,体重の平均値 waverを求めよ。
      (3) 下式を参考に,身長,体重の標準偏差 hsd,wsdを求めよ。
                       ただし,
      (4) 下式を参考に,相関係数rを求めよ。
               
      (5)下式を参考に,回帰直線の傾きa を求めよ。
                
                 ただし,xに身長,yに体重を対応させる

問題7 一級建築士の学科試験を行った結果,10人分のデータが次のようであった。

             受験者NO.  構造    施工   計画   法規
             −−−−−−−−−−−−−−−−−−−−−−
                1      65     50    72    43
                2      58     55    60    85
                3      80     65    75    65
                4      55     30    50    45
                5      75     60    65    70
                6      90     55    60    60
                7      40     45    50    70
                8      50     65    40    65
                9      80     58    39    50
               10      60     65    57    65

     以上のデータを基に以下の設問を満たすプログラムを順に作成し,最終的に1つの大きなプログラムを作成
     せよ。
     ただし,変数名は指定したものについてはそれを用い,ループ変数はi〜nを使用すること。

    (1) 先ず,各学科の試験結果をREAD〜DATA文で変数名t(i,j)に読み込みなさい。
        ただし,各受験者NO.にi=1〜10,科目名(構造〜法規)にj=1〜4を夫々対応させるものとする。
    (2) 各受験者の合計点および各科目の平均点を夫々求めよ。
        変数名は合計点:total(i),平均点:aver(i)とする。添字i は1次元の配列変数であることを意味する。
    (3) IF文を用いて,次の基準に従い学科試験の合格者を判定せよ。
      a) 4科目とも60点以上の受験者は無条件に合格とし,その受験者NO.を出力せよ。
         ただし,4科目とも60点以上か否かの判断は次の設問の準備を兼ねて60点未満の科目数をカウントし,
         その値が0の場合に全て60点以上と見倣すようにすること。
      b) 4科目中1科目のみ60点末満であるが,その点数が受験者の平均点以上であり,かつ4科目の合計点が
         240点以上である場合には合格とする。この条件を満たす受験者NO.を出力せよ。
         
ヒント
           60点未満の科目数が1つのみの受験者について何番目の科目がそれに該当するのかを適当な変数
           に保存し,ANDを用いたIF文で判定を行う。

問題8
 マトリックス[a]に列べクトル{x}を掛けて{y}を求めるプログラムをFOR〜NEXT文を用いて作成せよ。
      なお,[a]および{x}の各要素の具体的なデータは下記の通りとし,データを変更した場合でもなるべく修正の
      少ないプログラムとなるよう心がけること。
         

      次の一般例を参考に添字がどのように変わるかに着目し,配列変数の添字およびループ変数をどのように
      設定すれば目的の計算が可能になるか考えよ。
         

      上記の掛け算は,マトリックスを展開すると次のようになる。

         

問題9
  問題6で作成したプログラムに追加する形で,身長を横軸に体重を縦軸にとり,散布図を作成
     するプログラムを作成せよ。なお,図中にはLINE文を用いて回帰直線とLOCATE文を用いて図中
     の適当な位置に身長,体重の平均値と標準偏差値を表示せよ。

問題10 次のデータは,2クラス分の中間試験の結果の一覧である。そのデータを基に,以下の要求
      を満たすプログラムを作成しなさい。

          ’protest data of 121 students
          DATA 5,24,42,89,36,10,7,70,18,20
          DATA 10,45,18,2,46,30,18,18,35,18
          DATA 2,74,14,10,39,10,10,57,22,67
          DATA 18,107,10,0,109,10,8,81,46,40
          DATA 6,70,26,46,13,0,22,88,0,7
          DATA 13,30,0,3,16,10,8,18,18,20
          DATA 0,7,85,20,10,0,101,5,110,66
          DATA 20,15,45,8,13,34,2,111,26,50
          DATA 22,118,18,9,66,78,12,10,0,108
          DATA 10,10,30,2,9,10,10,8,20,6
          DATA 70,2,63,63,0,12,40,12,60,54
          DATA 6,10,51,20,20,10,10,115,60,14
          DATA 38
          ’wrtest data of 121 students
          DATA 22,31,28,32,22,27,22,28,30,24
          DATA 27,27,30,27,27,30,22,28,27,22
          DATA 16,24,24,24,29,28,25,30,19,26
          DATA 29,15,25,25,25,30,9,28,26,25
          DATA 18,21,30,35,20,27,28,30,23,23
          DATA 18,29,17,23,29,30,24,25,22,20
          DATA 26,22,27,22,25,24,31,18,32,26
          DATA 25,17,25,26,31,27,22,34,18,29
          DATA 19,42,19,26,25,25,21,25,24,31
          DATA 28,24,25,24,30,24,26,30,28,29
          DATA 30,27,19,22,28,27,26,24,24,20
          DATA 29,31,29,12,25,27,30,43,27,28
          DATA 30

     a) READ〜DATA文を用いて,プログラム作成試験点数をptest(i)に,記述式試験結果をwtest(i)
        に読み込みなさい。なお,DATAは打ち込み手間を節約するため用意してあります。
        次いで,ptest(i)の平均値paveとwtest(i)の平均値waveおよびptest(i)の標準偏差値
        stdを求めなさい。

     b) 横軸にプログラム作成試験の点数ptest(i),縦軸に記述式の試験結果wtest(i)をとり,散布図
        を作成せよ。なお,図中にはa)で求めた平均値(pave,wave)をプロットし,図中の適当な位置
        にpave,waveの値を表示しなさい。
     c) プログラム作成試験点数ptest(i)について,次の区間にある点数の人数を求めなさい。
              0<=ptest(i)<10
             10<=ptest(i)<20
                     :
                     :
            110<=ptest(i)<120
        上の結果を基に,横軸にptest(i)の点数,縦軸に区間の人数をとった棒グラフを作成しなさい。
        ただし,b)の散布図とは表示の画面を切り替え,ディスプレイの左半分を使用すること。
        なお,図中にはLINE文で平均値paveを縦線で表示し,図中の適当な位置に平均値の値と
        各区間の人数を表示しなさい。
     d) 次の正規分布を表わす関数の式を参考に,μに平均値pave,σに標準偏差値stdを代入して,
        横軸にptest(i)をとり区間−70〜130のグラフをc)で描いた図形の隣,即ちディスプレイの右半分
        に
表示しなさい。
                       

        なお,準備計算として縦軸の値f(x)がどのような範囲となるのかを確認してから,WINDOWの座標値
        を決定しなさい。また,図中には平均値paveの縦線と平均値からそれぞれ±σ,±2σ,±3σだけ離れ
        た位置を表わす適当な長さの縦線を表示しなさい。さらに平均値,標準偏差値も図中の適当な位置に
        表示しなさい。

問題11 シーケンシャルアクセスファイルの作成および読み込みを行う以下のプログラムを作成せよ。

 (a) 問題8の[a]および{x}のデータをREAD〜DATA文で読み込み,それをシーケンシャルアクセスファイルとして
    保存するプログラムを作成せよ。
 (b) 上記のシーケンシャルアクセスファイルからデータを読み込み{y}=[a]{x}を求め,それを印刷するプログラムを
    作成した後,さらに{y}の値をシーケンシャルアクセスファイル(ファイル名 A:MATY.DAT)として保存する
    プログラムを作成せよ。
 (c) エクスプローラで保存したファイルを表示し,テキストファイルが作成されていることを確認せよ。

問題12 xが1から10まで1,2,・・・10と変化するとき,次の関数値を求めるプログラムを以下の仕様で作成せよ。
              y1=SQR(x),y2=EXP(x),y3=LOG(x)
                 注) LOG( )は,自然対数を求める関数
      
    仕様 a) y1〜y3の値はサブプロシージャにて計算すること。
        b) y1〜y3の結果は出力用のサブプロシージャにて打ち出すこと。
         なお,サブプロシージャで必要となる変数は引数で受け渡す方式とし,出力の体裁は下記に従うこと。

           x    SQR(x)    EXP(x)   LOG(x)
           1                          
           2                          
           :                           
           :                           
          10                          

問題13 次のデータは阪神大震災において,神戸海洋気象台で記録された地震波の初動直後から約3秒間の
     地表のNS加速度データ(単位gal)である。これを基に次の要求を満たすプログラムを作成せよ。
     なお,変数名は指示のあるものについてはそれに従うこと。

                     NS加速度(単位 gal)
                                                              
      14    25      7   −17   −24   −21  −13   −28   −28   −16
    −15     7     22    22     16    −1    −4    16     25    18
      17    17    −9   −25    −3     36    29   −22   −41    −14
       4  −13   −26    12     42      0  −60   −70   −14    24
     −2   −9     23    45     30   −16  −21    45     87    51
      16    43     92    83     16   −23   −1    24     12    −5
      10    53    111   170    208    232   263   294    318   345
     332   223     83   −33  −158  −327 −454  −497  −504  −510
   −535 −586  −629  −556  −350  −138   −4    65    133    177
     177   176    171   146     97     31  −10    14     62     96
     133   164    189   211    229    261   319   391    450    473
     469   463    469   473    424    297   120   −57  −201  −289
   −343 −393  −443  −511  −593  −676 −761  −819  −811  −703
   −521 −345  −208   −97   −19     22    70   149    224    278
     324   337    305   261    207    118     8   −71  −100  −118 
      注) ・サンプリング間隔:0.02秒
         ・加速度の符号 +;北向き, −;南向き

 (a) READ〜DATA文で加速度記録を読み込み,シーケンシャルファイルを作成するプログラムを記述せよ。
    ただし,DATA文は上記に掲げた順に15行で構成すること。
          変数名−−>加速度:acc(i)

 (b) 上のプログラムとは別にメインプログラムでシーケンシャルファイルから加速度記録を読み込み,次の要求を
    満たすプログラムを作成せよ。
     (a) 北向の最大加速度と南向きの最大加速度(即ち負符号の絶対値の最大値)を求め,
        出カするサブプロシージャプログラムを作成せよ。
          変数名−−>北向きの最大加速度:nmax,南向きの最大加速度:smax
     (b) 時間軸を横軸,加速度を縦軸にとり,加速度の波形記録を図示するサブプロシージャプログラム
        を作成せよ。

問題14 住宅の新築計画にあたり,自己資金を除く残金は全てローンを組むことにした。100万円を借りたときの
      月々の返済額の早見表が次のように与えられているとき,以下の要求を満たすプログラムを作成せよ。

                      100万円を借りたときの月々の返済額早見表(単位:円)              
                                        期間
        年利  20年  21年  22年  23年  24年  25年  26年  27年  28年  29年  30年
        5%   6599   6417   6252   6104  5968   5845   5733  5630   5535   5448   5368
        6%   7164   6988   6830   6688  6559   6443   6336  6239   6151   6070   5995
        7%   7752   7584   7434   7299  7177   7067   6968  6878   6796   6721   6653
        8%   8302   8141   7997   7869  7755   7652   7559  7475   7399   7330   7268

 (1) 上記の表をREAD〜DATA文で読み込み,シーケンシャルファイルを作成するプログラムを作成せよ。
     ただし,変数名は次に従う。
         表中の金額 :mm(i,j)
 (2) シーケンシャルファイルの内容を読み出すプログラムを新たに作成し,次いで以下の要求を満たす
    サブプロシージャ(受け渡しは引数方式)を作成せよ。
     (a) 新築費用,自己資金,ローン期間,年利をINPUT文で入力し,月々の返済額を算定せよ。
         ただし,変数名は次にしたがう。
          新築費用:cost,自己資金:smoney,ローン期間:y,年利:r,月々の返済額:s
     (b) 自己資金,年返済可能金額をINPUT文で入力し,年利7%,返済期間を20年,25年,30年とした
        場合の新築物件の購入可能金額上限値を算定せよ。
         ただし,変数名は次に従う。
          年返済額:backm,融資金額:rentalm


問題15 次のプログラムを参考に,ランダムアクセスファイルを用いた会社名,住所,電話番号登録管理
       プログラムを作成せよ。

     TYPE Rtype
     kaisya AS STRING * 25
     Zip AS STRING * 12
     Banti AS STRING * 16
     Ku AS STRING * 11
     Shi AS STRING * 8
     Tel AS STRING * 12
     END TYPE
     '
     DIM Rva(10) AS Rtype
     CLS
     ndata=6
     FOR i=1 TO ndata
       READ Rva(i).kaisya, Rva(i).Zip, Rva(i).Banti, Rva(i).Ku, Rva(i).Shi, Rva(i).Tel
       PRINT Rva(i).kaisya, Rva(i).Zip, Rva(i).Banti, Rva(i).Ku, Rva(i).Shi, Rva(i).Tel
     NEXT i
     OPEN "a:ADRES.DAT" FOR RANDOM AS #1 LEN=84
     FOR i=1 TO ndata
       PUT #1, , Rva(i)
     NEXT i
     CLOSE #1
     '
     DATA Kume Design Office,060-0001,N1W4,Chuoh_ku,Sapporo,011-241-4788
     DATA H.Development Consultant,060-0004,N4W3,Chuoh_ku,Sapporo,011-221-0771
     DATA H.Nikken,060-0031,N1E2,Chuoh_ku,Sapporo,011-241-9537
     DATA Ohbayashi_gumi,113-0033,Hongo 2-2-9,Bunkyo_ku,Tokyo,03-5689-1360
     DATA Kajima Construction,107-0052,Akasaka 1-3-26,Minato_ku,Tokyo,03-3478-5561
     DATA Shimizu Construction,105-0023,Shibaura 1-2-3,Minato_ku,Tokyo,03-5441-1111
     END


 (a) 上記プログラムで作成したファイルからデータを読み込み,札幌市に所在する会社情報のみ画面に表示する
    機能を有するプログラムを作成せよ。
 (b) 郵便番号が060-0001の会社情報を画面に表示する機能を追加せよ。
 (c) 上記の機能を発展させて所在地検索,郵便番号検索が可能となるプログラムに修正せよ。

目次へ戻る