« ノーベル平和賞、「始まりにすぎない」&距離稼ぎジョグ | トップページ | 「終わり」について・・&気持ち良く16km走♪ »

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

また、あっと言う間に1ヶ月半の空白期間が経過してしまったが、代表的な

初心者向けソフト・BASICの1つのヴァージョン、Quick BASIC(クイック・

ベーシック)の練習を続けよう。

 

これまで書いて来た5本の記事は以下の通り。ほぼ完全に知識ゼロ、ソフト

も無い状態の初心者状態からスタートしてる。必要なら、過去記事に戻って

読むことをお勧めする。 

 

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

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

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

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

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

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

 

 

          ☆          ☆          ☆

前回のトラブルで、消えてしまった昔のファイルはそのままになってるが、ソフ

ト自体は発見できた。今回の使用でも、別に問題は無かったから、壊れてない

感じだ。

 

ただし、ファイルの保存作業がおかしくなって、保存と再利用(「開く」)は出来

るのに、なぜかPC内で発見できない。普通のエクスプローラーの設定をどう

変えても、ファイルが表示されないままになってる。 まあ、あまり気にしないこ

とにしよう。

 

使用テキストは今まで同様、少し前の高校数学の教科書、数研出版『数学A』

1995年版)。教科書の記述のままだと上手く行かないこともあるし、自分自

身の勉強にもあまりならないので、マイナーチェンジや試行錯誤を繰り返すこ

とになる。

 

念のために注意しとくと、やはり特殊な世界で、何が起こるか予想できない

ので、、PC内のデータのバックアップは行っておく必要があると思う。その辺

り、リスク・テイクやリスク管理はあくまで自己責任ということで、悪しからず

ご了承を。ちなみに私はこれまで、このベーシックの保存ファイルが消えた

だけで、他の実害は残ってない。

 

 

           ☆          ☆          ☆

では、前回の続きということで、再び教科書p.177~の「条件判断」、「IF文

から。「IF ~ THEN ・・・」という構文で、条件(~)つきの動作(・・・)をプロ

グラミングする話だ。「もし~なら、その時は・・・」ということ。これを使えば、前

回生じたような暴走トラブルも防げる。

 

141012a2 最初の問題はp.178

 の練習21。前ページ

 の例(1~50の自然数

 の表示)を修正して、

 1~99の奇数を表示

 させるプログラムを作

 成する。

 

最初の第10行は、コンピューターにとっては不要だけど、人間にとって分か

りやすくするための、REM文。リマーク(remark:注釈)として、「1,3,5,,,」

を表示させると宣言してるわけだ。第20行の「N=-1」からスタートして、第30

行の「N=N+2」という特殊な式で、今までのNに2を加えて新たなNとする操

作を指示。第40行で、Nを表示。ただし、2を足した後のNだから、最初に表示

されるのは-1ではなく、1になる。

 

そして、問題のIF文が第50行、「IF N<=97 THEN 30」。もしNが97以

下なら第30行に戻って繰り返せ、と命令する条件つき命令文だ。「以下」の記

141012b  号は、「<=」か「=<」。つまり、不

  等号と等号の連続で表す。教科書

  の例に素直に従うなら、「N<99」

  と書く所だけど、勉強のためにあえ

  て、「N<=97」と変更。「THEN」

  の次に書くべき「GOTO」は省略

  可能だから、書いてない。

 

  実は最初、40行の右端に「;」を

  入れ忘れてたので、実行すると、

  画面では55から99まで縦に表

  示された。53以下は見えない。

画面が小さくて、大きくできないようになってるし、スクロールやカーソル移動

もできないのだ。どんなキーを押しても、元のプログラムの画面に戻るだけ。

 

141012b2 40行を修正す

 ると、左のよう

 に縦横に数字が

 並んだ(右側は

省略)。横の並びが長過ぎるから、適当な長さで折り返したいけど、まだその

方法は不明。次回、扱う予定の「2重ループ」というものを使うしかないのか。。

 

 

          ☆          ☆          ☆

続いて、練習22。あらかじめ用意されてる「組み込み関数」の1つ、絶対値計

算関数ABS(X)を使わずに、a-bの絶対値を計算するプログラムの作成。

ちなみに「絶対値」は英語で「absolute value」だから、先頭の3文字を取っ

て「ABS」などと略す。

 

教科書で直前に書かれた例17(a、b、cを3辺とする三角形が存在するかど

うかの判定)を参考にブログラミングすると、計算は上手く出来たけど、結果

の黒い画面から元の画面に戻れなくなってしまった。いつまでも入力を要求

されてしまったので、仕方なくソフトを終了して再起動。   

141012c2 修正したのが、次

 のプログラムで、

 これは上手く行っ

 た。前のものは、

 60と80が「GO

 TO 20」となっ

 てたから、無限に

 aとbの値の入力

を要求されてしまったのだ。

 

141012d2  実行結果は、左の通り。

    (絶対値5-3)=2

    (絶対値1-7)=6

  確かに正しい絶対値計算が2種類、

  表示されてる。ただし、1回計算する

  ごとに元のプログラムの画面に戻って

再スタートすることになる。

 

 

            ☆          ☆          ☆

続いて、新しい話に向かおう。教科書p.179からの「FOR 文」と「NEXT 文」。

これまでは IF 文を使って、繰返し部分(「ループ」)を書いてたが、他の書き方、

他の繰り返し処理も勉強しようという話だ。慣れれば、FOR 文とNEXT 文を使

うと便利で分かりやすいのかも知れない。

 

教科書ではまず、1~99の奇数の2乗の和を例にしてるから、ここでは2~8 

の偶数の2乗の和で考えてみよう。つまり、2²+4²+6²+8²の計算で、答は

120になるはず。

 

141012e  先に、今までのIF 文で

  書いてみる。偶数Nと和

  S、2つの変数が少しず

  つ変化していくから、や

  や分かりにくい。

 

  要するに、S=0、N=2、

S=2²=4、N=4、S=4+4²=20、N=6、S=20+6²=56、N=8、

141012f  S=56+8²=120、と計算して、次のNは10

  だから無視して終了。答は単に、S=120と出

  力するわけだ。ソフト的には一応、Nは10

まで変化させてるはずだけど、出力(プリント)はSのみだから、関係ない。

ちなみに「S」は、「和」を表す英語「sum」の頭文字。

 

 

           ☆          ☆          ☆    

141012g2 一方、「FOR 文」と

 「NEXT 文」を使うと

 左のようになる。

 まず20行目。「FOR

  TO 」の形で、「2

  から8まで2ずつ増える

変数Nに対して」計算することを指定。30行目で和SにN²を加えて、40行目

で「NEXT N」、つまり「次のN」に進んでSを計算し直すことになる。この場

合、ループ(繰返し)する計算箇所は30行目だから、そこだけ1マス右側に 

下げて書くと分かりやすいという話だ。

 

その1マス下げる書き方を使って、最後に教科書の例18、自然数Nの階乗 

N!を求めるプログラムを書いとこう。教科書では、N(エヌ)の小文字と大文

字が混在してるので、ここでは大文字に統一する。他にも、勉強のために、

教科書とは色々と変えてある。第10行の注釈文、20行と30行の入れ替え、

入力の仕方、文字。

 

141012h2  N!=1×2×・・・×Nだから、

  掛け算、つまり積を求める計

  算になる。「積」は英語で

  「product」だから、頭文字P

  で表してある。要するに、1に

  2を掛けて、3を掛けて、4を

  掛けて・・・という単純な掛け算

の繰返しを続けて、積をN!まで変化させてるわけだ。

 

FOR 文とNEXT 文に挟まれた第50行だけ、先頭を1マス右側に下げて

ある。ループが1行だけの簡単なプログラムだと、あまり意味はないけど、

141012i  ループが複数行とか複数回ある複雑なプロ

  グラムなら分かりやすいだろう。実行画面

  で、要求に従ってN=4を代入すると、

4!=1×2×3×4だから、4!=24と表示される。

 

なお、今週は計19104字となった。それでは、今回はこの辺で。。☆彡

 

 

 

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

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

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

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

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

 

                                     (計 3391字)

|

« ノーベル平和賞、「始まりにすぎない」&距離稼ぎジョグ | トップページ | 「終わり」について・・&気持ち良く16km走♪ »

数学」カテゴリの記事

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

コメント

コメントを書く



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


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



« ノーベル平和賞、「始まりにすぎない」&距離稼ぎジョグ | トップページ | 「終わり」について・・&気持ち良く16km走♪ »