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