一般に、プログラミングに慣れていないなら、いくつかの基本概念について、学ぶとよいでしょう:
プログラムはどうやって動くか
コンパイラとは何か
構文
プログラムの流れ
変数
基本的なデータ形式
入力/出力(I/O)
プログラミングの定義
以上が、プログラミングを学ぶ初心者にとって、最も重要なプログラミングの概念です。
これらの概念が、FreeBASIC でどう働いているかを、以下に述べます。
また、www.freebasic.net/wiki のマニュアルで、使用法を学ぶのも、重要です。プログラミング・コミュニティと言語の部分の多くには、マニュアルとして、言語の説明とデモンストレーションがあります。
ほかのものを探す前に、このマニュアルを参照すると、よいでしょう。
たぶん、あなたが欲しい情報がマニュアルにあります。もしなければ、加えることができます。
このチュートリアルは、バージョン 1.0 にもとづいています。
改訂番号には、気にしないでください。
FreeBASIC は、コンパイルするプログラミング言語です。インタープリタではありません。
これが意味することは、FreeBASIC は、あなたが "PRINT" とか "SLEEP" のようにタイプしたコードを取って、アッセンブリか機械語コードに、それを直接に翻訳するということです。
アセンブラと、機械語コードは、コンピュータが理解できる言葉です。
あなたは、おそらく、機械語コードでは、決してコーディングしないでしょう。低レベルの言語を使う必要は、ありません。(あなたは、プログラミング機械語にどれくらい親しいですか)
FreeBASIC は、高レベルのプログラミング言語です。
FreeBASIC が、機械語コードを作るので、プログラマはより少ない仕事で、もっと多くのことができます。
高レベルのプログラミングでは、あなたはプログラミングの、複雑な領域を心配する必要はありません。
低レベルの言語である C や ASM などのプログラミング言語では、プログラマは、より精密で、それほど人間的でないレベルでコンピュータを操作できる利点があります。しかし内部に関してもっと知らなければならない点が、不都合です。
あなたがどのコンパイラを選択するかは、あなたの状況に依存します。
あなたが、コンピュータのあらゆる行動を、完全にコントロールしたいなら、あなたは ASM か C でコード化するとよいでしょう。しかし、コンピュータとコンパイラは進歩しました。あなたは、プログラムの実行速度と、あなたのコードの下位のレベルの詳細について、もう心配する必要はありません。
様々な意味で、高レベルのプログラミングの全体の目的は、あなたが上記ことを心配しなくてもよいことを確実にすることです。
FreeBASIC は、あなたが、通常、あなたのために手でしなければならない多くの最適化と改良を、分担します。もしあなたが望むならば、あなたは、コントロールのより下位のレベルにアクセスすることも、できます。
しかし、この一つの問題は、(これは、ほとんどの、高レベル形式のプログラミングで共通の問題ですが)、コンパイラによって行われる、陰の措置のレベルの高さです。
高水準言語で、下位のレベルのコードによる仕事がしたいなら、あなたは、あなたのコードのある一定の局面を、明示的に支配する方法を知る必要があります。
構文とは、プログラミングで、単語とコマンドがどのように分類されるかということです。
それらの順番、どの命令はどこに許容されているか、そして、つじつまが合っているかは、あなたがどうプログラムを構造化するかに関して、規則を定めるでしょう。
例えば、プログラミングで、あなたは、コマンドを呼んで、そのコマンドがする何かを与える、というタスクに出くわすでしょう。
構文ルールは、あなたが、このコマンドをどう呼んで、そこでは何が許容されているか、いないかを、あなたに伝えます。
構文ルールは、あなたが知的にコマンドを呼ぶのを助けます。そして、より多くの「自由な構文」(ほとんどの形式のプログラミングで本質的には不可能なこと)の環境で発生しうる誤りを防ぐのを、助けるでしょう。
一般に、FreeBASIC の構文は、下ようになります:
CommandName [Argument,]
[Another Argument]
上は、初めは紛らわしく見えるかもしれませんが、それは実際に非常に簡単です。
これが言っていることは、あなたは、コンパイラに、命令(CommandName)を与えて、次に、コマンドの後に、引数(Argument)を与える、ということです。
コンマは、お互いの引数を、切り離すものです。
例えば、コマンドは、下のようになります。
Draw Circle, 10.
Draw は、何かを描くことを意味します。そして、Circle は、それが描く形になるでしょう。そして、10 は描かれる円の半径になるでしょう。
この場合、この命令の構文ルールは、下のようになります:
Draw [Shape,]
[Size]
FreeBASIC は、
大文字と小文字を区別しないことに注意して下さい。
命令 'DRaW' を呼ぶことは、命令 'draw' 呼ぶことと、同じです。
FreeBASIC のコードは、コードの始めから最後まで、一行ずつ読まれます。
コンパイラがコードの行を読むとき、あるいは、コンピュータがコンパイルしたその行のコードを読むとき、その行の命令が実行されます。(コードが走って、コードが実行されます。あなたのコンピュータは、コードが伝えることを行います。)
コードは、例えば、下のようになります。
Print "HI"
Sleep
コード PRINT は、SLEEP の上の行にあるので、PRINT は、先に実行されます。
SLEEP は、次の行なので、PRINT の実行が終わた後に、実行されます。
コメントは、FreeBASIC で作ることができて、FreeBASIC は無視します。プログラムの実行部分には、なりません。
コメントは、 ' で始めると、行の以降の部分がコメントになります。
あるいは、複数行コメントは、 /' で始めて、 '/ で終わる行までの間が、コメントになります。
下は、コメントを使う例です。
コメントの中の、コードや文字のいずれも、コンパイラに通知されていないことに、注意してください。
' ABLASHD
' Print "HI"
コメントにしたので、コードのこの行は、実行されません
Print "これはコメントではありません。
このイベントは起こります。" ' コメントでないので、画面に表示されます。
Sleep ' ユーザがキーを打つまで、プログラムをポーズします
変数とは何でしょう。
変数は、プログラミングの最も重要な部分です。最も重要な部分とは何でしょう。
プログラミングで何か役に立つことをするときはいつでも、変数に、情報を保存するでしょう。
学校で、数学をしたとき、数学で文字を使ったときのことを、思い出してみましょう。
例えば、下のようなものです。
x = 4, 1 + x = 5.
プログラムを作るとき、変数とは、ちょうどそれです。
変数とは、プログラミングにおける値を保持する、単語か文字です。
これらの値は、名前のような重要なデータを格納するかもしれません。あなたのテレビゲームのあなたの主役は、どれくらいの健康がありますか。あるいは、1画素の色と同じくらい簡単なものの場合もあるでしょう。
変数は、実際にコンピュータのメモリの小さい断片をつかむデータを保存しています。
FreeBASIC や、ほとんどのプログラミング言語で、変数は大活躍します。
FreeBASIC で変数を作るために、DIM 命令を使います。
DIM は、何の省略でしょう。
私は確信していませんが、DIM は、DIMENSION の短縮かもしれません。DIM では、プログラマは、使う変数の「サイズ」を定義します。
DIM は、プログラムで新しい変数を作ることを FreeBASIC に伝えるために、使います。
コマンドは、
DIM の部分で詳細に説明されています。ここでは、もう少し簡単に、それについて説明するつもりです。
DIM の、最も簡単な構文は、下の通りです。
DIM [VariableName] AS [DataType]
[="[Value]"]
この構文は、FreeBASIC に、以下のことを伝えます:
- 私たちは、変数を作っています。それで、コマンド DIM をタイプしました。
- 私たちは、変数に、 [VariableName] という名前をつけます。
(ここで、VariableName は、あなたが作りたい変数の名前です。
変数は、X、Y、AlexPritchard、BLahblh、Fooなどと命名できます。)
- 私たちは変数の型を指定しています。それで、VariableName の後に AS をタイプしました。
- 私たちは、型 [DataType] の変数を作っています。
(データの型は、数値、文字、あるいは、多くのものをつかむ何かになります。)
- 私たちは、変数を作成した後に、EQUALS (=) を置いて、変数の値を代入することができます。
例:
Dim foo As Integer = 5
Print foo
Sleep
上のプログラムで、私たちは、変数 foo を作りました。
FOO は、INTEGER (数を保存する
データ型 ) として作成しました。fooに、5 の値を与えています。
次に、PRINT 命令を呼んでいます。PRINT 命令は、画面の上に情報を表示します。
私たちは、foo を PRINT します。これで、数値 5 が画面の上に表示されるでしょう。
そして、SLEEP します。この SLEEP は、私たちが何かキーを打つまで、プログラムを待たせます。
プログラミングを始めるとき、変数は、難しいテーマだと思います。
たくさんの異なった型の変数があります!
変数の型は、データの型です。
変数のこの型に保存されたデータの種類。あなたは、これをなぜデータ型と短くしたかと思いましたか?
手初めに、これらの変数の型を紹介します。
Integer(整数) - 小数点のない数を保持します。
一般にあなたのコンピュータのレジストリのサイズでしょう。(これは、私が調べる話題ではありません)。
Double(倍精度) - 10 進数の数を保持します。
高レベルの精度で、非常に大きい数も小さい数も保持します。
(実際の値は、あなたが変数に与えた値と、どれくらい近いか)
String(文字列) - FreeBASIC の良い特徴です。
STRING は、文字と数字を保持するデータ型です。
あなたの名前のような情報、料理の説明など、画面に表示するクールな情報、を格納するために造られます。
覚えてください。そして、適切な DIM 構文に従ってください。
DIM variablename as INTEGER
は、variablename と呼ばれる INTEGER を作ります。あなたはプログラムで、variablename を使用できます。
あなたは、INTEGER の部分を DOUBLE、または STRING に替えることができます。
注意してください!
データ型は、いつもお互いと互換性があるというわけではありません!
あなたは、数値の 5 を、STRING に与えることができません!
しかし、文字 "5" を STRING に与えることは、できます。(引用符は、FB で、文字列の文字を指定します。)
"5" は数字ではなく、文字列なので、integer か double の「5」と等しくはなりません。
ここに、本当にクールな例があります。
(これは、あなたがあなたの名前を保持するのにどう変数を使用できるかを示します)。
'' 変数 MyName を作成します。
この変数の値に、'アレックス' を代入します。
Dim As String MyName = "アレックス"
'' MyName 変数を表示します
Print MyName
'' ユーザがキー入力するまで、プログラムを休止します。
Sleep
入力は、情報の受信です。
あなたが、何か入力を受取るということは、誰かか、何かが、それをあなたに与えているということです。
あなたは、その 出力 を手に入れています。
(何かを得る。何かを検索する。)
出力は、情報の発信です。
何かに出力することは、それに入力を与えることです。
(何かを与える。何かを送る。)
入力と出力は、しばしば組合わせて、I/O、または IO と、省略されます。
FreeBASIC には、入出力の多くのメソッドがあります。
初心者のためには、これらの大部分は、結局あなたを混乱させるかもしれません。メソッドは、一般に変数に関する、より多くの知識と、より複雑な形式のプログラミングを必要とするからです。
ここでは、I/O のまさしくその基礎を紹介するつもりです。
上の例の、PRINT 命令を思い出して下さい。
これが、出力です。
コンピュータ画面に、PRINT OUTPUTS。
PRINT は、非常に基本的な出力の形式です。そして、また、学ぶのは、簡単です!
あなたは、ただ、PRINT 命令を呼んで、次に、何を表示して欲しいかを、PRINT 命令に伝えます。
単語を Print して欲しいなら、二重引用符で、その単語を囲みます。
変数を表示したいなら、表示したい変数の名前を、ただ PRINT に与えるだけです。
Print
[WhatToPrint]
例:
'' 単語、HI! を画面に表示します
Print "HI!"
'' 新しい整数の変数を作成して、foo と命名します。
これに 10 の値を与えます。
Dim As Integer foo = 10
'' foo の値を表示します
Print foo
Sleep
INPUT は、それほど難しくありません。
しかし、入力を必要とするときはいつも、何かに入力を置きます。
ちょうど、出力しなさい、と命令するように、何か出力するものを、PRINT 命令に与えなければなりません。
私たちは、既に変数を知りました。
私たちは、ユーザが入力する情報を保持するのに、変数を使います。
1) 変数が、その情報を保持するのに必要です。
2) 入力を得るための命令を呼ぶ必要があります。
3) 正しく情報を保存したことを確認するために、入力を表示する必要があります。
私たちは、1 と 3 の方法を知っています。しかし、2 はどうですか ?
私たちは、2 のための新しい命令を学びます。
あなたは、その名前を推測できますか?
INPUT! そうです ^^;;
入力を得るために、私たちは INPUT 命令を使うつもりです。
入力の構文は、下の通りです:
INPUT
[VariableToInputTo]
また、下のように入力を使用できます:
INPUT [Output String To Tell User What to Input,]
[VariableToInputTo]
INPUT の最初の構文は、入力を受けて、変数にそれを登録します。
二番目の構文は、入力を求める前に、画面にあなたのメッセージを表示します。
こうすると、ユーザは何を入力したらよいかがわかるでしょう!
代わりに、INPUT の前に、ただメッセージをユーザに送る PRINT 命令を使用できます。しかし、関連するコードを1行で書けることは、しばしば便利です。
例:
'' 文字列の変数を作成します。
この変数に、文字列のユーザ名を保持します。
Dim As String MyName
'' ユーザの名前を取得します。
'' メッセージ あなたの名前を入力して下さい。は、画面に表示されます。
'' そして、ユーザは、その名前に入力する機会があります!
Input "あなたの名前を入力して下さい!", MyName
'' いま受取ったユーザの名前を表示します。
'' 入力だけでなく、いくつかのメッセージを表示できます
'' また、コンマで区分して、異なった型のコマンドを実行できます。
Print "あなたの名前は:
", MyName
'' ユーザがキーを打つまで、プログラムを休止します
Sleep
上は、INPUT と OUTPUT の両方のデモをします!
I/O 両方は、プログラミング、少なくとも図形処理プログラミングで不可欠です。
出力は、入力だけでなく、多くの異なるものでありえます。
入力は、ユーザのキーボードからとは限らず、ロボット・アームのセンサから受取るかもしれません。
出力は、モニターとは限らず、動力ドリルかもしれません。
I/O は、本当に、ハードウェアと、プログラムの目的によります。
その時、多くの場合、あなたは、入力がどこから来るか、入力がどこに行くか、標準入出力関数がどう対処するかについて、心配する必要はありません。
I/Oの、より高度なメソッドで、どこから来るか(何を入力するか)、そして、どこに行くか(出力する先)、を決めることができます。
引数:
パラメタを見てください。
ASM:
人間が読むことができる、最も低水準のレベルのコード。
これは、機械語コードに、直接コンパイルできます。
コンパイル:
1つの言語から別のものへ、テキストを変換するプロセス。
例:
FreeBASIC の BASIC は、ASM にコンパイルされます。
その ASM は、機械語コードにコンパイルされます。
機械語コード:
0 と 1 だけの文字列。
これは、あなたのコンピュータが直接理解できる、唯一のコードです。
パラメタ:
プログラミングで呼ぶ、命令に渡すデータ。
渡されるパラメタは、命令に、何かをどうするのか、あるいは何をするのかを、指示します。
'Rectangle(長方形)'というパラメタを、'Draw' 命令に渡すと、画面に長方形が描かれることを見ると、パラメタを理解できるでしょう。
Pixel(画素):
モニターの 1 'ドット(点)'。
モニターは、異なった色で光る、何千もの小さい点(ドット)で、構成されます。色は、モニターが受け取る、画素変数の値に、依存します。
信じようと信じまいと、あなたのハードウェアさえ、多くの方法で、変数を使っています。
構文:
単語の分類と構成です。
プログラミングでの構文は、どんなコードをどこに置くことができるかについての、規則のセットです。
構文は、論理にそったコードだけが許容されていることを確実にします。
例えば
Print "Hi".
では、PRINT は、命令です。「Hi」はコマンドが PRINT する対象です。理解できますか?
変数:
プログラミングで、データを保持する単語。
この単語に、値を代入します。そして、この値を使って、プログラムは動きます。