初のプログラム作成

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者

初のプログラム作成

#1 投稿記事 by »

僕は、いままでプログラムをつくったことがなくて。
学校でinput A とかそういうものを打って、数当てゲーム作成とかを
習ってプログラム作成っておもしろいっておもいました、
でもまずなにからはじめていいかわかりません。友達は
ActiveBasicをつかうべきだっていっていたけど、皆様はどうおもおいますか
よかったらレスください。
Sinryow
記事: 141
登録日時: 2005年5月31日(火) 09:34
お住まい: 北海道
連絡する:

Re: 初のプログラム作成

#2 投稿記事 by Sinryow »

まず,どんなプログラムが作りたいかを考えてみることですね。
あるいは,「こんなプログラムがあったらいいな」というのでもよいです。
そして,実際にどんなものにするかを考えてみます。
そうすれば,あとはひたすらプログラムを書いたり,必要なことを調べたりするだけです。

ActiveBasicはBASIC言語ではあまり多くないコンパイラ型ですので,かなり実用的なソフトも作ろうと思えば可能です。
ただBASIC言語の開発環境としてはやや特殊なので,気をつけて使っていってほしいと思います。
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================
tak
記事: 162
登録日時: 2005年5月31日(火) 07:49

Re: 初のプログラム作成

#3 投稿記事 by tak »

なつかしいなぁ。僕は技術家庭科の教科書に載っている簡単なプログラムを打ち込んで、ちゃんと動くのをみては楽しんだものです。
そのプログラムとは、ズバリ「数当てゲーム」。それ以来、こっちの世界にのめり込んできたわけです。

で、その頃は「どんなプログラムを作りたいか」という発想の捻出はまだ難しく、ただ基礎的なことを身につけていった記憶があります。
まずは教科書に載っている程度の簡単なプログラムを打ち込んで、実際に動くことを楽しんでみるといいですよ。
それにより、ある程度 If や For、 GoTo などが理解でき、プログラムの「流れ」を制御できるレベルに達したら、今度はそれらの知識を組み合わせてオリジナルのプログラムを作成してみることです。
ちなみに僕の場合「10進数を2進数に変換するプログラム」が初めてのオリジナルプログラムです。ちゃんと動いたときの感動は、そりゃもう忘れ難いものです。
今、そのプログラムを探し出して読んでいるところです。高々20行程度のごく小さなプログラムですが、当時はこれを考えるだけで精一杯でした。
そのうえ、今流し読みしているとバグを発見。修正せねばっ

何か一つでもオリジナルのプログラムを作成できる程にまで成長できればしめたもの。あとは自然と「どんなプログラムを作りたいか」という発想がどんどんと湧いてきますよ。
そのための環境を整備しないといけないのですが、これが一苦労。
今時、技術家庭科の教科書に載っているようなBASIC言語を処理できる環境は、まずありません。それほど古い技術なのです。
しかし、ActiveBasicは現代の最新技術をサポートする一方で、このような「古い」BASIC言語もちゃんと処理できるのです。
それは N88-BASIC モードと呼ばれるモードで、このモードでは教科書に載っているような「古い」プログラムでも動かすことが出来るので、学習向けにはもってこいです。
自信を持ってActiveBasicをお勧めします。
mako20
記事: 26
登録日時: 2005年5月31日(火) 01:10
お住まい: 岡山県
連絡する:

Re: 初のプログラム作成

#4 投稿記事 by mako20 »

僕は、こちら側の言語ではなくC言語から覚えてきました。
当初使っていた開発環境はLSI-C88です<(今では別物でわかりづらい^^;)
その後は、VisualC++というMicrosoft社の有名な開発環境です
最初のうちは僕も覚えていきました。
最初のC言語のプログラムはサンプルで

コード: 全て選択

#include <stdio.h>

int main(void){
  printf("hello world\n");
  return 0;
}
の短いコードで、コンソールからの実行プログラムから、やはりtakさんと同じように、if、for、他にwhile、switch(ActiveBasic(以降、AB)ではSelect)などから、基本を学んで5年(もう少しで6年)やっています(C言語を)、ABはC言語の予約語、定数、関数を頼りにやっています。
2年の中間あたりではWIN32APIを覚えて、3年末ごろにはDirectXを覚えていって

今の僕があります

で、結果としてABでもいいですが、幅広くやりたい場合はC言語も覚えといたほうがいいと思いますが
やるとすれば、交互にバランスよく覚えていけば、知識もかなりつきます
(バランス悪ければ、挫折する可能性が大きいです)
┗僕も、4年目ぐらいでスランプして半年ぐらい挫折してましたので、挫折がつき物ですが、がんばってください!!
たけぽい

#5 投稿記事 by たけぽい »

私も同じようなものですねぇ。

私はVisualBasic一筋でした。始めたのは中学2年のときでした。まわりに教えてくれる人などいるはずもなく
家もネットにつながっていなくて、本も高くて買えなかったので、
完全独学でおぼえていきました。当時はほんと何をしていいのかわからず、とりあえずテキトーに作ってました。
プログラムとはいえないシロモノばかりで、ボタンおして線が書かれるだけのものとか。

それでも思った通りに動くということはとても嬉しいことで、それを活力にしていろんなことを試しました。
そのうちに新しい発見とかもあり、覚えたことを組み合わせたりしてやっとプログラムらしいプログラムを作ることができたのです。

それから、「じゃぁいまの自分の技術で、何か作れないか?」と考え出すようになったのです。


最初は何をするべきか と思う前に、とりあえずテキトーにやってしまえーです(私の場合w)
テキトーに作ることでとんでもない事態になることもあります。自分もメモリ操作がテキトーすぎてOSが落ちたこともありました。
でもそういう経験を重ねて、どういうプログラムをすればいいのかを覚えていくんだと思います。
本を読むのもいいのですが、ただ本の内容を覚えるだけではプログラムを完全に理解することはできないと思います。
要は「習うより慣れろ」ですね。その上でわからないことがあれば、こういうとこに質問するのです。

みなさんのレスを見ても、同じような道を辿っているようですねw

使用言語については、やりたいことによって変わってきますが・・・。
ActiveBasicは今現在ではコンパイラの精度が低いため、DirectXを使わない場合、
画面の動きが速いゲーム等にはあまり向かないかもしれません。
ですが今後コンパイラ精度がよくなることも考えられますし、
BASIC(おそらくポケコンでしょう)からきたのならActiveBasicはプログラムの学習に非常に有効だと思います。

長文失礼しましたm(_ _)m
mako20
記事: 26
登録日時: 2005年5月31日(火) 01:10
お住まい: 岡山県
連絡する:

#6 投稿記事 by mako20 »

> 私も同じようなものですねぇ。
>
> 私はVisualBasic一筋でした。始めたのは中学2年のときでした。まわりに教えてくれる人などいるはずもなく
> 家もネットにつながっていなくて、本も高くて買えなかったので、
> 完全独学でおぼえていきました。当時はほんと何をしていいのかわからず、とりあえずテキトーに作ってました。
> プログラムとはいえないシロモノばかりで、ボタンおして線が書かれるだけのものとか。
>
> それでも思った通りに動くということはとても嬉しいことで、それを活力にしていろんなことを試しました。
> そのうちに新しい発見とかもあり、覚えたことを組み合わせたりしてやっとプログラムらしいプログラムを作ることができたのです。
>
> それから、「じゃぁいまの自分の技術で、何か作れないか?」と考え出すようになったのです。

たけぽいさん、僕も実は完全に独学で覚えてきてそれで、今は自分の技術がどれぐらいなのかを
見るために、僕のサイトにある、PlayerEleanoreという
DirectMusicを利用して音楽を再生するプログラムを作っています
(拡張機能よりかメイン?の音源を最適化をする機能もあります)。

> 最初は何をするべきか と思う前に、とりあえずテキトーにやってしまえーです(私の場合w)
> テキトーに作ることでとんでもない事態になることもあります。自分もメモリ操作がテキトーすぎてOSが落ちたこともありました。
> でもそういう経験を重ねて、どういうプログラムをすればいいのかを覚えていくんだと思います。

僕もあります。メモリ操作を誤ってしまってプログラムが亀になったり、プログラム生成時に訳わからない演算式を書いて、そのプログラムを自分で修復するのに挫折しそうになったりなど、経験があります

> 要は「習うより慣れろ」ですね。その上でわからないことがあれば、こういうとこに質問するのです。
> 本を読むのもいいのですが、ただ本の内容を覚えるだけではプログラムを完全に理解することはできないと思います。

これは、経験者であれば誰でも答えるほどですが。
まぁ、そうでないと習ったとしても時間が経てばすぐ忘れますから、覚えるとすれば
慣れる事しかありません
まけイヌ
記事: 27
登録日時: 2005年7月03日(日) 10:37
お住まい: 愛知県岡崎市
連絡する:

初プログラム

#7 投稿記事 by まけイヌ »

私の場合、ActiveBasicの"初"の頃は既に仕事でCやらPerlやらをやっていたので、
たぶんASCII変換ツールが最初かと。
※入力文字をASCIIコードに変換するだけ

最初に覚えたプログラムはN88-BASICでしたが、
このときの最初のオリジナルプログラムは"潜水艦ゲーム"でした。
まだLine命令とかも知らなかったので、
覚えたての配列を駆使して内部で一生懸命計算していたのを覚えています。

高校の時の話なので、かれこれ1●年前の話かぁ..(自爆)

ちなみにC言語の最初のプログラムは、仕事で使うデータの検査プログラムでした。
ようやく"Hello, World!"が出来た程度の人間に既存ライブラリを使い、
構造体に格納したデータのポインタのポインタを操作する事を要求されました。
仕事なので、もちろん期限付きです。
※何て無謀な会社なんだか..
※お陰でキャストまでをたったの3週間で一気に習得できましたが..

その頃からソースコード様に(無事動くよう)拝み倒すような
変なコーディングスタイルが身に付いたのかなぁ..
是非とも真似せず、じっくりと勉強してくださいね。
# まけイヌ (losedog2)
# Home : http://www50.tok2.com/home/losedog2/
# Mail : losedog2@yahoo.co.jp
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

いやー、確かに懐かしい。

#8 投稿記事 by konisi »

僕も独学でBASIC言語(古い本があったので読み漁りましたがおそらくN88系かと。)を覚えました。
確か一番最初に作ったオリジナルプログラムの内容は「キーボードを叩いた回数をカウントして、指定回数以上になったらプログラムを終了させる」だったかなぁ。何百行(実際には30行ほど。)と書いたのを今でも覚えてます。
因みにそのプログラムはまだ動かしていません。要するに小さなノートにチマチマと書いておいてほうったらかしっていう話になるんですが、色々知識が身に付いた後で見直したけどバグもエラーになりそうなところも特にありませんでしたねぇ。
あのノート、どこに行ったかなぁ・・・。

それでパソコンで実際に作り始めたのは中2の春からかなぁ。最初に動かしたプログラムの内容は忘れましたが、自分が作ったプログラムで現存する中で最古のプログラムのコードはまだあるので載せます。

N88系BASIC用(元code)

コード: 全て選択


40  '初期設定
50  CLS 3
60  COLOR 0,7,0,7,1
70  CLS 3
80  ON ERROR GOTO *ERROR1
90  LOCATE 0,0
100  PRINT "このプログラムはフリーです。"
103  FOR I=1 TO 2000  '表示時間 約1秒
106  NEXT I
109  CLS 3
110  PRINT "どのゲームで遊びますか?"
120  PRINT "ルーレット=1,数当て=2,"
140  INPUT "どれ";N
150  if N=1 then goto 240
160  if N=2 then goto 520
170  if N=3 then goto 240 else goto 140
190  *END SUB
191  CLS 3
200  END
210  *ERROR1  
220  LINE (0,0)-(530,300),7,BF
223  COLOR 2
225  PRINT "エラーが起きました。"
230  goto 100
240  CLS 3'ルーレット メイン プログラム
241  gosub 411
242  C=D
264  gosub 390
265  LOCATE 0,2
267  PRINT "ルーレットを開始します。"
269  LOCATE 0,3
270  INPUT "倍率を入れてください。";B
275  if B<=1 then goto 370
276  LOCATE 0,4
277  PRINT "現在"
278  gosub 470
279  LOCATE 0,5
280  INPUT "掛け金を入れてください。";K
285  if K<=0 then goto 279
286  if K>C then goto 279
290  A=FIX(RND*B)+1
294  LOCATE 0,7
295  INPUT "数を予想してください。";X
296  if X>B then goto 297 else goto 300
297  PRINT "倍率以下で1以上の数にして下さい。"
298  goto 295
300  if A=X then goto 450
301  if A<>X then goto 460
303  if C=0 then goto 360
350  goto 264
360  PRINT "ゲームオーバー...読み込み中..."
361  FOR I=1 TO 6000 '表示時間 約3秒
362  NEXT I
363  goto 50
369  'ルーレット サブ プログラム
370  CLS 3
380  goto 265
390  COLOR 1,6,1,6,1
400  CLS 3
410  RETURN
411  D=1000  '最初の所持金
449  RETURN
450  C=C-K+(B*K)
455  goto 303
460  C=C-K
465  goto 303
470  LOCATE 4,4
480  PRINT ;C
490  LOCATE 11,4
500  PRINT "コイン有ります"
510  RETURN
520  CLS 3  '数当て メインプログラム
530  CONSOLE 0,25,0,1
540  CLS 3
555  gosub 660
550  PRINT "数当てを開始します。"
560  INPUT "1からどのくらいまでの数にしますか";B
565  goto 750
570  PRINT "コンピュータが作った数を当ててください。"
580  PRINT "間違ってれば、もっと多いかもっと少ないかをいいます。"
590  C=INT(RND*B)+1
600  N=1
610  INPUT "数は何でしょうか";K
615  if K<1 then goto 770
620  if C=K then goto 690
630  goto 800
650  '数当て サブ プログラム
660  COLOR 2,5,2,5,1
670  CLS 3
680  RETURN
690  PRINT " - - "
700  PRINT " @ @ "
710  PRINT "  O  "
730  if N<5 then PRINT "大当たり~" else PRINT "当たり"
731  PRINT "スコア";N;"手"
735  INPUT "まだやりますか?(Y/N)";X$
736  if X$="Y" then goto 520
737  if X$="N" then goto 900
738  if X$="y" then goto 520
739  if X$="n" then goto 900
741  goto 735
750  if INT(B)=B then 570 else goto 760
760  if B=1 then goto 780
770  PRINT "正の整数を入れてください。"
777  goto 560
780  PRINT "正の整数で、1以外の数値を入れてください。"
790  goto 560
800  PRINT "   / \"
810  PRINT "    @ @ "
820  PRINT "        "
830  PRINT "     ^  "
840  if C<K then goto 850 else 880
850  PRINT "もっと少ない"
860  N=N+1
870  goto 610
880  PRINT "もっと多い"
888  N=N+1
890  goto 610
900  PRINT "...読み込み中..."
910  FOR I=1 TO 6000
920  NEXT I
930  goto 50
940  '
ちょっとコードを変更してActiveBasicに対応させたコード↓

コード: 全て選択


#N88BASIC
Dim I,N,A,B,C,D,X$ As String,X,K
40  '初期設定
50  Cls 3
60  Color 0,7
70  Cls 3
Paint (0,0),7,7
90  Locate 0,0
100  Print "このプログラムはフリーです。"
103  Sleep(1000)
109  Cls 3
Paint (0,0),7,7
110  Print "どのゲームで遊びますか?"
120  Print "ルーレット=1,数当て=2,"
140  Input "どれ";N
150  if N=1 then goto 240
160  if N=2 then goto 520
170  if N=3 then goto 240 else goto 140
190  '*END SUB
191  Cls 3
Paint (0,0),7,7
200  END
240  Cls 3'ルーレット メイン プログラム
241  gosub 411
242  C=D
264  gosub 390
265  Locate 0,2
267  Print "ルーレットを開始します。"
269  Locate 0,3
270  Input "倍率を入れてください。";B
275  if B<=1 then goto 370
276  Locate 0,4
277  Print "現在"
278  gosub 470
279  Locate 0,5
280  Input "掛け金を入れてください。";K
285  if K<=0 then goto 279
286  if K>C then goto 279
290  A=Fix(Rnd()*B)+1
294  Locate 0,7
295  Input "数を予想してください。";X
296  if X>B then goto 297 else goto 300
297  Print "倍率以下で1以上の数にして下さい。"
298  goto 295
300  if A=X then goto 450
301  if A<>X then goto 460
303  if C=0 then goto 360
350  goto 264
360  Print "ゲームオーバー...読み込み中..."
361  Sleep(3000) '表示時間 約3秒
363  goto 50
369  'ルーレット サブ プログラム
370  Cls 3
380  goto 265
390  Color 1,6
400  Cls 3
Paint (0,0),6,6
410  return
411  D=1000  '最初の所持金
449  return
450  C=C-K+(B*K)
455  goto 303
460  C=C-K
465  goto 303
470  Locate 4,4
480  Print ;C
490  Locate 11,4
500  Print "コイン有ります"
510  return
520  Cls 3  '数当て メインプログラム
555  gosub 660
550  Print "数当てを開始します。"
560  Input "1からどのくらいまでの数にしますか";B
565  goto 750
570  Print "コンピュータが作った数を当ててください。"
580  Print "間違ってれば、もっと多いかもっと少ないかをいいます。"
590  C=Int(Rnd()*B)+1
600  N=1
610  Input "数は何でしょうか";K
615  if K<1 then goto 770
620  if C=K then goto 690
630  goto 800
650  '数当て サブ プログラム
660  Color 2,5
670  Cls 3
Paint (0,0),5,5
680  return
690  Print " - - "
700  Print " @ @ "
710  Print "  O  "
730  if N<5 then Print "大当たり~" else Print "当たり"
731  Print "スコア";N;"手"
735  Input "まだやりますか?(Y/N)";X$
736  if X$="Y" then goto 520
737  if X$="N" then goto 900
738  if X$="y" then goto 520
739  if X$="n" then goto 900
741  goto 735
750  if Int(B)=B then 570 else goto 760
760  if B=1 then goto 780
770  Print "正の整数を入れてください。"
777  goto 560
780  Print "正の整数で、1以外の数値を入れてください。"
790  goto 560
800  Print "   / \"
810  Print "    @ @ "
820  Print "        "
830  Print "     ^  "
840  if C<K then goto 850 else goto 880
850  Print "もっと少ない"
860  N=N+1
870  goto 610
880  Print "もっと多い"
888  N=N+1
890  goto 610
900  Print "...読み込み中..."
910  Sleep(3000)
930  goto 50
しかし懐かしいですね、苦悩しながら一行一行丁寧にコードを打っていってたあの時代が。
でもビギナーがいきなりメモリ操作してOS落とすのはどうかと。>>たけぽい
あ、滅茶苦茶長い長文失礼。
omasu
記事: 96
登録日時: 2005年9月02日(金) 22:15
連絡する:

お世話になります。

#9 投稿記事 by omasu »

お世話になります。

 「期待をしております。!!」

 Const 過去ログ1=ベーシックを使い始めたのは昭和の時代です。
 Const 過去ログ2= ポケットコンピュータ(シャープPC1500)
 Const 過去ログ3= 当時、ソートにチャレンジ(今のバケツソート開発)

 While 楽しい
    if
      ※面白ければ、それでよいともいえます。m(_ _)m
    else
      ※疑問、追求、持久力、が大前提だと思います。
    endif
      (そこから始まってください)(~o~)
    if
      疑問点、自己解決
    else
      コミュニティー フォーラム
    endif
    楽しい=楽しい*2
 Wend

追伸:楽しい世界と感じます!
BingoMan
記事: 36
登録日時: 2005年7月17日(日) 09:36
お住まい: 千葉県松戸市

初のプログラム

#10 投稿記事 by BingoMan »

僕の場合、中二の夏に初めてパソコンを買い、秋にインターネットに接続しました。
そこでいろいろ調べていくうちに、このActiveBasicに出会いました。
最初のうちはここの講座の通りに進めていきましたが、中3のはじめから自分でプログラムを作るようになりました。

それから約1年半...

中3の今頃とあまり変わってないというのが実情です...
yu0627
記事: 154
登録日時: 2005年5月31日(火) 14:53

返信@yu0627

#11 投稿記事 by yu0627 »

また一人、ABユーザーが増えましたね^^
僕は最初N88BASICでプログラミング→失敗

今年の正月、お年玉でオフィシャルユーザーズガイドを買いました。
そしてもう10ヶ月。色々なソフトを作っています。
最初と比べてかなりプログラミングの腕は上がりました。
例えばSameFolder MusicPlayer、LightMailSender、
LightMailSender OptionalEditor、パソコン規約みせるん、MIDI Encorderなどです。

僕は皆に僕が作ったソフトを使ってほしいからActiveBasicをやっております。
返信する