■ひまわりの文法の要約
・文字規則
ひまわりでは、Windows標準の文字コード、Shift-JISを使って処理をします。その際に、変換できるもの(アルファベット、数字、記号)は、全角(2バイト文字)を、半角(1バイト文字)に変換して実行をします。そのため、「A(全角)」と、「A(半角)」を区別しません。
・分かち書きをする→詳しい解説
*ひまわりは、長い文章から、単語を拾っているのではなくて、単純に、1区切れ単語を、1つの単語として、順に読んでいきます。そのため、読点(、)や空白文字( )で区切らず、一綴りに、と、書くと、エラーと表示され、実行されません。しっかりと、
「こんにちは」と言う。
または
「こんにちは」と、言う。’、で区切る
のように、単語ごとに、分かち書きをしてください。
「こんにちは」と 言う。’スペースで区切る
各単語の区切り文字は、
で、文の終わりには、
、(読点) ,(カンマ) (スペース半角か全角)
を、つけます。
。(句点) ;(セミコロン)
・送り仮名の省略が出来る
ひまわりでは、送り仮名を無視して、日本語を解釈しますから、「言う」と書いても、「言え」と、書いても、同じように実行されます。
但し、送り仮名の定義は、「漢字やカタカナの後ろに続くひらがな」というものですから、「言うな」と、書いても、「言う」と同じように実行されてしまいます。
・基本文法
命令は、
引数、命令語
からなり、
引数には、必ず明示的に、
目的語+助詞
と、助詞を、付けます。
助詞は、一部、数学関数などでは不要ですが、普通の命令では必要です。
以下の2つの書き方は、どちらも、認められます。
(1)引数、命令語。・・・一般的な日本語に近い使い方(引数に助詞が必要)
(2)命令語(引数)。・・・数学関数や、プログラム言語的な使い方(引数に助詞は不要)
例)
1.「こんにちは」と、言う。
2.言う(「こんにちは」)。
(*2番目の場合は、助詞を省略して書くことが出来ます。)
・命令語の連続
以下のように、命令を文章のように繋げて記述することができます。
例)
引数、命令語+(し)て、引数、命令語+(し)て・・・
3に、5を、足して、表示。
・接続詞「そして」
滑らかな日本語を表現するために、接続詞の『そして』があります。
これを、読むと、その時点での引数に過不足がないか、構文チェックを行う仕様になっています。
それは、『こんにちは、Aちゃん。』。
『A』を、『ミネ』に、置換、そして、表示。
・引数の順序
引数は、『(目的語+助詞)、(目的語+助詞)・・・』のように与えられます。ここで、引数は、与えた順番と、助詞によって区別されます。
そのため、以下の2つの文は、同じ意味になります。
例)
3に、5を、足して、表示。
5を、3に、足して、表示。
・引数の省略
もし、引数を省略したり、指定よりも1つ少なく書いて命令を呼び出すと、一番初めの引数に、『それ』が、渡されます。
例えば、表示は、『?を、表示』のように、使いますが、のように書くと、『「こんにちは」と、表示。』と、書いたのと全く同じ意味になります。
それは、「こんにちは。」
表示。
また、『?から、?文字、左端を切り取る。』のように、2つ以上の引数をとる命令の場合は、
の、ように、1つ目の引数に、それが渡され、「123456789」のうちの、左から3文字切り取った値の、「123」が、表示されます。
それは、「123456789」
3文字、左端を切り取る。
それを、表示。’『123』と、表示される
・文
文の区切れは、「。」、または、改行によって区切られます。
命令は、改行をはさんで、記述することは出来ません。
ただし、以下の命令(フロー制御用の特殊構文)だけは、改行して記述することが出来ます。
・?回()。
・?で、?から、?まで、繰り返す
・もし・・・
・(条件)?ならば・・・
改行をはさむ時は、行の最後に、読点「、」を置けば、命令の途中でも改行できます。
文章は、『父ちゃんは、今日も、@。』
文章の、
『@』を、
『家に居ない』に、
置換して、
表示。
そして、
文章の、
『@』を、
『パチンコに行った』に、
置換して、
表示。
・コメント
{・・・}で、括られてた(カッコの中)は、無視していいですよ、という意味になります。プログラム言語では、このような説明・注釈を、コメントって言います。コメントは、何も実行されません。
(700{円}*1.05{税率})を、表示。
・コメント2
’(表示するときは、Shift + 7)から、改行までも、コメントになります。
また、『こめ』で変換できる記号、『※』から、改行までも、コメントになります。
また、『//』から、改行までも、コメントになります。
「こんにちは」と、言う。’ただの挨拶です (Basicからの引用)
「こんにちは」と、言う。※ただの挨拶です。(日本語の一般的?な表記)
「こんにちは」と、言う。//ただの挨拶です。(C,Pascal,Java言語から引用)
・変数と演算子
数値変数の使い方 → 変数=値。
文字変数の使い方 → 変数=「値」。
変数を使うための宣言は不要。
(ちなみに、「バナナ=3。」と書くのと、「バナナは、3。」と、書くのは、まったく同じ意味になります。)
計算に使える演算子一覧:
演算子 意味 + たす − ひく × または * かける ÷ または / わる % 割り算の余り ^ べき乗 >、<、<=、>=、<>、≠、≦、≧、= 不等号 && または かつ かつ || または または または
例)((3+4)*3)を、表示。
文字列の連結には、&を使う。
今日の天気=「はれ」。それから、文字と数値を区別して、等しいか等しくないかを判別する演算子があります。
「今日の天気は、」&今日の天気&「です。」と、表示。
「今日の天気は、{今日の天気}です。」と、表示。{と書いても同じ}
演算子 意味 使い方例 実行結果 =& 文字列が等しい もし、"5" =& "5"ならば、「等しい」と、表示。
もし、"5" =& "5"ならば、「等しい」と、表示。---(半角の5と全角の5は等しくないから。)
等しい!& 文字列が等しくない もし、"5" !& "5"ならば、「等しくない」と、表示。 等しくない(半角の5と全角の5は等しくないから。) == 数値が等しい もし、"5" == "5"ならば、「等しい」と、表示。 等しい(半角の5も、全角の5も、数値として等しいから。) != 数値が等しくない もし、3 != 5 ならば、「等しくない」と、表示。 等しくない
例えば、以下のように、数値として判断するか、文字列として判断するかによって判定結果が違う場合があります。
A = 「5」 ' 半角の 5
B = 「5」' 全角の 5
もし、A == B ならば、「数値としては等しい」と、表示。
もし、A !& B ならば、「文字列としては等しくない」と、表示。
「」の文字列中で、「」を書きたいときは、¥「、¥」のように、シーケンス文字「¥」をつけなくてはなりません。
*スピーチをする
「{話し手}¥「それでは、私のスピーチです。・・・¥」」と、言う。
また、画像ファイルの名前などで、パスを指定する「c:\picture\aaa.jpg」のような場合、「c:\\picture\\aaa.jpg」のように、¥を二回重ねる必要があります。
「文字列」 と 『文字列』のまとめ
■「文字列」 形式の文字列:
{変数名}で、変数の内容を展開
プログラム りんご=3。「りんごは、{りんご}個」と、表示。 結果 りんごは、3個
¥nで、改行(CHR(13)&CHR(10)の意味)
プログラム 「あ¥nい¥nう」と、表示。 結果 あ
い
う
¥tで、タブ記号
プログラム 「以下タブで字下げします。
¥tあいうえお
¥tかきくけこ
¥tさしすせそ」と、表示。結果 以下タブで字下げします。
あいうえお
かきくけこ
さしすせそ
¥¥で、『¥』の意味。¥だけだと、¥の意味にならない。
プログラム 結果 「c:\\windows\\notepad.exe」と、表示。 c:\windows\notepad.exe 「c:\text\note.txt」と、表示。 c: ext
ote.txt「c:\\text\\note.txt」と、表示。 c:\text\note.txt
"内容"と、同じ意味
プログラム 「あいうえお」と、表示。
"あいうえお"と、表示。結果 あいうえお
あいうえお
■『文字列』 形式の文字列:
いかなる展開も行われない。`内容`と。同じ意味。
よって、`...`の、中で、`や、『』は、使えない。
・何回も繰り返す→詳しい解説
{「ワン」と10回吠えるプログラム2}
文字サイズ=16。文字色=青色。
10回(「ワン」と、表示。1秒、待つ。)。
これは、カッコの中を、10回実行しますよ!という意味になります。
・条件によって処理を分ける
・もし、Aが、B(以上|以下)ならば〜。違えば〜。→詳しい解説
・もし、(条件)ならば〜。違えば〜。→詳しい解説
例えば、晩御飯のおかずを買いに、スーパーへ行ったとして、レタスが、198円より安かったなら、レタスを買うことにして、それより高かったら、買うのはやめよう、という状況。
もし、(レタスの値段 <= 198{円})ならば、レタスを買う。
違えば、レタスを買わない。
・もし、(条件)ならば〜、違えば、もし、(条件)ならば〜、違えば、もし・・・
連続で条件文を続けることができます。
タマ=3歳
コロ=4歳
ジン=3歳
もし、タマ=コロならば(
「タマ=コロ」と、表示。
)違えば、もし、タマ=ジンならば(
「タマ=ジン」と、表示。
)違えば(
「いずれもイコールではない」と、表示。
)
●論理演算>「複雑な条件をチェック」
●「もし〜でなければ」構文と連文
もし以外の条件分岐(詳しい解説)もありますが、分かりにくい構文なので将来的なサポートは保証できません。
・ラベルへ、飛ぶ →詳しい解説
「ラベル名へ、飛ぶ」の書式で書きます。
{RPG風にありがちな選択サンプルプログラム}
*ラベル{という名のラベル}
「聖なる泉へたどり着いた。泉の水を飲みますか?」と、二択。
それ?ならば、「気持ちが楽になった。」と、言う。
違えば、「怖いから止めておこう」と、言う。
「ゲームをおわりますか?」と、二択。
それ?ならば、おわり。
違えば、ラベルへ、飛ぶ。
*注意ですが、「飛ぶ」命令のラベル名に、*をつけないでください。
・ラベルを、呼ぶ →詳しい解説
「ラベル名を、呼ぶ」で、ラベルへ制御を移し、「戻る」という命令に出会えば、元の場所へ戻ってきます。
{ラベルを呼ぶ簡単なサンプル}
*はじめラベル
挨拶表示ラベルを、呼ぶ。
祝辞表示ラベルを、呼ぶ。
おわり。
*挨拶表示ラベル
「こんにちは。」と、言う。
戻る。
*祝辞表示ラベル
「本日は、実に目出度い!」と、言う。
戻る。
また、「ラベル名」と、だけ、記述しても、ラベルを呼ぶのと、同じ意味になります。
・計算式の中で、ラベルを呼ぶ →詳しい解説
{例:計算式の中で、ラベル呼び出し}
結婚式の参加者数=新郎の客+新婦の客。{ラベルを呼び出し}
結婚式の参加者数を、言う。
終わり。
*新郎の客
それ=20{人}
戻る。
*新婦の客
それ=18{人}
戻る。
・戻り値のあるラベル
ラベルを、関数的に使う方法が、あります。呼ばれた先で、それに答えを入れると、それが、戻り値になります。
{計算式の中で、ラベルを呼ぶ}
参加人数= 男子の人数 + 女子の人数。
参加人数を、表示。
待機。
*男子の人数
それ=30
戻る。
*女子の人数
それ=10
戻る。
・関数→関数の使い方
ラベルの後ろに、(引数)を書くことにより、関数として利用できる。関数内では、『ローカル変数』命令を使うことで、ローカル変数を使える。
1976年生まれの、年齢算出。
表示。
*年齢算出(?年生まれの)
今年は、MID(今日,1,4)
引数取得。
それは、今年 - それ。
戻る。
関数の引数を取得するには、『(変数?)に、引数取得』命令で、引数を取得できる。
・オブジェクト利用の手順
・特殊部品「母艦」
ひまわりのキャンバスを、母艦という名前として、定義してあります。
母艦の、タイトルは、「ひまわりエディタ」。
のように、使います。
もちろん、幅、高さ、X、Yを設定すれば、フォームの大きさが変えられます。
・配列変数 →詳しい解説
ひまわりにおける、普通の変数は、全て文字列で出来ており、計算が求められる場合には、数値として取り扱われる仕様になっています。そして、配列変数は、変数の値を、改行記号で区切ったものであり、例えば、変数名#3と、書けば、4行目(0行から始まるため)が、値として得られる。
そのため、配列変数の値として、改行を含むものが代入されると、要素番号が、かわってしまうので注意。
変数#0=「あ」。
変数#1=「い」。
変数#1と、言う。{いのみ表示}
変数と、言う。{あ、いを含んだ、全ての要素を表示する}
・二次元配列
改行区切りの配列変数を、さらに、カンマで区切り、擬似的に、二次元配列変数を、実現している。
変数#0#0=「あ」
変数#0#1=「い」
変数#0#0と、言う。
変数と、いう。
・反復(イテレーター) →詳しい解説
配列である変数の各要素について、値を「それ」に、列挙し、直後の(実行文)を、反復します。
{反復子を使った例}
あ#0=「寿司」
あ#1=「天ぷら」
あ#2=「うどん」
あ#3=「牛丼」
あを、反復(
「客¥「今日{それ}は、美味しい?¥」」を、表示。
)。
・辞書(ハッシュ) →詳しい解説
『○○辞書の、△△は、「内容」』のようにして、辞書(ハッシュ)を使います。
ネコ辞書の、「ミケ」は、6歳
ネコ辞書の、「タマ」は、8歳
(ネコ辞書の、「ミケ」)と、表示。