Top / Docs / プログラミング言語 / なでしこ / 楽しいなでしこ講座

楽しいなでしこ講座#

なでなでしこしこ

変数宣言#

  • なでしこで変数の型を宣言する
(変数名)とは(型)。
  • 型には以下のものがあります。「変数」にしとけばメモリ大量消費しますが何にでも使えます。

    • 文字列
    • 数値
    • 整数
    • 配列
    • 実数
    • ハッシュ
    • 変数
  • メモリのでかさ

    • 変数>文字列>数値>実数>整数
  • 別次元

    • 配列 ・ハッシュ

配列#

  • 配列を扱う
    • 文字列変数で使うとインデックスのところが行数になります。
 配列変数名¥インデックス
 配列変数名[インデックス]
  • 二次元配列を扱う
配列変数名¥行,列
配列変数名[行,列]

ハッシュ#

  • ハッシュを扱う
ハッシュ変数名@「ハッシュ文字列」
  • 多次元ハッシュを使う
ハッシュ変数名@「ハッシュ文字列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ならば
       「【{回数}回目で成功!】おめでとう!正解は{答え}でした。{改行}」と表示して抜ける。
     「位置も数値もあっている数字が{判定}個。位置だけズレている数字が{ズレ判定}個あるよ!{改行}」と表示。
   
   「-【終了!】-------------------------{改行}{改行}」と表示。
📝 このページに誤りを見つけたら…  GitHubで報告(エンジニア向け)  ・  フォームで報告