しらたまのコミッタ日記

2010-02-06

[]なでしこ基礎文法最速マスター 18:27

完全に出遅れた!

結構書くの大変ですね、これ。ツッコミ募集。

参考:

Perl基礎文法最速マスター - Perl入門~サンプルコードによるPerl入門~

http://d.hatena.ne.jp/perlcodesample/20091226/1264257759

Route 477 - Ruby基礎文法最速マスター

http://route477.net/d/?date=20100125

前口上

なでしこの文法一覧です。他の言語をある程度知っている人はこれを読めばなでしこの基礎をマスターしてなでしこを書くことができるようになっています。簡易リファレンスとしても利用できます。多分。

※注意:なでしこはWindows上でのみ動作します。

0.実行するために

インストール

公式サイトダウンロードページからなでしこのインストーラをダウンロードして実行、指示に従ってインストールします。

インストールが完了すれば、デスクトップにショートカットが作成されます。

専用エディタ

ショートカットを起動すると、なでしこの専用エディタ起動します。メニュー>設定>なでしこ実行設定から、標準GUI・簡易GUICUIの3つの実行方式が選べますが、初期状態である標準GUIで多くの場合不都合はありません。Ctrl+スペースで入力補完を利用することができます(ただし過剰な期待はしないこと)。

1.基礎

文法チェック

「!変数宣言必要」と書くことで、宣言なしの変数使用をエラーにすることができます。うっかりミス防止のためにもソースの先頭に書くことをお勧めします。

甲は0

変数宣言必要

乙は1 #文法エラー

「!変数初期化は必要」と書くと、初期化されていない変数の使用をエラーにすることができます。

甲は0

変数初期化は必要

乙は1

乙と丙を足す #文法エラー

print

表示」を使うことで、ウインドウに文字を出力できます。「言う」や「いう」を使うとダイアログに表示できます。

「こんにちは、世界」と表示

「こんにちは、世界」と言う

コメント

次のコメントが使えます。上の二つは半角でもコメントの開始として扱われます。

# 一行コメント(#でもOK)

’ 一行コメント('でもOK)

※ 一行コメント

// 一行コメント

/* 複数行コメント */

1行に1文を記述できます。1行に複数の文を書きたい場合は「。」か「;」を文末に書いてください。1文を複数行に分けたい場合は、行末に演算子が来るように調整するか、「、」を書いて下さい。

#1行に複数文

~を×する。~を×する

#1文を複数行

~を、

×する

ネスト

関数や制御構文のブロックはインデントで判別します。半角スペースを1として、全角スペースを2、タブを4として扱います。関数や制御文の項を例として参照してください。

識別子

識別子に助詞を含めることは出来ません。しかし、一定の条件を満たすときは利用できます。

また識別子の全角半角は無視されます。大文字小文字は区別されます。漢字、片仮名、英数字に続く末尾の平仮名は無視されます。

変数の宣言

変数名とは型名」の形式で書きます。宣言時に型の指定がありますが、宣言した型以外のデータも変数に格納可能です(ただしグループは除く)。宣言時の型によって、初期化される値が異なります。任意の初期値を指定したいときは「=ほげほげ」と書いてください。

甲とは整数    #0で初期化

乙とは文字列   #文字列で初期化

丙とはグループ

丁とは整数 = 10 #10で初期化

変数への代入

助詞「は」か「=」(半角でも可)を使います。

甲は1

甲=2

命令(関数)

注:なでしこにおいて用語としての「命令」と「関数」は同じものです。

命令の呼び出す形式には、助詞を使うものと、他の言語でみられるような方法があります。前者の場合、助詞によって引数の渡され方が決まりますので、引数の順は自由です。命令の返り値はシステム変数それ」に格納されます。特定の命令は引数を省略したときに「それ」を自動的に補完します。

2から1を引く #この2つは同じ意味

1を2から引く #

表示     #引数を省略しても1と表示される

LOGN(10,100) #他言語でもよくある呼び出し方

スクリプトの実行

メニュー>実行>実行、F5、ツールバーの三角形のボタン、いずれかで実行できます。

2.数値

整数実数あります。二者は自動で変換されます。

表現

実数には指数表記も使えます。全角半角を問いません。

甲は1

甲は$FF  #16進数

甲は1.234

甲は10.2e+5#指数表記

四則演算

演算子は半角でも可。

甲は1+1

甲は1-1

甲は1*1

甲は1×1

甲は1÷1

甲は1/1

甲は1%1

命令を使って書くこともできます。

甲は1と1を足したもの

甲は1から1を引いたもの

甲は1と1を掛けたもの

甲は1を1で割ったもの

甲は1と1の余り

インクリメントとデクリメント

「++」や「--」はありません。「直接足す」や「直接引く」で代用できます。

甲は1

甲に1を直接足す  #甲=>2

甲から1を直接引く #甲=>1

3.文字列

文字列の表現

かぎ括弧、二重かぎ括弧、ダブルクオート、バッククオートで囲みます。かぎ括弧、ダブルクオートの中では中括弧(波括弧)を使って変数展開を行うことが出来ます。中括弧の中では\nや\tなどの特殊文字を使うことも出来ます。なお、バッククオート以外全角半角を問いません。また、なでしこの文字列は基本的にShiftJISです。

甲は`あいう`

乙は『かきく』

丙は「さ{\n}し{¥t}す」

丁は”{甲} えお” #=>"あいう えお"

文字列操作

# 結合

結合は「あああ」「いいい」

# 分割

分割1は「あああ、いいい、ううう」を「、」で区切る

分割2は「あああ、いいい。ううう」を「、|。」で正規表現区切る

分割3は「あああ、いいい。ううう」を「[、。]」でワイルドカード区切る

# 長さ

長さ1は「あいうえお」の文字数

長さ2は「あいうえお」のバイト数

# 切り出し

部分文字列は「あいうえお」の2から2文字抜き出す #=>いう

部分文字列は「あいうえお」の3から4バイト抜き出す#=>いう

# 検索

場所1は「あいうえお」で「うえ」が何文字目 #=>3

場所2は「あいうえお」で「うえ」が何バイト目#=>5

場所3は「あいうえお」で「くけ」が何文字目 #=>0

4.配列

配列文字列を分割することにより作成できます。

配列1とは配列

配列1は「1,2」を「,」で区切る

要素の参照と代入

配列1とは配列

代入

配列1[0]は1

配列1¥1は2

#参照

配列1[0]を表示

配列1¥1を表示

配列1を表示 #改行区切りで表示

要素の個数

配列1の要素数  #ハッシュにも使える

配列1の配列要素数

配列の操作

配列1とは配列

配列1は「1,2,3」を「,」で区切る

# 先頭を取り出す

配列1の0を配列切り取る #=>1

# 先頭に追加

配列1の0に5を配列挿入 #=>配列1は 5,2,3

# 末尾を取り出す

配列1の配列1の要素数-1を配列切り取る #=>3

いう

# 末尾に追加

配列1に9を配列追加 #=>配列1は 5,2,9

5.ハッシュ

ハッシュは「ハッシュ変換」により文字列から作成できます。

辞書とはハッシュ

辞書は「あ=1

い=2」をハッシュ変換

要素の参照と代入

#参照

辞書@「あ」を表示

辞書@「い」を表示

代入

辞書@「あ」は1

辞書@「い」は2

ハッシュの操作

# キーの取得

辞書のハッシュキー列挙

# 値の取得

辞書のハッシュ内容列挙

# ハッシュのキーの削除

辞書の「あ」をハッシュキー削除

6.グループ

クラスのようなものです。ただし、隠蔽は出来ません。「とは」を使ってグループを宣言するとシステム変数」と「これ」にエイリアスが作成されます。

■果物

 ・値段

 ・産地

 ・買う(個数だけ)~

  「{個数*値段}になります」と表示

りんごとは果物

の値段は100

りんごを10だけ買う#=>1000になります

要素の参照と代入

#参照

りんごの値段を表示

りんご.産地を表示

りんご@「値段」を表示 #動的な(文法チェックにかからない)参照

りんご→産地を表示   #動的な(文法チェックにかからない)参照

代入

りんごの値段は100

りんごの産地は「青森」

7.制御文

条件は0と「」(文字列)がで、それ以外はです。

if文

もし条件ならば

 ~~

違えばもし条件ならば

 ~~

違えば

 ~~

while文

システム変数回数」をループカウンタとして使えます。

条件の

 ~~

for文

システム変数回数」をループカウンタとして使えます。開始値よりも終了値が大きければカウンタは増え、逆ならばカウンタは減ります。開始値=終了値でも最低1は実行されます。

ループカウンタ変数で開始値から終了値まで繰り返す

 ~~

ループカウンタ変数を使う必要がなければ「」も使うことが出来ます。システム変数回数」はループカウンタとして使えます。

X

 ~~

foreach文

文字列の各行か配列の各要素を順に処理できます。各要素はシステム変数対象」と「それ」にコピーされます。システム変数回数」をループカウンタとして使えます。

「あ

う」を反復

 対象表示 #「それ」と同じものが表示される

 それ表示 #「対象」と同じものが表示される

比較演算子

整数実数はすべての比較演算子を使えます。文字列は等号と不等号のみです。文字列の大小関係はシステム命令を使います。配列ハッシュ文字列に変換された上で比較されます。グループは比較できません。演算子の全角半角を問いません。「==」の代わりに、制御文の条件指定の中などの代入の可能性がない場所ならば、「=」を使うことも出来ます。

変数1 == 変数2 # 変数1は変数2と等しい

変数1 != 変数2 # 変数1は変数2と等しくない

変数1 <> 変数2 # 変数1は変数2と等しくない

変数1 ≠ 変数2 # 変数1は変数2と等しくない

変数1 < 変数2 # 変数1は変数2より小さい

変数1 > 変数2 # 変数1は変数2より大きい

変数1 <= 変数2 # 変数1は変数2以下

変数1 ≦ 変数2 # 変数1は変数2以下

変数1 >= 変数2 # 変数1は変数2以上

変数1 ≧ 変数2 # 変数1は変数2以上

8.サブルーチン

ユーザー定義関数が使えます。返り値はシステム変数それ」に代入するか、関数から離脱する命令「戻る」の引数として渡します。

●テスト1

 「あ」を表示

テスト1

●テスト2({=1}AとBを|Bで)

 A==Bを戻す

1と2をテスト2

1と2でテスト2#上に同じ

2でテスト2  #初期値を利用

引数は設定できませんが、「とは」で宣言した変数に処理を割り当てることも可能です。主にGUIイベントの設定に使います。

甲とは変数

甲は

 「あ」を表示

甲#呼び出し

9.ファイル入出力

開く」/「読む」命令で指定のファイルを全部読み込みます。「保存」命令で新規保存、「追加保存」命令で追記が出来ます。

「readme.txt」を開く #readme.txtの全内容を読み込んで「それ」に代入

「あああ」を「new.txt」に保存

「あああ」を「add.txt」に追加保存

知っておいて方が良い文法

なでしこの

前述のように、0と「」(文字列)がで、それ以外はです。(内部型NILですが、使う機会はありません)

コマンドライン引数

システム変数コマンドライン」を使って取得できます。配列の0番目にはソースファイル名が入ります。

#vnako.exe src.nako a.txt b.txtで実行

コマンドライン表示/* =>

src.nako

a.txt

b.txt

#*/

文字列数値変換

文字列を算術演算しようとすると、自動でに実数に変換します。同じ動作は「FLOAT」/「実数変換」命令で実現できます。整数のみの場合は「INT」/「整数変換」命令を使います。各変換は末尾に数値以外の文字があっても、文字は無視して数値と解釈できるところまでを変換します。変換できなければ0が返ります。

「10」+1を表示  #=>11

$10」+1を表示 #=>17

「10e+2」+1を表示#=>1001

INT(「10.1」)   #=>10

「10e+2」を整数変換#=>1000

「10.5」+1を表示 #=>11.5

FLOAT(「10.1」)  #=>10.1

「10.5A」+1を表示#=>11.5

INT(「あいうえお」)#=>0

の他の演算子

べき乗、ビット演算が出来ます。例によって全角半角を問いません。

2^10を表示 #=>1024

1<<10を表示 #=>1024

32>>5を表示 #=>1

1||2を表示 #=>3

3&&2を表示 #=>2

ファイルを逐次的に読み込む/書き出す

ファイルストリーム関連命令を使うことによって可能です。

test.txt」を「読書排他」でファイルストリーム開いてストリームに代入

ストリームでファイルストリーム一行読む #改行まで読み込み

ストリームで10をファイルストリーム読む #10バイト読み込み

ストリームで「こんにちは」をファイルストリーム書く  

ストリームに「こんにちは」をファイルストリーム一行書く#末尾に改行がつく

ストリームをファイルストリーム閉じる

毎行読む」命令を使うと「反復」と組み合わせて各行を処理することが出来ます。

「readme.txt」を毎行読んで反復

 回数「:」対象表示 #行番号を付けて表示

メモ記入」命令

複数行の任意入力コピー/変更可能な出力として非常に便利な命令です。

「あいうえお

かきくけこ

さしすせ」をメモ記入 #指定のテキストがエディタ表示されたダイアログが表示される

それ表示 #ダイアログの内容が返される

外部ファイルの読み込み

「!「~~」を取り込む」を使って、外部のファイルを取り込むことが出来ます。

!「nakonet.nako」を取り込む

サーバーとはTCPサーバー#「nakonet.nako」にあるTCPサーバーグループを利用可能

グループ関係

メンバ関数「作る」を定義しておくと、コンストラクタとして動作します。

■甲

 ・あ

 ・作る~

  あ=10

丙とは甲

丙のあを表示#=>10

宣言時に+を使ってグループミックス(メンバの全コピー)をすることが出来ます。

■甲

 ・あ

 ・い

■乙+甲

 ・か

 ・き

/*次と等しい

■乙

 ・あ

 ・い

 ・か

 ・き

#*/

■丙+甲

 ・あ

 ・か

 ・さ

/*次と等しい

■丙

 ・あ

 ・い

 ・か

 ・さ

#*/

グループはクラスではないので、■での宣言もグループ変数として扱えます。

■甲

 ・あ

 ・い

甲のあは10

便利リンク

公式マニュアル

公式命令リファレンス

AilinAilin 2015/08/31 17:19 I feel saiitfsed after reading that one.

AkiraAkira 2016/07/01 08:44 Nice to meet you!

ゲスト



200612
200701020304050708101112
20080103040506070912
200904
20100204
201104