Quick BASICの練習(5)~二重ループ、流れ図(フローチャート)
またまた1ヶ月半の空白期間が経過してしまったが、代表的な初心者向け
プログラミングソフト・BASICの1つのヴァージョン、Quick BASIC(クイッ
ク・ベーシック)の練習を続けよう。雨の夜にはちょうどいい♪
これまで書いて来た6本の記事は以下の通り。ほぼ完全に知識ゼロ、ソフト
も無い状態の初心者状態からスタートしてる。必要なら、過去記事に戻って
読むことをお勧めする。
初めてのプログラミング♪
初めてのプログラミング(2)~計算その他、簡単なバッチファイル
・・・・・・・・・・・・・・・・・・・・
Quick BASICのダウンロード、ダイレクトモード(Immediate)入力と計算
Quick BASICの練習(2)~プログラム・モードでの入力&実行
Quick BASICの練習(3)~REM 文、GOTO 文、IF 文、各種トラブル・・
Quick BASICの練習(4)~IF文、FOR文、NEXT文とループ(繰返し)
使用テキストは今まで同様、少し前の高校数学の教科書、数研出版『数学A』
(1995年版)。教科書のままだと上手く行かないこともあるし、自分自身の勉
強にもならないので、マイナーチェンジや試行錯誤を繰り返すことになる。この
教科書を一通り終わらせるまで、あと記事3本くらいだろう。。
☆ ☆ ☆
まずは前回の復習も兼ねて、教科書p.181の問5から始めよう。n個の異な
るものからr個取り出して並べる順列(Permutation)の総数、nPrの計算。
ただし、nとrは後から数値を代入。また、「FOR ~ TO ~ STEP -1」
の構文を用いてループ(繰返し)を作る。n×(n-1)×・・・×(n-r+1)の掛
け算を、左から、つまり大きい順に実行させるわけだ。
まずnとrを入
力させる形を作
る。次に、順列
nPrの初期値
は1と設定して、
nからn-r+1
まで順に掛け合
わせて行く。
実行して、指示に応じてnとrの値を5、3と代入す
ると、確かに正しい答が表示(PRINT)された。
5 P 3=5×4×3=60だ。
☆ ☆ ☆
続いて、新しい話の「二重ループ」を使う問題。FOR文とNEXT文で作るループ
(繰返し)を二重に使うことになる。普通の数学なら、大きく場合分けした中で、
さらに小さく場合分けするようなものだ。「(1)その1,その2,・・・、(2)その1,
その2,・・・」といった感じ。
適当なアレンジを思い付かないので、ここでは教科書p.180の例20、掛け算
の九九(くく)の表を作る問題を、ほぼそのまま使ってみよう。ただし、REM文
(注釈)を少し簡単にしたし、元の変数がなぜかKとJになってたからaとbへと
変更した。
1の段(横の列)
は、a=1に対し
て、b=1,2,
・・・,9を順に
掛けて、Xとし
て出力する。
次にa=2,3,
・・・,9と変化
させる。まず、aで大きなループを作り、それぞれの中でbの小さなループを作る
から、入れ子状の二重ループとなる。
FORとNEXTで挟む部分の先頭は1マス空けて分かりやすくするから、中盤で
bを変化させる箇所では先頭が2マス空いてる。50行目は、1ケタの値を表示
する時、直前に半角スペー
スを入れて、表の縦の列を
揃えるためのもの。80行
目は、1の段、2の段など
の改行を入れるためのものだ。
実行すると、確かにキレイな表になる。
☆ ☆ ☆
すぐ下の問6では、30行目の右側の「b=1 TO 9」を「b=1 TO a」へと
修正したらどうなるか、と
いう問題。
予想通り、九九の表の
右上が消えた三角形の表
になった。1の段が1×1まで、2の段が2×2までで終わるから、半分ちょっと
になるのだ。掛け算の交換法則を前提とするなら、九九の表は一応これで間
に合う。1の段から消えた1×2の代わりに、2の段の2×1を見ればいい。小
学2年生は喜ばないだろうが♪
なお、この九九の表のプログラ
ムだと行の名前が100番まで
到達する。3ケタは珍しいし10
行目だから、うっかり10番と入
力したら、「Duplicate label」
(重複ラベル)というエラー表示が出た。このくらい、自動で修正してくれても
いいと思うのは、人間のワガママか♪
☆ ☆ ☆
続いて、流れ図(フローチャート)の書き方。これはそもそも、プログラムと違っ
て人間用のものだから、流れの筋道がある程度わかればいいはずだ。少し自
由度が大きいし、プログラムとの1対1の対応関係がある訳ではない。おまけ
に技術や特殊なソフトを持ってない私の場合、ノートに手書きすることになる。
まず、今回の最初のプログラム
で、順列nPrを求める流れ図か
ら。本来は流れ図を先に書い
て、それを参照しながらプログ
ラミングするのだが、初体験の
私の場合、プログラムを見な
がら流れ図を書いた♪
世界に通じる図を意識して、
日本語なしで書いてみたが、
教科書では日本語を使って
る(他の問題)。赤字は単な
る記事用の補足説明。
はじめと終わりは、両端が
丸い長方形みたいな枠。キーボード入力は台形の枠。コンピューター処理は
普通の長方形。条件判断は菱(ひし)形で、YESとNOで2つの道に分岐する。
図を見ると、「ループ」(輪)という用語の意味が一目瞭然だろう。モニター(画
面)への表示はなぜか、左向きの弾丸の形の枠組となってる。左向きの矢印
は、変数記号への代入を表す。
☆ ☆ ☆
最後は、九九の表を作る流れ図。
ここでは、半角スペースを入れる
処理(図ではSPACE)と、改行の
処理(LINE FEED)を使うことに
なる。「二重ループ」という用語の
意味も一目瞭然だ。
それにしても、やはりプログラム
より流れ図の方が面倒だと感じ
てしまう♪ 流れ図というものは、
もっと大まかにザックリ書かない
と実用性がないような気がする。
それとも、慣れの問題だろうか。
ともあれ、今日はこの辺で。。☆彡
cf. Quick BASICの練習(6)~DIM文と配列変数(添字つき変数)
Quick BASICの練習(7)~関数値の計算、方程式の近似値
Quick BASICの練習(8)~素数の判別、エラトステネスのふるい
Quick BASICの練習(9)~数列の二項間漸化式と固有値、一般項
(計 2547字)
| 固定リンク | 0
「数学」カテゴリの記事
- パズル「絵むすび」32、解き方とコツ、考え方(難易度4、ニコリ作、朝日新聞be、2024年11月9日)(2024.11.09)
- 中国アリババ世界数学コンテスト2023予選、火の玉のコントロール、球状閃電(球電:ball lightening)の問題と解説(2024.11.05)
- NOT回路(ゲート)、AND回路、OR回路を組み合わせた設計、論理回路の問題の解き方、考え方~ 高校『情報 Ⅰ 』(2024.11.02)
- Python(パイソン)入門4~ランダムなサイコロの目の予想、数値データのリストの処理(ChatGPT4oも使用)(2024.09.20)
- パズル「絵むすび」31、解き方とコツ、考え方(難易度4、ニコリ作、朝日新聞be、2024年9月14日)(2024.09.15)
「プログラミング」カテゴリの記事
- Python(パイソン)入門4~ランダムなサイコロの目の予想、数値データのリストの処理(ChatGPT4oも使用)(2024.09.20)
- ps5.js Web Editor(Processing)のプログラミングでお絵描き、アニメーション作成~ 高校教科書『情報 II 』(東京書籍)(2024.08.22)
- Python(パイソン)入門3~乱数を利用した、じゃんけんゲーム作成など(生成AI・ChatGPT4も使用)(2023.10.06)
- Python(パイソン)入門2~高校副教材とオンライン環境Bit Arrow、さらにAI(ChatGPT4)も使用(2023.09.06)
- Python(パイソン)入門1~人気プログラミング言語を高校教科書副教材(東京書籍)とオンライン環境Bit Arrowで簡単に(2023.02.28)
コメント
一ヶ月間を置いても、さっと立ち上がれるのは凄いですね。
””元の変数がなぜかKとJになってたからaとbへと変更した””。何の問題も無いですが、我々世代の習得した言語仕様では、整数を扱う変数はi,j,k,l、m,nの6文字(6文字で足りないときはi1,j1・・)と言う決まり(習った)なので、この時代になっても無意識に整数型変数はi,jと言う風に置きます。
投稿: gauss | 2014年11月26日 (水) 01時28分
> gauss さん
こんばんは。毎度どうもです♪
さっと立ち上がるどころか、ここ半月、
ズルズルと記事を先延ばしにしてました。
今回も、前回の記事と教科書を読みながら
何とか短めに書きあげた感じです。
流れ図の2つ目、スペース、改行、二重ループの
表示は、教科書の図にも載ってませんしね。
で、整数の変数はi,j,k,l,m,nだと。
なるほど、確かにそうなってるし、
数学でもそれらをよく使いますね。
和のSや積のPとかは、また別ってことで。
早く卒業して他の言語に挑戦したいのに、亀の歩み。
まだしばらく時間がかかりそうです。。
投稿: テンメイ | 2014年11月26日 (水) 23時42分