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 ・・・」という構文で、条件(~)つきの動作(・・・)をプロ
グラミングする話だ。「もし~なら、その時は・・・」ということ。これを使えば、前
回生じたような暴走トラブルも防げる。
最初の問題は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行に戻って繰り返せ、と命令する条件つき命令文だ。「以下」の記
号は、「<=」か「=<」。つまり、不
等号と等号の連続で表す。教科書
の例に素直に従うなら、「N<99」
と書く所だけど、勉強のためにあえ
て、「N<=97」と変更。「THEN」
の次に書くべき「GOTO」は省略
可能だから、書いてない。
実は最初、40行の右端に「;」を
入れ忘れてたので、実行すると、
画面では55から99まで縦に表
示された。53以下は見えない。
画面が小さくて、大きくできないようになってるし、スクロールやカーソル移動
もできないのだ。どんなキーを押しても、元のプログラムの画面に戻るだけ。
40行を修正す
ると、左のよう
に縦横に数字が
並んだ(右側は
省略)。横の並びが長過ぎるから、適当な長さで折り返したいけど、まだその
方法は不明。次回、扱う予定の「2重ループ」というものを使うしかないのか。。
☆ ☆ ☆
続いて、練習22。あらかじめ用意されてる「組み込み関数」の1つ、絶対値計
算関数ABS(X)を使わずに、a-bの絶対値を計算するプログラムの作成。
ちなみに「絶対値」は英語で「absolute value」だから、先頭の3文字を取っ
て「ABS」などと略す。
教科書で直前に書かれた例17(a、b、cを3辺とする三角形が存在するかど
うかの判定)を参考にブログラミングすると、計算は上手く出来たけど、結果
の黒い画面から元の画面に戻れなくなってしまった。いつまでも入力を要求
されてしまったので、仕方なくソフトを終了して再起動。
修正したのが、次
のプログラムで、
これは上手く行っ
た。前のものは、
60と80が「GO
TO 20」となっ
てたから、無限に
aとbの値の入力
を要求されてしまったのだ。
実行結果は、左の通り。
(絶対値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になるはず。
先に、今までの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、
S=56+8²=120、と計算して、次のNは10
だから無視して終了。答は単に、S=120と出
力するわけだ。ソフト的には一応、Nは10
まで変化させてるはずだけど、出力(プリント)はSのみだから、関係ない。
ちなみに「S」は、「和」を表す英語「sum」の頭文字。
☆ ☆ ☆
一方、「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行の入れ替え、
入力の仕方、文字。
N!=1×2×・・・×Nだから、
掛け算、つまり積を求める計
算になる。「積」は英語で
「product」だから、頭文字P
で表してある。要するに、1に
2を掛けて、3を掛けて、4を
掛けて・・・という単純な掛け算
の繰返しを続けて、積をN!まで変化させてるわけだ。
FOR 文とNEXT 文に挟まれた第50行だけ、先頭を1マス右側に下げて
ある。ループが1行だけの簡単なプログラムだと、あまり意味はないけど、
ループが複数行とか複数回ある複雑なプロ
グラムなら分かりやすいだろう。実行画面
で、要求に従って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字)
| 固定リンク | 0
「数学」カテゴリの記事
- 3種類の絵だけ通る迷路パズルの考え方、解き方(難易度4、ニコリ作、朝日新聞be、22年6月25日)(2022.06.26)
- パズル「絵むすび」22、解き方、考え方(難易度4、ニコリ作、朝日be、22年5月21日)(2022.05.21)
- 出題者の誘導に従う思考力の難問、補助線を引いて正三角形を利用~渋谷教育学園渋谷中2022年入試・算数問題3の解き方(2022.04.02)
- パズル「絵むすび」21、解き方、考え方(難易度2、ニコリ作、朝日be、22年3月19日)(2022.03.19)
- 碁盤と碁石(黒・白)の迷路パズルの解き方(難易度4、ニコリ作、朝日新聞be、22年3月5日)(2022.03.05)
「プログラミング」カテゴリの記事
- C言語入門5~選択構造、if文、else、switch-case文による多岐分岐(2021.11.20)
- 将棋AIも採用、ミニ・マックス法の無駄を省いた α β(アルファ・ベータ)法と α 値、β 値の具体例の解説(2021.11.18)
- C言語入門4~変数の入力と計算、型指定子 int(整数型)、float(実数型)、順次構造(2021.10.28)
- 超初心者によるC言語入門3~情報系学科の大学生が1年生向けに作った学習アプリ『Study-C』で復習(2021.10.16)
- 未解決問題「コラッツ予想」と確認用プログラミング(BASIC)~2011センター試験・数学ⅡB(2021.09.10)
コメント