楽しいなでしこ講座#
なでなでしこしこ
変数宣言#
- なでしこで変数の型を宣言する
(変数名)とは(型)。型には以下のものがあります。「変数」にしとけばメモリ大量消費しますが何にでも使えます。
- 文字列
- 数値
- 整数
- 配列
- 実数
- ハッシュ
- 変数
メモリのでかさ
- 変数>文字列>数値>実数>整数
別次元
- 配列 ・ハッシュ
配列#
- 配列を扱う
- 文字列変数で使うとインデックスのところが行数になります。
配列変数名¥インデックス
配列変数名[インデックス]- 二次元配列を扱う
配列変数名¥行,列
配列変数名[行,列]ハッシュ#
- ハッシュを扱う
ハッシュ変数名@「ハッシュ文字列」- 多次元ハッシュを使う
ハッシュ変数名@「ハッシュ文字列1」@「ハッシュ文字列2」@......条件分岐構文#
- 簡単な条件分岐
もし、(条件式)ならば
(真の処理)
違えば
(偽の処理)- 複雑な条件分岐
(条件式)で条件分岐
(条件)ならば
(条件)ならば
違えば共に「違えば」はあっても無くてもいい
繰り返し構文#
- 処理をCNT回繰り返す
(CNT)回
回数を表示。//繰り返しが何回目か表示される- 配列Sの要素分繰り返す //文字列ならば毎行分繰り返す
(配列S)を反復
回数を表示。
それを表示。//データの要素が表示される
対象を表示。//同上- 数値変数をAからBまで1ずつ増やしながら繰り返す。「(数値変数)で」を省略すると、変数「それ」に番号が代入される
(数値変数)でAからBまで繰り返す
回数を表示。- 条件式が真の時、処理を繰り返し実行する
//(条件式)のループ でも同じである
//1の間 とすると常に条件式が真となるので、無限ループになる
(条件式)の間
回数を表示。中断続行#
繰り返し構文内での中断続行処理の解説。 全て「1の間」、つまり無限ループの繰り返し構文で説明する。
- 繰り返しから「抜ける」
1の間
回数を表示。
抜ける。- 出力
1- 繰り返しの途中で、繰り返しの先頭に戻って「続ける」。
1の間
回数を表示。
続ける。
『「続ける」が途中で入ったため、表示されない』と表示。- 出力
1
2
3
4
5
....関数の定義#
- 書式
●関数名(引数リスト)
定義内容
//●は*で代用できる- 例:関数を使い、引数三つを表示させる
三表示("撫子に",「かかる涙や」,『楠の露』)。
●三表示(A,B,C)
Aを表示。Bを表示。Cを表示。引数を日本語らしく助詞で区切ることもできる
- 助詞リスト
- 助詞を変数名などに使うと処理がうまくいかない
とは、は、について、ならば、なら、でなければ、から、まで、
までを、までの、で、を、の、が、に、へ、と、して、だけ、
くらい、なのか、として、より、ほど、など、って、では、て、- 「撫子の」と『暑さ忘るる』と"野菊かな"で俳句表示。
●俳句表示(上句と中句と下句で)
上句と表示。中句と表示。下句と表示。変数の展開#
展開ありのカッコ内で{…}の内部は展開されます。
- 展開あり
A=「あいうえお」。
「AAA{A}AAA」と表示。
表示("AAA{A}AAA")。- 出力結果
AAAあいうえおAAA- 展開無し
A=「あいうえお」
『AAA{A}AAA』を表示。
表示(`AAA{A}AAA`)。- 出力結果
AAA{A}AAA- 展開ありで、内部に「 」や{ }や『 』を使いたいときは、下を入れて展開させます
「 {カッコ}
」 {カッコ閉じ}
{ {波カッコ}
} {波カッコ閉じ}
『 {二重カッコ}
』 {二重カッコ閉じ}関数の定義part2#
注意:
関数内で宣言された変数は、その関数内だけのローカル変数となります。
その他のグローバル変数と変数名被った場合は問答無用でグローバル変数にされます。
- 引数リストは省略することができます。
A表示。
●A表示
「A」と表示。- Sで戻る で戻り値を設定することができます
- 「Sで」を省略した場合、「それ」が戻り値になります
A=「あああ」。
A=Aの値変更。
Aを表示。 //いいい
●値変更(Sの)
S=「いいい」。Sで戻る。関数の定義part3#
- 引数リスト内の引数型を宣言することができます
- 「区切る」は特定の文字列で区切って文字列を配列で返します
- 配列合計は、配列の各要素を合計して返します(つまり、これならわざわざ関数を使う必要はありません)
S=「10|100|1000」を"|"で区切る。
Sの配列合計値を表示。 //1110
●配列合計値({配列}Sの)
Sの配列合計で戻る。- 引数を省略した場合、普通はエラーがでるのですが、{=?}と入れておくと省略した場合その?の部分が勝手に代入されます。
- ここでは上との合わせ技を使っていますが、{=10}だけでも動きます
「10
100
1000」の配列合計値を表示。//1110
配列合計値を表示。//10
●配列合計値({配列=10}Sの)
Sの配列合計で戻る。サンプル#
- ゲーム
- 数当てゲーム(cnakoモード用)
1の間
答え=(10000の乱数)を4でゼロ埋め。
答え1=答えの1から1バイト抜き出す。
答え2=答えの2から1バイト抜き出す。
答え3=答えの3から1バイト抜き出す。
答え4=答えの4から1バイト抜き出す。
「数値当てゲームを始めます。」と表示。
「-【開始!】-------------------------{改行}」と表示。
1の間
「-【{回数}回目!】-------------------------」と表示。
1の間
解答=「答えだと思う4桁の数値を入力して下さい{改行}」と入力。
もし、(解答が数列か判定)=いいえならば、「【エラー!】数値を入力して下さい」と表示して続ける。
もし、(解答のバイト数)≠4ならば、「【エラー!】4桁の数値を入力して下さい」と表示して続ける。
抜ける。
解答1=解答の1から1バイト抜き出す。
解答2=解答の2から1バイト抜き出す。
解答3=解答の3から1バイト抜き出す。
解答4=解答の4から1バイト抜き出す。
判定=0。ズレ判定=0。
もし、答え1=解答1ならば、判定=判定+1。
もし、答え2=解答2ならば、判定=判定+1。
もし、答え3=解答3ならば、判定=判定+1。
もし、答え4=解答4ならば、判定=判定+1。
それ=答え。もし、((それの1から1文字削除)で1から解答1を文字検索)>0ならば、ズレ判定=ズレ判定+1。
それ=答え。もし、((それの2から1文字削除)で1から解答2を文字検索)>0ならば、ズレ判定=ズレ判定+1。
それ=答え。もし、((それの3から1文字削除)で1から解答3を文字検索)>0ならば、ズレ判定=ズレ判定+1。
それ=答え。もし、((それの4から1文字削除)で1から解答4を文字検索)>0ならば、ズレ判定=ズレ判定+1。
もし、判定=4ならば
「【{回数}回目で成功!】おめでとう!正解は{答え}でした。{改行}」と表示して抜ける。
「位置も数値もあっている数字が{判定}個。位置だけズレている数字が{ズレ判定}個あるよ!{改行}」と表示。
「-【終了!】-------------------------{改行}{改行}」と表示。