ポイント


■ひまわりの文法の要約


・文字規則

ひまわりでは、Windows標準の文字コード、Shift-JISを使って処理をします。その際に、変換できるもの(アルファベット、数字、記号)は、全角(2バイト文字)を、半角(1バイト文字)に変換して実行をします。そのため、「(全角)」と、「A(半角)」を区別しません。

・分かち書きをする→詳しい解説

*ひまわりは、長い文章から、単語を拾っているのではなくて、単純に、1区切れ単語を、1つの単語として、順に読んでいきます。そのため、読点(、)や空白文字( )で区切らず、一綴りに、
「こんにちは」と言う。
と、書くと、エラーと表示され、実行されません。しっかりと、
「こんにちは」と、言う。’、で区切る
または
「こんにちは」と 言う。’スペースで区切る
のように、単語ごとに、分かち書きをしてください。

各単語の区切り文字は、
、(読点) ,(カンマ) (スペース半角か全角)
で、文の終わりには、
。(句点) ;(セミコロン)
を、つけます。

・送り仮名の省略が出来る

 ひまわりでは、送り仮名を無視して、日本語を解釈しますから、「言う」と書いても、「言え」と、書いても、同じように実行されます。
但し、送り仮名の定義は、「漢字やカタカナの後ろに続くひらがな」というものですから、「言うな」と、書いても、「言う」と同じように実行されてしまいます。

・基本文法

命令は、
    引数命令語
からなり、
引数には、必ず明示的に、
    目的語助詞
と、助詞を、付けます。
助詞は、一部、数学関数などでは不要ですが、普通の命令では必要です。

以下の2つの書き方は、どちらも、認められます。

(1)引数、命令語。・・・一般的な日本語に近い使い方(引数に助詞が必要)
(2)命令語(引数)。・・・数学関数や、プログラム言語的な使い方(引数に助詞は不要)
例)
1.「こんにちは」と、言う。
2.言う(「こんにちは」)。

(*2番目の場合は、助詞を省略して書くことが出来ます。)

・命令語の連続

以下のように、命令を文章のように繋げて記述することができます。
引数、命令語+(し)て、引数、命令語+(し)て・・・
例)
3に、5を、足して、表示。

接続詞「そして」

滑らかな日本語を表現するために、接続詞の『そして』があります。
これを、読むと、その時点での引数に過不足がないか、構文チェックを行う仕様になっています。
それは、『こんにちは、Aちゃん。』。
『A』を、『ミネ』に、置換、そして、表示。

・引数の順序

引数は、『(目的語+助詞)、(目的語+助詞)・・・』のように与えられます。ここで、引数は、与えた順番と、助詞によって区別されます。
そのため、以下の2つの文は、同じ意味になります。
例)
3、5、足して、表示。
5、3、足して、表示。

・引数の省略

もし、引数を省略したり、指定よりも1つ少なく書いて命令を呼び出すと、一番初めの引数に、『それ』が、渡されます。
例えば、表示は、『?を、表示』のように、使いますが、
それは、「こんにちは。」
表示。
のように書くと、『「こんにちは」と、表示。』と、書いたのと全く同じ意味になります。
また、『?から、?文字、左端を切り取る。』のように、2つ以上の引数をとる命令の場合は、
それは、「123456789」
3文字、左端を切り取る。
それを、表示。’『123』と、表示される
の、ように、1つ目の引数に、それが渡され、「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)
  引数取得
  それは、今年 - それ。
  戻る。
関数内では、『ローカル変数』命令を使うことで、ローカル変数を使える。
関数の引数を取得するには、『(変数?)に、引数取得』命令で、引数を取得できる。

GUI 部品を使う

→詳しい説明

・オブジェクト利用の手順

  1. 部品を作成する。
    「(部品名)(部品の種類)を、作る。」命令を使う。
    「(部品名)を、(部品の種類)として、作成。」命令を使う。
  2. 部品の各項目を設定する。
    「(部品名)の、(項目名)は、(値)。」と、代入文を使う。
    「(部品名)の、(項目名)を、(値)に、設定」命令を使う。
  3. 部品の各項目の値を得る。
    「(変数)は、(部品名)の、(項目名)。」と、参照を使う。
    「(部品名)の、(項目名)を、(変数)に、得る」命令を使う。

・特殊部品「母艦」

ひまわりのキャンバスを、母艦という名前として、定義してあります。
  母艦の、タイトルは、「ひまわりエディタ」。
のように、使います。
もちろん、幅、高さ、X、Yを設定すれば、フォームの大きさが変えられます。

・配列変数 →詳しい解説

 ひまわりにおける、普通の変数は、全て文字列で出来ており、計算が求められる場合には、数値として取り扱われる仕様になっています。そして、配列変数は、変数の値を、改行記号で区切ったものであり、例えば、変数名#3と、書けば、4行目(0行から始まるため)が、値として得られる。
 そのため、配列変数の値として、改行を含むものが代入されると、要素番号が、かわってしまうので注意。
変数#0=「あ」。
変数#1=「い」。
変数#1と、言う。{いのみ表示}
変数と、言う。{あ、いを含んだ、全ての要素を表示する}

・二次元配列

 改行区切りの配列変数を、さらに、カンマで区切り、擬似的に、二次元配列変数を、実現している。
変数#0#0=「あ」
変数#0#1=「い」
変数#0#0と、言う。
変数と、いう。

・反復(イテレーター) →詳しい解説

配列である変数の各要素について、値を「それ」に、列挙し、直後の(実行文)を、反復します。
{反復子を使った例}
あ#0=「寿司」
あ#1=「天ぷら」
あ#2=「うどん」
あ#3=「牛丼」
あを、反復(
  「客¥「今日{それ}は、美味しい?¥」」を、表示。
)。

・辞書(ハッシュ) →詳しい解説

『○○辞書の、△△は、「内容」』のようにして、辞書(ハッシュ)を使います。
ネコ辞書の、「ミケ」は、6歳
ネコ辞書の、「タマ」は、8歳

(ネコ辞書の、「ミケ」)と、表示。

戻る