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
「数学」カテゴリの記事
- ChatGPT-4、パズル「推理」の解答に大苦戦♪(難易度5、ニコリ作、朝日be、23年5月27日、表は使わない)(2023.05.27)
- パズル「絵むすび」27、解き方とコツ、考え方(難易度4、ニコリ作、朝日新聞be、2023年4月8日)(2023.04.09)
- パズル「ナンスケ」の解き方、考え方10~難易度4、ニコリ作、朝日新聞be、2023年2月25日(2023.02.26)
- パズル「絵むすび」26、解き方とコツ、考え方(難易度3、ニコリ作、朝日新聞be、2023年2月11日)(2023.02.12)
- 1~7の数字を並べた整数A、Bの和が9723になるのは何通りか(高校・場合の数)~開成中2023年入試、算数・問題5の解き方(2023.02.04)
「プログラミング」カテゴリの記事
- Python(パイソン)入門1~人気プログラミング言語を高校教科書副教材(東京書籍)とオンライン環境Bit Arrowで簡単に(2023.02.28)
- 令和3年度、文科省・情報活用能力調査の調査問題例と正答(小中高、4年1~2月)、感想とレビュー(2022.12.28)
- C言語入門5~選択構造、if文、else、switch-case文による多岐分岐(2021.11.20)
- 将棋AIも採用、ミニ・マックス法の無駄を省いた α β(アルファ・ベータ)法と α 値、β 値の具体例の解説(2021.11.18)
- C言語入門4~変数の入力と計算、型指定子 int(整数型)、float(実数型)、順次構造(2021.10.28)
コメント