投稿
けい kei0baisoku
【これからベーシックを覚える人たちへ】 最初に「命令が多すぎて大変だぁ!(T0T)」と叫ばれている様子を時々見かけますが、実はよく使う命令って、全部の中のごくわずかなんです。 さらに、初心者の人がとりあえず何か作れるようになるために必要な命令ですと、さらに少なくて済みます。 というわけで個人的チョイスで 「これだけ覚えたら何か作れる9命令!」 をまとめてみました。勉強しはじめの足がかりにしてみて下さい(^O^) (1)PRINT まずはこれ!文字とか数字を画面に表示できる命令です。 何も見えないことには始まりません。 (2)LOCATE 関係が深いので。PRINTする場所を好きに変えられる命令です。
21そうだね
プレイ済み
返信[1]
親投稿
けい kei0baisoku
(3)ACLS 「とりあえず画面を全部綺麗にする」命令です。プログラムの最初に一回だけ呼びましょう。この命令は、詳しい事は最初は気にしなくても大丈夫です。 とりあえず画面を綺麗にしてくれます。 (4)BUTTON 十字キーやAボタンなどの操作でプログラムを動かせるようになります。 自分の操作で画面を動かせると、凄く楽しいです! (5)INPUT キーボードで何か文字を入力して、それをプログラムで使うための命令です。 (6)変数 INPUT命令で何か入力した時など、プログラムでそれを覚えておく必要があります。そのための仕組みが変数です。文字か数字のどちらかを覚えることができます。
0そうだね
プレイ済み
返信[2]
親投稿
けい kei0baisoku
(7)IF THEN ELSE キー操作や文字の入力に応じて、プログラムの動きを変えたくなると思います。そのための命令がIFです。自分の好きな条件で、プログラムを動かすことができるようになります。 (8)GOTO とラベル 書けることが増えてくると、プログラムで同じことを繰り返したり、逆にスキップさせたりしたくなる場合が出てきます。GOTOを使うと、そういった少し複雑なことができるようになります。 (9)WAIT ゲームなどの動きを作ったときに、早すぎて分かりづらかったり見えなかったりすることがあります。 そんなときはWAIT命令を使って、わざとプログラムを少し止めてやるとうまくいきます。 演出として絶妙な間を作ることもできますよ(^O^)
0そうだね
プレイ済み
返信[3]
親投稿
けい kei0baisoku
以上です。 文字の中には絵文字みたいなのもたくさんありますので、実はこれだけでも結構高度なものも作れたりします。 プログラムはどちらかというと、一つ一つの命令を「どのように活用するか」の部分がとても大切です。これは、自分で色々試して経験して覚えていきましょう!(^O^) あと、できるなら他の人のプログラムを見て知らないやり方を真似するのが、早く上達する秘訣です(^ω-)
2そうだね
プレイ済み
返信[4]
親投稿
ゆうたん yu-tan-sama
個人的には他にFOR文とかWHILE文を入れておきたいなぁ GOTOよりも優先度は上だと思ってる GOTOはきちんと設計できないまま使うとわけわかんなくなりがちだし 次にDIM…というか配列変数 理解できるとやれることが一気に跳ね上がる概念 これさえわかれば弾幕もマップ表示も思いのまま…だと思うんだけど、なんか避けられてるよね
3そうだね
プレイ済み
返信[5]
親投稿
けいさんのは最低限的な感じなのでチョイスとしては悪くないと思います〜。 ただ確かにGOTOは両刃の剣なので、これに慣れすぎると設計としては微妙になってしまうのが欠点ですね。 ということで、ゆうたんさんの上げてる命令は次点というか、次に憶えるべき命令的なイメージですかね〜。
0そうだね
プレイ済み
返信[6]
親投稿
けい kei0baisoku
余裕があったら「レベル2の命令」も書きたかったのですが、書くとしたらまさにおっしゃる通りのあたりです。 本心を言うとGOTOとGOSUBはスルーしてはじめからDEFやWHILEとかを使う方が、長い目&大規模プログラム的には良いと思ってるのですが、ほとんどの人が「GOSUBはすぐ分かったけどDEFはいつまで経っても分からない」と言ってるのを見ると、一歩目としてはGOTOがベストなのかなーと思います(´ω`)
1そうだね
プレイ済み
返信[7]
親投稿
けい kei0baisoku
ちなみに、もしレベル2以降も続けるならばこんな感じかなーってイメージです。 ▼レベル2 GOSUB,グラフィック系、SPSET,SPOFS,SPCHR,BEEP,BGMPLAY,VAL,STR$,FORMAT$ ▼レベル3 DIM,FOR,BGPUT,BGFILL,WHILE,DATA,VSYNC,数学系,文字列系,スプライト系 ▼レベル7 DEF
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
プチコン3号には命令がたくさんあるから「これを全部覚えないとプログラムが作れない」というイメージを持っている人も居ますがよく使う命令というのは限られますよね。 古くからのBASICでも概ねそんなチョイスだと思います。(ACLSではなくCLSだったり、ボタンがなくキーでキャラ操作を行うためBUTTONではなくINKEY$だったりという違いはあるけど) 私は初代プチコンおよびmkIIで(小規模作品ばかりとはいえ)200作品くらい発表していますが、それでも使ってない命令が結構あります。(全命令のすべての使い方を把握するため自分用に作ったサンプルプログラムを除く)
1そうだね
プレイ済み
返信[9]
親投稿
TALK命令は無いのですね。ここでは、いろいろ批判されることの多いTALK命令ですが、私は、この命令を使いたいためだけに、プチコンを買ったと言っても、過言ではありません。
0そうだね
プレイ済み
返信[10]
親投稿
nobu divine-creator
レベル3の次が、いきなり7ですか?(4~6の幅が大きいですね…。それだけ難しい…ってことですか?) コータさんの購入動機が凄いですね…。私もTALK命令は好きですよ!(旨く使用すれば、フルボイス仕様にできますから♪) 批判される主な理由は、残念な感じの男性の声しか無いからで、女性の声や声の高さを変えられるようになれば、使用頻度が多くなると思われますよ!
1そうだね
プレイ済み
返信[11]
親投稿
Godot orz_127
このセットは主にコンソール画面でのプログラムの括りにみえるので、おちゃめさんのコメントにもありますが、INKEY$もあった方が良いかなと思いました。 コンソール系でまとめるなら(ですが)、BUTTON()よりINKEY$が先かなと…。 あとCLSコマンドは必要かと。 これがないとコンソール画面を消して書き直すのがめんどくさくなります。 あと個人てきにはCOLORコマンドも仲間に入れて欲しいです。 コンソール系でまとめるとACLSは、この括りにはふくまれませんが別格として必須ですね……。 あ、最初に覚えなければならないのは…。 たまには質問で上がってきますが、 「このプログラムどうやって保存したらよいですか?」 のSAVEコマンドなのかも知れませんw
0そうだね
プレイ済み
返信[12]
親投稿
GOTOは、便利ですが、たぶん汎用性が高すぎるのだと思います。日常使う言葉でも、いろんな意味を持つ言葉を使うと、変な誤解を生んだりします。仕事で定型的な様式を使うことにより、作業の効率化を図ったりすることがあります。同様に、DEF-END,WHILE-WEND,REPEAT-UNTIL,IF-ENDIFは早いうちになれた方が良いような気がします。 できれば、BREAK,CONTINUEも同様です。 (個性重視の風潮には反するかもしれませんが、言葉は通じてなんぼのものなので、ある程度枠にはめる必要があると思います。その上でにじみ出てくる、あるいは、消せないものが個性だと、私は思います。)
1そうだね
プレイ済み
返信[13]
親投稿
けい kei0baisoku
>おちゃめさん ありがとうございます(^O^) 自分なりに熟考しつつも半分勢いで投稿したものでしたが、経験のある方から見てもそんなにズレてないようで安心しました。 仕様把握のために一度全命令を使ってサンプルを作っているのはさすがです(^^;
0そうだね
プレイ済み
返信[14]
親投稿
けい kei0baisoku
>コータさん そんなにTALK命令を!(°Д°) それはTALK命令のバージョンアップが熱望されますね。 一応、投稿の主旨が「プチコンでゲーム作りたいけどプログラムの勉強で最初に覚えるとしたらどの命令か」だったので、なくても作れそうなTALK命令は残念ながら外させて頂きました………(^^;スミマセン 私はプログラムでこんなのあるのを今回初めて知ったのですが、高機能だし面白い命令ですね。声の高さや男声女声とかまで変えられたら、もっと積極的に使いそうです。
1そうだね
プレイ済み
返信[15]
親投稿
けい kei0baisoku
>nobuさん おっしゃる通り、DEFは重要な書式なのですが、初めての方たちの難航具合を見てますと他と比べてちょっとハードル高めのようです。 私はGOSUBの兄弟くらいの認識でいいと思っていたのですが、「スコープ」「引数」「返り値」と、新しい概念が3つも出てくるからというのもあるかもしれません。 TALKは期待されますねーー(´ω`) 使いどころが多いも少ないも声次第な気がします。
2そうだね
プレイ済み
返信[16]
親投稿
レベルわけ、難度ややりたいことなども考慮すると悪くないですが、難度を考えなかったら順番的にループのためのFORや配列、出来ればDEFを先に憶えてプログラムの流れを制御を先に習得して欲しくもありますね〜。命令は憶えれば使うだけなのですが概念は習得する必要がありますしね。
0そうだね
プレイ済み
返信[17]
親投稿
イカ ikasan1830
即座にXY座標を取得できるTOUCH命令は手っ取り早くスプライトを表示できて、初心者の人のキャラ動かしたい欲求を叶えられるからいいと思うのですよ。
0そうだね
プレイ済み
返信[18]
親投稿
けい kei0baisoku
>Godotさん 主旨は「プチコンでゲーム作りたいけどプログラムの勉強で最初に覚えるとしたらどの命令か」だったのでコンソールだけを想定したわけではなかったのですが、やっぱり画像系に比べて敷居が低いので多目になってます。 最初に打ち込んでみるプログラムの定番が「とりあえず三角ポリゴン描画」ではなく「とりあえずhello,world」なのと同じようなものだと思ってください(^^; INKEY$は、もし3DSでなくてBUTTON命令がなかったらメインで使われていただろうと思います。 CLSは私も最初入れようかなと迷ったのですが、実際にはほとんどの方がスペース上書きで作られてるのと、CLSを要所で呼び出せるという事はプログラムとして全体の初期化&全体の再描画の概念を理解してるということなので、一歩目よりはもう少し先なのかな?と思いました。
0そうだね
プレイ済み
返信[19]
親投稿
けい kei0baisoku
数を絞りたかったのでCOLORも外しましたが、使えるとグッと表現の幅が広がりますよね!(^O^) ぜひとも早めに知ってほしい命令です。 で、SAVE(^^; 分かりやすくプログラムの書き方に絞りたかったので触れるのを避けましたが、おっしゃる通り、一番目じゃなくて0番目に覚えるべき命令だと思います。 プチコンのセーブはプログラム経験がある人でも最初戸惑うと思いますので、気合い入れて書き始める前に必ずセーブとロードの練習はしておいた方がいいです………(´ω`)
0そうだね
プレイ済み
返信[20]
親投稿
けい kei0baisoku
>コータさん GOTOは分かりやすいし何でもできて便利ですが、プログラム覚えたての人が頼りすぎるとすぐに手に負えないソースになりそうで難しいですよね。 私はWHILEやUNTILやFORは、ラベルとジャンプ命令(とインクリメント)を内包した、用途に特化したセット命令だと捉えているので、BASICでプログラムの勉強目的ならば分解した最小単位であるGOTOを自分で体験してみるのが一歩目としてはベストなのかな………と思いました。 WIHILEをGOTOで実現してるくらいなら害はないですが、本人は良い工夫のつもりでジャンプしてトリッキーなことをし始めると変な癖がつくので、「枠」にはめたプログラムの定石的なものをまず身に付けるのはとても大切ですね(´ω`)
0そうだね
プレイ済み
返信[21]
親投稿
<(_ _)> FukanoShouki
レベル3から一気に難しくなってますね。なんだか頭が痛くなってきました。<(°д°;)>
1そうだね
プレイ済み
返信[22]
親投稿
せいら sutenukoice
GOTOってよく聞くのですが、どのようなときに使えるのか教えていただけませんか? え、今ですか?操作して人が歩くプログラム組めます。 ゼルダばかりで全く触っていないとは言えない… むふふww同じくらいに購入した初心者さんがみんなゲーム作ってて悲しいですww
1そうだね
プレイ済み
返信[23]
親投稿
nobu divine-creator
日本語で書かれているのに、難しい専門用語が使われた話になると、理解が追い付きませんね…。(自分の勉強不足です…反省…でも、そんなに短期間で熟練者に追い付けたら、スーパー初心者と呼ばれてしまうでしょう…?)
0そうだね
プレイ済み
返信[24]
親投稿
GOTOに関する考え方はけいさんに近いです。最小単位なので体験しておくのは良いと思います。ただ変な癖がつく前に定石を学んで欲しいのでFORなどのループ系は次のレベルでもいいのかなぁ?という気もしてます。 >せいらさん GOTO使ったことないんですか〜? というかGOTO飛び越して他のループ命令を使ってるのかな? それならそれでありだとも思いますよ。
0そうだね
プレイ済み
返信[25]
親投稿
けい kei0baisoku
>でんぺんさん これは小学生くらいの人をイメージして考えてたので概念の理解が必要なものはちょっと後回しにしたのですが、理解できそうならはじめからDEFとかWHILEとかを覚えて使った方がその後は楽そうですね。BASICと言うよりはC言語的な考え方になるのかな? せいらさんの質問も見て、もしかしたらGOTO自体最初は使わなくていいのでは?という気も少ししてきました。必要になるのはそこそこ複雑なことをし始めたらなので、用途に応じてそこでWHILEなりGOSUBなりを覚えて………でしょうか。
0そうだね
プレイ済み
返信[26]
親投稿
けい kei0baisoku
>イカさん おお!TOUCH命令ですか!(^O^) 取得した後プログラムで使おうとするとちょっと大変そうなのではじめは考えてませんでしたが、結果や仕様が割りと直感的で分かりやすいのでいいかも知れませんね(^O^)
0そうだね
プレイ済み
返信[27]
親投稿
けい kei0baisoku
<(_ _)>さん 人にはそれぞれペースがありますから、自分が分かるところに合わせて、楽しみながら少しずつやっていけばいいと思いますよ(^O^)
1そうだね
プレイ済み
返信[28]
親投稿
けい kei0baisoku
>せいらさん GOTOはですね、プログラムを違う行にジャンプさせる命令です。 ただ、歩くプログラムを作ってるならきっとその中で同じことをしてますね。WHILEとかも、分解するとGOTOが含まれます。でんぺんさんの言うように他のループ命令で作れるならそれに越したことはないです。
0そうだね
プレイ済み
返信[29]
親投稿
けい kei0baisoku
>nobuさん いやー、すみません(^^; ゆうたんさんから下のコメントはだいたい中級者以上向けの内容になっちゃってますので、よく分からないところは飛ばして下さい。 最低限の命令を覚えたら後は概念の理解とかなので、全部分かるようになったらもうバッチリですね(°∀°)
1そうだね
プレイ済み
返信[30]
親投稿
せいら sutenukoice
む?じゃあGOTOはなくてもいいのですか?
0そうだね
プレイ済み
返信[31]
親投稿
せいらさんへ HELPに書かれた機能は、指定したラベルにジャンプする(制御を移す)だけです。しかし、プチコンのGOTOは、とても強力な命令なんです。 プチコンのGOTOは、スマホやケータイのようなものです。機能はたくさんありますが、使い方を知らないと何の役にもたたず、使い方を間違えると事件に巻き込まれることがある、危険な機能です。 たとえば、1)GOSUBやDEF-ENDを使わずサブルーチンを作れという意地悪な人に出会ったときに使えます。2)OSの力を借りずに並列処理を記述できます。3)人にわかりにくいプログラムを書きたいときに使えます。
0そうだね
プレイ済み
返信[32]
親投稿
けい kei0baisoku
>せいらさん ふむ、「GOTOは必要か否か」と(`・ω・´) 実に深い質問ですね。 新規投稿でこの質問を投げたら瞬く間にベテランの方々から無数の反応が来て暄々諤々の議論が三日三晩くらい続きそうな予感がします(`・ω・´) ………しまった、答えられなくなった(`・ω・´;) えーとですね、 お!コータさんの例、とても分かりやすいですね!(^O^)
1そうだね
プレイ済み
返信[33]
親投稿
せいら sutenukoice
コータさん、サブルーチンってなんでしょう(´・ω・`)マズソコカラ… けいさん、深い質問なのですか? 必要がないなら使わなくても良いのでは? プログラムは哲学のようです(´・ω・`)
1そうだね
プレイ済み
返信[34]
親投稿
けいさんへ 言い忘れていたことがありました。それは、わたしが、TALK命令にこだわる単純な理由です。 音楽に詳しい人なら、「これから、練習始めるぞ~。」とか「やったね、お疲れさま~。」とかを、BGMを使って表現できると思います。しかし、わたしは、音楽の言葉で表現する方法を知らず、TALK命令でなら、かなで書くだけなので、私にも出来るだろうということです。
0そうだね
プレイ済み
返信[35]
親投稿
GOTOの議題は必要以上にややっこしくなると思うのでやらない方が良いような気も…(^^; GOTOは使わなくてもプログラムは組めますし、実際にGOTOはない言語もあります。 ただ実際GOTOのような動作がないというわけではなくて、それはより明確な定義のあるFOR, WHILE, REPEATなどのループ命令に置き換わっていたり、DEFの関数化などの手法によって必要がなくなったという感じなので、もしこの手のループ命令やDEF関数などがなかったらGOTOは必須です。(なのでアセンブラにはGOTOというかジャンプ名の命令がたくさんあります) ちなみにサブルーチンは、ルーチンという言葉が、処理の固まりのようなものを表すので、その頭にサブがついてるだけなのでメインではないサブなルーチン、つまり色んな処理をしてくれる便利なルーチンみたいな感じですね。
0そうだね
プレイ済み
返信[36]
親投稿
けい kei0baisoku
>コータさん なるほど、インターバルタイマーの要所の表現手段ですね。確かにTALK命令ならお手軽ですしストレートに伝わります(^O^) ………うん、改良が期待されますね(´ω`)
0そうだね
プレイ済み
返信[37]
親投稿
けい kei0baisoku
>でんぺんさん やりません。絶対に(^^; 分かりやすい補足もありがとうございます(^O^) >せいらさん そうですね。プログラムとは哲学なのかもしれません(`・ω・´) ………等というごまかしはおいといてサブルーチンとは、うーん、例えるならプログラム内に作る「こども」のプログラムみたいなもんですかね。仕様についてはヘルプみながら実際に打ち込んで試してみるのが一番だと思います(^O^)
0そうだね
プレイ済み
返信[38]
親投稿
おちゃめ ochame_nako
GOTOに関しては賛否両論あると思いますが、ドラえもんのヒミツ道具に例えるならば「どこでもドア」のような存在だと思います。 どこでも好きな行に行くことができるため初心者でも扱いやすい反面で必要以上に使っていると「自分がどこに居るのか分からない」(=スパゲティプログラム)の要因になってしまいますからね。 プチコン3号ではGOTOを使わずにプログラムが組めるように便利な命令が様々用意されているのでそれを使うのがベターですが、GOTOを知っておくことでそれらがなぜ便利なのかが分かるようになるためGOTOを初心者に教えるのは有用だと私は考えています。
1そうだね
プレイ済み
返信[39]
親投稿
ゆうたん yu-tan-sama
GOTOは深いのです… その昔BASICが全盛の頃はほんとにあふれかえってたのですが なにぶんどこにでも飛べる(当時はラベルではなく行番号)命令だったので、処理の流れを誰も追えない複雑な流れのプログラムを産み出す元凶になってしまったのです 結果、業界全体で封印指定を食らうような扱いに… とはいえ、使った方が見やすくなる例も少なからずあるので、そういうときだけ封印を解いていいということになってます
0そうだね
プレイ済み
返信[40]
親投稿
せいらさんへ 回答が遅くなって申し訳ありません。 ルーチンは、コンピュータに実行させる仕事のことです。そして、その仕事をさせるプログラムもルーチンと呼びます。ルーチンワーク(決まり切った日常の仕事)のルーチンと同じ意味です。それが発展して、関数や命令(手続き)になりました。 最初に実行するルーチンをメインルーチンと呼び、メインルーチンから呼ばれるルーチンをサブルーチンと呼びます。 せいらさんの推察のように、プログラムの哲学や、思想、歴史に関わる深い話です。 私の個人的な感想ですが、せいらさんの言う通り、GOTOやサブルーチンは、必要性を感じなければ、無理して使うほどのものでは無いと思います。
0そうだね
プレイ済み
返信[41]
親投稿
ななし 1227hiro
プチコン3号発売からプログラミングを初めた自分でも最初のレベル1は全部知ってて良かった… レベル2以降の一部命令を知らないな… (DATAとかの使い方を友達とかに教えてもらっているけど未だに分からない…)
2そうだね
プレイ済み
返信[42]
親投稿
pinfu ANNAININ
せいらさん! 『言語』と『論理』という意味では、共通してるかも♪ 哲学の場合、抽象概念を使わざるを得ないし、他者の存在という途方もない問題があります(笑)。 プログラムの場合でも、他人の変数を見ると、何をやっているか全く分かりませんが(笑)、一番最初の前提から、少しずつ順を追って理解する・・・ってのは、同じなのかな?(こーなると、哲学というより、コミュニケーションの問題・・・)
0そうだね
プレイ済み
返信[43]
親投稿
ASA fusuian
僕は、最初はGOTOでいいと思います。 ある程度使ってわかって来ると、FORやWHILE,DEFの説明が頭に入るんじゃないかな。 変数カウンタでIF〜GOTOなんて技を編み出したあとにFOR〜NEXTってそういうことか!と再発見するのも貴重な経験でしょう。
1そうだね
プレイ済み
返信[44]
親投稿
けい kei0baisoku
ちょっと空けてる間にGOTO論議が勃発してたらどうしようかとドキドキしながら開きましたが、そんなことなくて安心しました………(´Д`) >おちゃめさん どこでもドアの例えはとてもいいですね!(^O^) GOTO命令の本質を捉えているとも思いました。 ゆうたんさん、ASAさんもご意見や補足の説明ありがとうございます(^O^) >ひろきさん すぐに使いこなす必要は全くないですが、ヘルプとかサンプルで「この命令で何ができるの?」というのだけは知っておくといいですよ(^^) よく使われるからには必ず便利な理由があるので、知っておくと自分が必要になった状況で、必ず役に立つと思います。
1そうだね
プレイ済み
返信[45]
親投稿
せいら sutenukoice
私へのレスがたくさん!?初歩的な質問にみなさんありがとうございます…! つまり、普通は上から処理していくプログラムをGOTOを使うことで飛ばして実行できるということでよろしいですか? ということは、順番がぐちゃぐちゃでもGOTOを使えばプログラムが動かせるのですね。その分、行が多くなってしまったりしないのでしょうか?
0そうだね
プレイ済み
返信[46]
親投稿
けい kei0baisoku
>せいらさん GOTOで飛ばせるというのはその通りで合ってます。 でも「順番がぐちゃぐちゃ」になってるようなら、例え動いていてもそのプログラムは失敗と言った方がいいです。ゆうたんさんが心配している通りの状況ですね(`・ω・´) (遊びでわざとぐちゃぐちゃにしてみたとかなら別ですが) GOTOはFORやGOSUBなどの命令の一部でもあるのですが、それらがあるのは、プログラムを上から下に進めるだけじゃ出来ないことや、出来るけどすごく効率が悪い事があるからです。 具体的にどういうことかは、FORやGOSUBの命令を覚えてみるとピンとくると思います。
0そうだね
プレイ済み