2010年12月26日日曜日

nScript講座 第12回☆年末スペシャル☆

で飾ってあるからって浮かれちゃだめです。

今回は宿題を出します。結構大変な。
そのために関数を、そうですね....5つくらいかそのくらい学ばなければ
ならないので....がんばっていきましょう!!


今回は文字列操作関数というものをメインに扱っていきます。
Len(),Left(),Right(),Int()....とたくさんあります。
今回はこの4つですね。使うのは。

解説はいたって簡単。

Len()は、引数で渡した文字列の長さを取得して返します。
ex) a=Len("Hello"); //5を返す

Int()は、引数で渡した文字列を整数に変換して返します。
ex) a=Int("123"); //123という整数値を返す。
ex) a=Int("123abc"); //123とう整数値のみ返す。

Left()とRight()は、それぞれ第一引数に文字列を指定して
第二引数に数値を指定します。簡単にいうと
指定した文字列から、左or右からn文字文切り取って文字列を返す。
ということです。
ex) a=Left("Helloworld",5); //Helloの文字列を返す。
ex) a=Right("Helloworld",5); //worldの文字列を返す。

色つけてわかりやすくしたつもりです。
色ついてますかね?

と、いうわけで。今回習うのはこれだけです。

さて、と。
告知どおり宿題を出します。

問、
  上記4つの関数を自由に用いて乱数すなわちランダムな数列を
  生成するルーチンを作成しなさい。
  ただし237,515,51...と連続して同じ桁数の数値を生成するものとする。

はい。こちらになっています。
実は乱数は普通発生させる関数とか、結構あるんです。
でもnScriptにはないんですよー。ってことで、作ってくださいって話です。
決まった作り方というものがあるので、それをnScriptで実現するのでも
構わないので、何かしらnScriptでつくってください。

年明け前に答えを確認して、ちょっとした例をあげようかと...。
ではがんばってください。

今回はこれにて終了です!がんばってくださいね!

7 コメント:

mikan さんのコメント...

宿題解答はこちらで☆
いろんなルーチンお待ちしておりますw

よつ さんのコメント...

色々考えて見ましたが...わけがわかりませんw
発見したのがなぜかLenをファンクション関数の名前に使うとエラーが出てくることだけでした、僕だけでしょうか

mikan さんのコメント...

Len関数はもともとある関数なので、その中身を定義しようとしたらnScriptに怒られますよ!
例えば
Function puts() {
とやっても同じくエラーがでます。
これはあくまで処理の記述のみではなく中身の定義も行っているというところに注目してください。
ちなみに、今回のように関数や変数の名前として使うと判断できなくなってエラーがでてしまう単語のことを「予約語」といいます。
nScript講座では確かにそこの部分をはしょっていました。
ご指摘ありがとうございました。次回の記事できちんとまとめておきますね。

よつ さんのコメント...

あっちの日記のコメントからですが、ウィキペディア見てみました!ありがとうございます
とりあえず参考にしてこんなん作ってみたのですが、
Function main()

{

a=73;

while(1){

b=Right(a=a*2,3);

puts("%b%,");

}

}

これって乱数のようで決まった変数ですよね...
それから取得する位置をランダムにするのか?とか思ってしまったり。
乱数が乱数を呼ぶ...

mikan さんのコメント...

乱数って言い方がまずかったですねw
疑似乱数です。周期はあってかまいません。
できるだけ周期を大きくするということですかね。問題は。
にしてもすごいですね!まとめ方に感動しましたw
Right関数内の式の返り値を利用する書き方、すばらしいです。
僕だったら一回結果を変数に代入してから使ってしまう気がします。。
スマートな書き方って、大切ですね。

しかし、Right等今回紹介したものは文字列操作関数です。
いま手元に本体がないので検証できないのですが、おそらくこのスクリプトではRight関数がエラーを起こすと思われます。
Right関数は第一引数に文字列型を渡されることを前提としているので、整数型で渡してしまうとパニくってしまうわけです。

こちらでも実際に試しますが、よつさんの環境ではいかがでしたか?



ちなみに模範解答的な何かが大変遅れています。。
い、言い訳をさせてください!
実はBrainでやってるときに、ROM配下に保存したまま本体をリセットしたためにスクリプトが消えてしまったんです......
一回かいたので、すぐに書き直せると思います。
もう少し待ってください......

よつ さんのコメント...

うーん、僕の環境は大丈夫でしたねー...

>>まとめ方に感動しましたw
逆にこれ以外はわかりませんw

よつ さんのコメント...

こんなん作ってみたらどうでしょう、一定の数..2147483648くらいを越えるとエラーで0になってしまうようなので...
まあ正解ではないでしょうがw

Function main()

{

var a;

while(1){

a=a-1000000000+1;

while(a<1000000000){

a=a+1139;

b=Mid(a=a*2,1,3);

puts("%b%,");

}

}

}

コメントを投稿

Related Posts Plugin for WordPress, Blogger...

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Walgreens Printable Coupons