プログラミング編 X-Basicから少し慣れてみる。

プログラミングについて

ブログの主のねこぽんは独学のみで趣味のプログラミングをしています。まちがった知識や用語、偏った部分も多分にあると思います。このブログでプログラミングに興味をもち、プログラミングの流れだけをつかんだら他のプログラミングの本や本格的なブログへステップアップしていってもらえたら、とおもいます。

Contents

気軽にいこうプログラミング

googleさんと参考書でそのつど調べればなんとかなるさ

ねこっぴ

プログラミングのお話にゃ!

ぴぽこ

まずはX68000のX-Basicからですね!

ねこっぴ

X-Basicからあそんでみるけど、PythonやC#でも、プログラムのスタート地点とどの順番で実行されてるかの流れだけつかんだら、googleさんと参考書があればなんとなくだったらできちゃうにゃ。

ぴぽこ

ええっプログラムって難しそうだけどそんなかんじなの??

ねこっぴ

プログラミングでよく使う分岐させるIFループさせるwhile文とFORというのがあるんにゃけど、今構文かいてみれ!といわれても多分かけません。言語ごとに微妙にちがっておぼえらんないしにゃ。

ぴぽこ

そっか、構文をそのつどしらべればいいのね。きっちり覚えようと身構えるとプログラム動かす前に挫折しそうだもんね。

ねこっぴ

あくまでも趣味の範囲だったらそんなんでいいと思うにゃ。
ただ、はじめて使った構文は必ずそのプログラムをバックアップしてどう使ったかあとで見れるように….ていうかコピペ用に残す
だけしとこにゃ。

ぴぽこ

コピペばっかしてるから覚えられないのでは…..
おっけー! じゃはじめよー!

けっこうテキトーでもうごくもんです
ねこっぴ

Pythonプログラムは「マゴたっち」作るので勉強しましたにゃ。
今でもPythonよくわかってないけどこのプログラムはかなり間違って構文つかってたみたい。でもちゃんと動いてたにゃ

参考書でおぼえた画像認識AIを使ったプログラム。ラズパイにカメラをつけてマゴたっちに画像を見せて学習&判断。成績がいいと優等生に。あんまりさぼると….

ちょーおすすめ。

AIプログラムってこんなんなんだってわかる本です。

プログラミングのながれをつかむのだ!

サンプルプログラム確認!

ねこっぴ

サンプルプログラムでX-Basicのプログラムのながれを見てみようにゃ!

サンプルプログラム入 FD

BasicN01.XDF の中に BasicN01.bas が入ってます。BasicN01.bas Basic2フォルダに移動

Basic.Xを起動して Load”BasicN01.bas でLOAD!

 Load"BasicN01.bas

注釈はX-BASIC リファレンスより

   10 cls /*テキスト画面のみを消去します。
   20 screen 1,2,1,1 /*画面全体(テキスト画面、グラフィック画面、スプライト画面)のスクリーンモードを設定
   30 int x=30,y=15 /*変数を整数(int)型として宣言します。
   40 str a /*変数を文字(str)型として宣言します。同時に文字列を代入する事もできます。
   50 pri() /*「描画のサブルーチン」に飛ぶ
   60 /*-------------------------  /*プログラム中に注釈を入れます。
   70 while not(a = "e") /*式の値が偽になるまで、指定されたループの内容を繰り返し(ループ)ます。
   80  a = inkey$(0) /*キーボードから入力された1文字を返します。代入することはできません。
   90  if a = "4" then kesi():x=x-1:pri() /*条件で条件判断を行い、その結果に応じて文を実行します。
  100  if a = "6" then kesi():x=x+1:pri()
  110  if a = "5" then kesi():y=y+1:pri()
  120  if a = "8" then kesi():y=y-1:pri()
  130 endwhile:end /* end → (whileのループを抜けたあと)プログラムを終了します。
  140 /*-------------------------
  150 func kesi() /* func → 関数を定義します。 /*キャラ「A」消去のサブルーチン
  160  locate x,y:print" " カーソルをテキスト画面のX座標Y座標で指定されたキャラクタ座標位置へ移動します。
  170 endfunc   /* ↑ print → テキスト画面に文字列や数値を表示します。
  180 /*-------------------------
  190 func pri() /*描画のサブルーチン
  200  locate x,y:print"A"
  210  locate 2,2:print x
  220  locate 5,2:print y
  230 endfunc
  240 /*-------------------------
ねこっぴ

このプログラムは、[A]をキーボードの4658で上下左右に動せる
というプログラムにゃ。
画面の左上が基準の0。横軸がX,縦軸がYとして、スタートすると
x30,y15の位置に[A]、
x2,y2に現在の[A]の横の数値、
x5,y2の位置に現在の[A]の縦の数値

が表示されるにゃ。

ぴぽこ

「RUN」して動かしてみます! なるほど。

ねこっぴ

「BREAK」キー で止めて「LIST」 で中身いまいちど確認にゃ。

趣味のプログラミングのコツ。

ぴぽこ

では説明をおねがいします!

ねこっぴ

たとえば10行目。一番さいしょにゃ。
命令覚えなくてもいいから、そのときにしたいことを言葉にするにゃよ。
10行目 からスタート 「まず最初に画面消してスッキリさせるでしょー」

ねこっぴ

X-Basic 画面 消す とか X-Basic 画面 クリア でぐぐるにゃよ。何度か紹介してる X-Basicのリファレンス のCLSがかかったにゃ。慣れてきたらそのリファレンスでどんな機能があるのかざざっと目を通しとけば、「画面消す」ような命令あったなーで リファレンスから調べられるにゃ。

ぴぽこ

その考えだと参考書は逆引き系の参考書を用意しとけば便利そうね。

ねこっぴ

逆引き系が便利なのと、あとは参考書にその命令の使用例が載ってることが大事。X-BASICに関しては紹介したサイトよりも本当は純正のリファレンスマニュアルがあるといいかにゃ。使用例も載ってるにゃ。
命令を実際つかってみる段階で使用例がないと結構よくわかんないこと多いにゃよ。とくにC#。使用例みてもわからないからいろいろなとこの2,3の使用例から推測したりもあったにゃ。

ぴぽこ

そのつど調べればいいやスタイルだと、結構いろんな言語使えるようになったりする?

ねこっぴ

言語..プラットフォーム..によってパターンというか型というか、そういうのあるから、それを把握するまでが少したいへんかにゃ。
C#windowsプログラムなんかは最初はどこからスタートしてるのかさっぱりわからないしPythonは Import や 空白位置が大事とかわかるまではこんがらがるかもにゃ。
各命令自体はどの言語もそのつどでいいと思います。

ねこっぴ

でも、言語やプラットフォームによってひとつプログラムの型を把握したらその型を自分でわかりやすいように注釈つけてテンプレとして保存しとけば、いつもそれ使っていろんなの組めるようになるにゃよ。細かいことわからないままでも趣味だったらぜんぜんそれで楽しいにゃ。

ぴぽこ

なるほど、10行目でCLSの話で止まったままだけど、先に他に気にしとくとこはあるかしら。

ねこっぴ

あとは、繰り返し呼び出せるサブルーチン。「関数」と「サブルーチン」の違いは?とかこまかい違いはスルーして、なんども同じ命令を使う場合はサブルーチン化をしてそのつど呼び出すという概念を覚えとこーにゃ。

ねこっぴ

もうひとつ、変数。テキトーに決めた名前(ほんとは決め方あるみたい)に、数値や文字列を入れておけて、中身も変化させられる。決めた変数が有効なエリアも書く場所で決められる。最初に書いとけばプログラム全部に効くとかサブルーチン内だけ効くとか。

サンプルプログラムのながれ

ねこっぴ

と、いうことで流れにゃ。

このプログラムのながれ

10-40行目

まえおき。画面設定や変数の定義や初期値。

50行目

「pri」というサブルーチンにとびます。このサブルーチンはキャラ[A]を描画、現在位置を文字で描画。priの最後230行目の「endfunc」から50行目のpri()の()の終わりに戻ってきます。

60行目

/*は注釈としてすっとばされます。

70-130行目

プログラムが終わるまで(eが押されるまで)ループします。

もし「4」が押されたら kesi()で [A] を消してX座標を-1してpri()で [A]を再描画

もし「6」が押されたら kesi()で [A] を消してX座標を+1してpri()で [A]を再描画

もし「5」が押されたら kesi()で [A] を消してY座標を+1してpri()で [A]を再描画

もし「8」が押されたら kesi()で [A] を消してY座標を-1してpri()で [A]を再描画

もし「e」が押されたら ループ条件一致せず130行目のendwhileより先へ行き end でプログラム終了

このプログラムの制作のながれ
  • プログラムスタート。まず最初に画面消してスッキリさせるでしょー。
  • X68000の画面設定でこのプログラムに合うものを選択しよう。(今回テキトーです)
  • キャラ[A]を動かすための整数の変数(int)と初期位置を決めておこう。
  • キー入力時に入れておく文字列の変数(str)をaにしとこう。
  • キー入力ループする前にキャラを描画しとこ。キー入力するまでキャラ出なくなっちゃうもんね。
  • さあメインループだ。ループさせる条件は aの中身が「e」以外のとき。eで終了にしよ。
  • キー入力待ちはどうやるんだっけ?<調べる>inkey$か。inkey$(0)だと押されなくてもループか。
  • 右にいく場合はキー入力「6」にしよう。ええっと、6 が押されたら…..
  • 今あるキャラ[A]消さないと画面に[A]残ったままになっちゃうから、まず[A]を消そう。
  • この行にAを消す文書くと長くなっちゃうからサブルーチンkesi()をつくったぞ。
  • Xの値を増やして再描画だ! ここも[A]と移動結果の数値を表示のサブルーチンつくって….
無心でコピペしましょう。

最初は全部理解しようとおもいがち。正直むりです。調べれば調べるほどよくわかりません。

なんでこうなるんだろ?なんでこうすると動くんだろ?と深く考えるのも重要ですが、

いさぎよく まとまった数行をそのままコピペして改変して動くならそうしよ。でいいと思います

ぴぽこ

なんかその場その場で作っていけそーだね!

ねこっぴ

フローチャートみたいなの書くのが好きな方はより一層しっかりしたプログラム作れると思うんだけど、その場でテキトーにやっていくのも楽しいから趣味の場合はひとそれぞれ楽しい方向でいこーにゃ!

うさっぴ

いきあたりばったりプログラミング。その成れの果てが RasNet だっぴ。あとで綺麗になおすのめんどくなる場合もあります。でも…、

独学番長 ネットのねこぽんさん



Contents