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

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



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



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



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



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



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



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



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



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


参考書でおぼえた画像認識AIを使ったプログラム。ラズパイにカメラをつけてマゴたっちに画像を見せて学習&判断。成績がいいと優等生に。あんまりさぼると….
ちょーおすすめ。
AIプログラムってこんなんなんだってわかる本です。
プログラミングのながれをつかむのだ!
サンプルプログラム確認!



サンプルプログラムでX-Basicのプログラムのながれを見てみようにゃ!
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 だっぴ。あとで綺麗になおすのめんどくなる場合もあります。でも…、



・
・
・
- X68000Z UARTでなにができるの?
- X68000Zを動かしてみよう! X-Basic準備
- どのラズパイを選べばいいかな?
- ラズパイUART設定とケーブル接続
- ラズパイとのUART接続確認テスト
- MIDI再生専用FDを作成(mt32pi)
- MIDI再生専用FDを作成(ttymidi)
- mt32-piでラズパイをMIDI音源にする
- MIDIハード音源を試す
- DACとちびモニターを用意する
- X68uartRasModuleの製作 準備編
- X68uartRasModuleの製作 組立編
- アップデートとHDDの設定
- SX-Window HDDにインスト
- SX-Window MIDI演奏設定
- SX-Window MIDIハード音源設定
- プログラミング編 X-Basicになれてみる
- プログラミング編 Pythonに少し慣れてみる
- プログラミング編 UARTでX68kZからラズパイを操作!
- シェルスクリプトSW分岐とLチカ
- ちびモニタとLEDを制御する!
- ttymidiのUSBの関連付け自動
- Python実行形式にするPyInstaller
- Winkipedia/2chSC閲覧 X68k RasNet
- X68000Zの基本操作などのまとめ
- 番外編はTOPから!