約 733,393 件
https://w.atwiki.jp/kojiro/pages/25.html
見た目は求める結果でもセルには関数が入ったまま。こんな時に要らないと勘違いして関数の参照しているセルを削除したり、関数の入っているセルを移動したりすると関数がエラーを起こす。それに、いつまでも関数が生きていて、そんなセルがファイル上にいっぱいあるとExcelの処理も重たくなる。また、関数で得られた文字列を直接いじりたくなることもあるかもしれない。 関数で変換して、もう計算させる必要がなかったら、関数のあるセルをコピーして、好きなところで右ボタンをクリック。「形式を選択して貼りつけ」コマンドが選べる(カットでは選べない)。出てきたダイアログで「値」を選べば、関数は残らない。同じセルの上でコピーして、形式を選択して貼りつければ、関数は完全に消える。
https://w.atwiki.jp/kimuakistat/pages/14.html
サンプルサイズとアンケート調査 サンプルサイズとは アンケート調査とは 質問紙とは サイコロの細工を見破れるか <ごきげんよう>を見ていて、そこで使われているサイコロの特定の目がでやすいような気がしてなりません。特に!その目は『今日の当たり目』といって、出ると視聴者にプレゼントが当たるというものです。 そこで、1ヶ月番組を見ながらどの目が幾つ出たかチェックしてみました。1日に3-4回サイコロが降られ、22日間カウントした結果、77回のサンプルを得ました。 面① 面② 面③ 面④ 面⑤ 面⑥(視聴者プレゼント) ごきげんようのサイコロ 1/7 1/7 1/7 1/7 1/7 2/7 普通のサイコロ 1/6 1/6 1/6 1/6 1/6 1/6 そこで、カイ2乗検定を用いて検定したのですが、5%の有意水準では、普通のサイコロと異なるとは結論できませんでした。 ところが、実際には番組では視聴者へのプレゼントが頻繁に出て番組を盛り上げるように『今日の当たり目』が他の目より2倍も出やすくなるように細工をしていました。 では、なぜ私の調査では有意差がでなかったのでしょう。 実は、上図のようなサイコロと普通のサイコロをカイ2乗検定で見分けるためには、 検出力とサンプル数に下図のような関係があるのです。 つまり、サンプル数が少ないと、(恣意的な)いんちきなサイコロと普通のサイコロとの違いを見逃してしまう可能性(第2種の誤り,β)が結構高いのです。 今回私が1月かけて得た77というサンプル数も、第2種の誤りをする可能性(β)が90%を上回る、かなり不十分なものだったのです。 この例では、第2種の誤り(β)をおこす危険性をほぼ0にする(検出力が100%)<打ち消し効果をだすためには>には、2500回以上もサイコロを振らないといけないのです。 差が小さいと見逃しやすい 正規分布している集団の平均値を比較する場合の、t検定の検出力をみてみましょう。 ここでは、検出しようとしている平均値の差の大きさが、検出力に与える影響を見てみましょう。 両分布の平均値の差が小さく(d=0.5)分布は、分布曲線がかなり重なる。一方、より平均値の差が大きい(d=1.4)例では分布曲線の重なりは小さいです。※ dは平均値の差/分散です。 実際、上の例の検出力を様々なサンプル数で確かめてみると、d=1.4の場合にはサンプル数が20になると5%水準でがほぼ100%検出できるのに、d=0.5では160ものサンプルが必要になる。 このように母集団の平均値の差が、検出力に大きく影響することが分かりました。ですので、検出力を確かめるためにはあからじめ問題となる平均値の差を決めておく必要があある。 この差を決めるには、あなたがその検定をどのような目的で行っているのか立ち返って考えなくてはなりません。例えば、様々な処理がある生物のホルモン濃度に与える影響を調べる場合を想定しましょう。このホルモンはある器官に影響を与えますが、その効果はホルモン濃度がある閾値を越えないと表れません。よって問題となるのは、様々な処理がこの閾値を超えるほどにホルモン濃度を増加させるかであり、それ以下の差はとりあえず問題となりません。そこでこの場合、平常時のホルモン濃度(平均値あるいは信頼区間の上限)と閾値の差をd (=平均値の差/分散)=効果量として必要なサンプル数を求めましょう。この必要数は、計算によって求めることができます。 *正規分布(せいきぶんぷ、 Normal Distribution)は、ド・モアブルが二項分布の近似として発見した確率分布である。 その後、ラプラスやルジャンドル等の誤差や最小二乗法に関する研究を経て、ガウスの誤差論で詳細に論じられた。ガウス分布(Gaussian Distribution)とも呼ばれる。 差が無いとを主張するには、有意水準の設定も慎重に 検出力(1-β)は、上で述べたサンプル数(N)と真の差(d)以外に、有意水準(α)によっても変わります。これは検出力が、棄却率が有意水準以下になる割合であることを考えれば当然といえます。 観察された差が、本当に母集団に差があるために生じたと主張したい場合には、その現象が偶然生じている場合と見分けるために、有意水準を小さくすることで厳しい判断ができます。 だが一方で、母集団に差はなく、観察された差は全くの偶然に生じと主張したい場合もあります。この例は、特に観察された頻度分布を既知の分布(正規分布・ポワソン分布など)と比較する場合によく見られます。この際、サンプル数が非常に大きい場合を除いて、有意水準をいたずらに低く設定してしまうと、検出力が低下して母集団に差がないという結論を導きやすくなってしまいます。そこで有意水準を大きく(時には0.1以上に)設定した方が、かえって厳しい検定になります。 Co en, J (1988) Statistical Power Analysis for the Behavioral Sciences 2nd eds.,LawrenceErlbaum Asscociates, Publisher ポイント1 サンプルサイズ 研究をデザインする場合には,パイロット研究などのデータに基づいて,一定のαエラー,Power=1‐βエラーの元で,必要なサンプルサイズを計算する必要がある。 ポイント2 αエラー 全く細工をしていない、すなわちインチキのない サイコロを振った時は出目は1/6になるが、振り方が異なると、出目の数が、均一、すなわち1/6にならない。 このようなときに2つのサイコロの出目の確率が異なる可能性は高くなる。 ( 恣意的なことが結果に影響を与えているということを、偶然が及ぼす結果への影響(これを危険率と言っている。)と比べて表したもの。 ポイント3 βエラー サンプル数が少ないと、(恣意的な)いんちきなサイコロと普通のサイコロとの違いを見逃してしまう可能性(第2種の誤り,β)が結構高い。 •本当は間違った結論を、偶然に出た極端なデータから正しいと誤認することを第二種の誤り という 補足 ・学力の高い人が一度の入試でしくじって(学力が低いと誤認され)落ちてしまうのが第一種の誤り、 ・入試のときだけヤマが当たって通ってしまうのが第二種の誤り(サンプリングエラーと呼ぶ) ポイント4 •何かを売り込もうとする人や、何かにお金を出させたいと思っている人は、自分にとって都合のいい真実だけを話し、都合の悪い真実は無視します。 •その話のどこにもウソがないとしても、それさえ全体として偏っていて、偏った判断を誘うものです。 しかし、そうした誤判断の危険は、普通に情報を受け取っている人が、少ない情報だけで満足して「情報の裏を取る」ことをしないときにも、生じます。 ポイント5 検出力 •実際に帰無仮説が正しいか、誤りであるかのどちらかしかありえないため、縦の列はどちらかにしかならない。 またα(アルファ)を小さくするとβ(ベータ)が大きくなる(検定力が下がる)可能性があり、逆にβ(ベータ)を小さくするとα(アルファ)が大きくなる可能性が高まるという、トレードオフの関係が両者にある。 •本当は正しいのに、偶然めったに起こらないことが起きてしまったために、その結論が間違っていると誤認してしまうこと 「第一種の誤り」 •
https://w.atwiki.jp/nanocoding/pages/34.html
imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 ガロワ クロノスケープ ゲームシナリオのためのSF事典 デルタックス 地球の「100兆倍」の水、120億光年のかなたに発見 対数スケール Logarithmic scale 複素指数関数 逆2乗の法則 量子テレポーテーション ナノク 図解入門よくわかる物理数学の基本と仕組み (How‐nual Visual Guide Book) showrss プラグインエラー RSSが見つからないか、接続エラーです。 showrss プラグインエラー RSSが見つからないか、接続エラーです。 showrss プラグインエラー RSSが見つからないか、接続エラーです。 #ref_list
https://w.atwiki.jp/cschola/pages/65.html
関数(function) 今回は関数という存在について説明します。 javaでは「メソッド」と呼ばれます 関数といっても数学で使う関数とは別物です。 関数はそんなに難しいものではありません。なぜならすでに、関数を使っているからです。 ライブラリ関数 実は、今まで使っていた main() や printf() も関数なのです。 main() は一番最初に実行される関数です。 printf() は画面に文字を出力する関数です。 関数は事前に「宣言」「定義」して、パソコンに教えてあげないと使うことができません。 main()関数はC言語で必ず使うのでパソコンはもとから覚えています。 printf()関数 や scanf_s()関数 は stdio.h の中で 「宣言」「定義」されています。 #include は の中身をそのままそこに張り付けるような仕事をします。 C言語では # のついた命令はコンパイル(コンピュータが読める状態にする)前に実行されます。 こういったコンパイル前の処理をプリプロセッサなどと呼びます。 今回はその関数を自分で作る方法について説明します。 自作関数 自作関数を作る(書く)ときは main()関数よりも前に書きます。そうしないと main()関数の中で使えません。 #include stdio.h // 合計を返す関数 int Add(int x,int y){ int num = 0; num = x + y; return num; // xとyを足した数を返す } int main() { int a = 0; int b = 0; int sum = 0; printf("整数値を2回入力してください。\n"); scanf_s("%d%d", a, b); sum = Add(a, b); printf("合計は%d\n",sum); return 0; } int Add(int x,int y) これが関数の宣言になります。 int が返り値の型です。(返り値については後で説明します。) Add が関数の名前です。 (int x,int y) この中の x , y を仮引数(かりひきすう)と呼びます。 ここには関数の外から取り入れたいデータを書きます。 今回はint型のデータ二つです。 次に {} があります。関数の定義(内容)は { } で区切られているのです。 int num = 0; は変数の宣言です。 関数の中でも変数を宣言することができます。 num = x + y; は今までの知識で理解できると思います。 わからない人は少し前に戻ってみましょう。 return num; ここで戻り値を返します。戻り値とは関数を呼び出した(使った)ときに帰ってくる(出てくる)値のことです。 今回は int型 で宣言しているので int型 の数値を返すことになります。 main()関数の中にある sum = Add(a,b); でAdd関数を呼び出しています。 呼び出し 関数は「宣言」「定義」されただけでは意味がありません。 呼び出されて初めてその効果を発揮します。 今回は sum の中に Add関数の計算結果(戻り値)を代入しています。 関数はいくつでも作ることができます。 また、関数の中で関数を使うこともできます。 関数の引数として関数を使うこともできます。 上の例をよく見ると int a という変数が二回宣言されています。 違う関数の中でなら同じ名前の変数を宣言することができます。 この二つの変数は全く別のもので、それぞれ宣言された関数の中でしか使えません。 // double型の合計を返す関数 double Add_Double(double x,double y){ return x + y; } // 2つの数値の平均を返す関数 double Average(double x,double y){ return Add_Double(x,y)/2; } int main() { double x = 0; double y = 0; printf("実数値を二回入力してください。\n"); scanf_s("%lf%lf", x, y); printf("平均値は約%.3f\n",Average(x,y)); return 0; } 練習問題 次のようなユーザー関数とプログラムを使って作ってください 第1問 二つの引数をとり、大きいほうだけを返すMax関数と、小さい方だけを返すMin関数。 第2問 二つの引数をとり、大きい方から小さい方を引いた差を返すSub関数。 第3問 第1問、第2問の関数を使い、ユーザーから入力された二つの数値の差を求めるプログラム。
https://w.atwiki.jp/slimelv1024/pages/56.html
関数とは 定められた通りの処理を実行して結果を返す一連の命令群のことです 今までもprintf関数やscanf関数などを使って来ました C言語のプログラムはたくさんの関数が集まって出来ています 今まで使ってきたprintfなどは標準ライブラリ関数に属しています そのほかには関数を自分で作成することが出来、これをユーザ関数と呼びます ライブラリ関数とは C言語では機能ごとにライブラリファイルにまとめて用意してあります これをライブラリ関数と呼びます プリプロセッサ指令とヘッダファイル 今まで入出力関数を扱うとき、#include stdio.h と最初に記述していました includeはプリプロセッサ指令と呼ばれ、プリプロセッサと呼ばれるコンパイル前の処理を行うプログラムに命令を送る処理です stdio.hはヘッダファイルと呼ばれ、stdio.hの中にはprintfなどを使用するために必要な宣言や定義などを行っています 関数を扱うときは必ず#includeでこのソースプログラムで関数を使いますと宣言していたのです 標準ライブラリ関数 標準ライブラリ関数 ヘッダファイル 入出力処理 stdio.h 文字列処理 string.h 文字処理 ctype.h 一般ユーティリティ stdlib.h 数学処理 math.h 時間処理 time.h ジャンプ処理 setjmp.h シグナル処理 signal.h 診断処理 assert.h サークルの講義ではすべてstdio.h(スタンダードインアウトヘッダ)で済む範囲でこなしてしまうため、ライブラリ関数についてはあまり深くは触れません 興味がある方は先輩方に聞くか、各自ネットや書籍などで調べてください ユーザ関数とは ユーザ関数とはプログラマ自身が作成する関数のことです 今まで扱ってきたプログラムは小さく、すぐに問題の場所が見つけられましたが、世の中で動いているプログラムは何千、何万行の大きなものばかりです その処理を小分けにし、何十人、何百人で分担して作成していきます 又、小分けにすることでプログラムの修正をその関数間で行うことが出来、同じような処理の関数をまとめてプログラム間で繰り返し使うことも出来ます ユーザ関数の作り方 関数の返り値の型 関数名(引数宣言){ //ユーザ関数の定義 内部処理 return; } 言葉にするとわかりにくいと思いますが、実はやってることはmain関数と変わりません 関数は必ず返り値の型の記述と引数の記述を行っています ユーザ関数の使い方 int sum(int x, int y){ //sum関数の定義 int wa; wa=x+y; return(wa); //変数waを返す } int main(){ int ans,num1=5,num2=10; ans=sum(num1,num2); //sum関数の呼び出し printf("%d+%d=%d",num1,num2,ans); return(0); } ユーザ関数を使用するときは関数名と対応した引数を渡してあげることで使うことが出来ます この渡す引数のことを実引数といい、関数で受け取ったものを仮引数といいます また、関数内で関数を呼び出すことも可能です printf("%d+%d=%d",num1,num2,sum(num1,num2));//printf関数の中でsum関数を呼び出している void型 関数は必ず返り値の型と引数の記述を行っているといいましたが、main関数は引数の記述を行っていません 実は今までmain関数の引数にはvoidが指定されて居たのです voidとは空、無といった、何も無いことを表します 引数でvoidを指定する場合はvoidを記述するか、今までどおり省略すること出来ます 引数ではvoidの記述を省略することが出来ましたが、返り値のでは省略することが出来ません 返り値で記述を省略するとint型になるので、voidと記述してあげてください また、返り値がない場合はreturn文は省略することが出来ます プロトタイプ宣言 関数の宣言だけを行い処理内容を後述する方法です 必ずmain関数から処理が行われるため、関数の処理が後ろにあると流れとしてプログラムが追いやすくなります しかし、プロトタイプ宣言の分だけ行数が増してしまうので、好みの問題といえるでしょう 返り値の型 関数名(引数) //プロトタイプ宣言 int main(){ 処理内容 } 返り値の型 関数名(引数){ //関数の定義 処理内容 } グローバル変数とローカル変数 関数外で宣言された変数をグローバル変数と呼び 関数の中で宣言された変数をローカル変数と呼びます グローバル変数は初期化する必要が無く、すべての関数で扱うことが出来ます ローカル変数は初期化は手動で、その関数内でしか扱うことが出来ません グローバル変数で宣言した変数名と同名でもローカル変数で宣言することが出来ます この場合、ローカル変数が優先的に使用されます また、ローカル変数は関数が終了するたびに消されてしまいます このことを変数の寿命と呼び、変数の有効範囲や寿命のことをまとめてスコープと呼ばれます 二個以上の返り値が欲しい場合 return文では一つしか返すことが出来ません 二つ以上の返り値が欲しい場合はポインタを使います void comparison(int x,int y,int *small,int *big) { if(x y){ *small=x; *big=y; }else{ *small=y; *big=x; } } int main(){ int num1=10,num2=5,min=0,max=0; comparison(num1,num2, min, max); printf("最小値=%d \n 最大値=%d",min,max); return(0); } 引数に配列を使う 関数に配列を渡す場合もポインタを扱います int max(*array,int x){ int i,max; for(i=0;i 0x;i++){ if(max array[i]){ max=array[i]; } } return(max); } int main(){ int data[5]={6,3,5,1,7}; int x=5; //配列の要素数 printf("最大値=%d",max(data,x)); return(0); } 又、関数定義において*arrayはarray[]と記述してもよい どちらも同じ意味なので、どちらを使うかはプログラマの好みの問題になります 再帰的関数 C言語で自分自身と同じ関数を呼び出すことが可能です int fact(int n){ int x; if(n 0){ x=n*fact(n-1); }else{ x=1; } return(x); } int main(){ int num=3; printf("%dの階乗は%dです",num,fact(num)); return(0); } 上の例は階乗を求めるプログラムです 階乗処理は下記のとおり n!=n*(n-1)! 1!=1*(1-1)! 0!=1 例を見るとfact関数の処理でnが0よりも大きい時にもう一度fact関数を呼び出しています つまりnが0になるまでfact処理を繰り返すことになります ただし普通の繰り返し処理と違うのは、新しい関数を呼び出しても、呼び出される前の関数は処理は処理を中断した状態になります どういうことかわかりにくいと思うので、関数の処理始めと処理終わりにprintfを入れてみるとわかりやすいと思います int fact(int n){ int x=0; printf("fact start n=%d\n",n); if(n 0){ x=n*fact(n-1); }else{ x=1; } printf("fact end n=%d x=%d\n",n,x); return(x); } 実行結果 fact start n=3 fact start n=2 fact start n=1 fact start n=0 fact end n=0 x=1 fact end n=1 x=1 fact end n=2 x=2 fact end n=3 x=6 ---------------------ここまでfact関数の処理 3の階乗は6です if文でfact関数が呼び出されるため、n=3のときの処理は中断され、新たに呼び出されたfact関数の処理を始めます n=2でもn=1でも同じです n=0のときに初めてfact関数が呼び出されないのでreturn文まで到達することが出来ます 返り値は前の関数に引き渡され、中断されていた処理を再開します 再帰的処理はオーバーヘッドなどの問題があったりするため好んでは使われませんが、フラクタル図形など再帰的処理以外では記述が難しいものも存在します
https://w.atwiki.jp/crsavrkouza/pages/28.html
11.関数 1.関数とその使い方 何かしらの意味合いを持った処理のカタマリが何度も出てくることが間間あります. そういう時に便利なのが関数です. 一連の処理の流れを定義してサブルーチン化し,その処理をしたいときは関数名を記述することで使えます. 何度も同じことを書かなくても済んで効率的ですし,関数名を工夫すれば可読性もグンとよくなります. 何らかの複数の変数を受け取り,それらに処理を施し一つの数字を返すという形をとります. 受け取るデータを引数といい,返ってくるデータを返り値といいます. 自分で関数を作ってみましょう.以下の例を見てください. #include stdio.h int main(void) { printnum(5); return 0; } void printnum(int a) { printf("%d\n\r", a); return; } このように、main関数と同じように自分で作る関数を書くことで,関数printnumを作ることが出来ます. いちいちprintf("%d\n\r")と書くよりも簡潔で,また関数名から数字を表示するという処理の意味も分かりやすくなったと思います. しかし,このプログラムはこのままでは動きません. コンパイルは上の行から順番に行われます。 なので、一番最初にprintnumが出てきた時点では、printnumという関数がわからないのです。 これの解決方法は2つ有ります。 解決方法1 #include stdio.h void printnum(int a) { printf("%d\n", a); return; } int main(void) { printnum(5); return 0; } 解決方法2 #include stdio.h void printnum(int a); //関数のプロトタイプ宣言 int main(void){ printnum(5); return 0; } void printnum(int a) { printf("%d\n", a); return; } 解決方法1はmain関数の前で関数を定義してしまうことで解決していますが、 この方法では関数の数が膨大になった時にとっても頭でっかちなプログラムになってしまいます。 そんな時は解決方法2を使います。この方法では関数の存在を前もって定義しています。 このように、予め関数を宣言することを「プロトタイプ宣言」といいます。 解決方法1を使うか2を使うかは宗教ですのでどちらかを進めることはしませんが、 一つのプログラム内では統一すべきです。 2.引数について 以前、関数には引数というものがあると言いましたが、自分で定義した関数はこの引数も自由に設定することが出来ます。 次のプログラムを見てください。 #include stdio.h int max(int a, int b); int main(void){ max(5, 10); return 0; } int max(int a, int b){ if(a b){ printf("%d\n", a); }else{ printf("%d\n", b); } return 0; } 引数の宣言は変数の宣言とよく似ていて,上の例のように引数を複数作ることも出来ます. その場合は,「,(コロン)」で区切ります. では、引数の受け渡しなどはどのように行われているのでしょうか。 main関数内でmax関数が呼び出されると,それぞれ対応する引数に値がコピーされて, max関数内の変数であるa,bに値が代入されます. ここでの話のポイントは「値のコピーである」という点です. つまり、次のようなプログラムは意図しない動作をします。 #include stdio.h int func(int f_a); //プロトタイプ宣言 int main(void) { int a = 0; func(a); return 0; } int func(int f_a) { f_a = 5; return 0; } このプログラムはmain関数で宣言した変数aにfunc関数内で5を代入しようとしています. しかし、このプログラムは意図したとおりには動作しません. 何故ならば、関数funcに渡されたのは変数aの値である0という数字であり,変数aではないからです. このような使い方はコンパイルエラーにならないエラーなので気をつけましょう. 3.返り値 先ほどのように関数での計算結果を返したいときはどうすればよいでしょうか。 そこで出てくるのが「返り値」というものです. 関数は一つだけ値を返すことが出来ます。次のプログラムを見てください. #include stdio.h int max(int a, int b); //プロトタイプ宣言 int main(void) { int c = 0; c = max(5, 10) * 10; printf("%d\n", c); return 0; } /* 大きい方の値を返す関数 */ int max(int a, int b) { if(a b){ return a; }else{ return b; } } 関数の返り値は「return」を用いて設定します。そして、関数名の前に付いている型名がその値の型を示します。 返り値を使うときは、変数のように使うことが出来ます。関数の位置に返り値が代入されると思ってください。 何も返さないときは単に「return;」とのみ記述します. 関数のまとめ 関数の構文をまとめると次のようになります。 返り値の型 関数名(引数の型 引数名, …){ 関数の処理; … return 返り値; }
https://w.atwiki.jp/sevenlives/pages/1559.html
関数 読み:かんすう 英語:function 別名:ファンクション, サブルーチン, プロシージャ 意味: 関数とはプログラミング言語においてある一定の処理をまとめたもののこと。 その関数は一度定義すれば汎用的に使用することができ、部品のような役割を果たします。 ある一定の処理を一度定義すれば何度も書き直さずに済みプログラミングの効率化とメンテナンスを容易にします。 エントリ・ポイントであるmain関数?やプログラミング環境に最初から備わっている標準関数?など特別な関数が存在します。 なおプログラミング言語によってサブルーチンやプロシージャと呼ばれるものもあり、また値を返さない関数(void)と分けるものもあります。 2012年06月07日 引数 返り値? プログラミング言語 サブルーチン プロシージャ? クロージャ? カリー化? コールバック main関数? 標準関数? ライブラリ?
https://w.atwiki.jp/r-intro/pages/36.html
目次 目次 パッケージに格納されている関数を直接指定して使う パッケージに格納されている関数を直接指定して使う Rは柔軟な使用のため、基本的な機能すら予約後ではなく関数として搭載されており、例えば自作の関数は関数名をほぼ自由自在に割り当てる。このようなことは本来は進められないが、「パッケージ名::○○」とすることで、パッケージに含まれている関数を直接呼び出して使うことができる。 以下の例は、正弦関数を計算する標準的なsin関数がある一方で、別の自作関数名にsinを割り当て、そのような状態で標準のsin関数を呼び出した例。 sin(pi) [1] 1.224606e-16 sin - function(d) {return(9)} sin(pi) [1] 9 base sin(pi) [1] 1.224606e-16 名前 コメント
https://w.atwiki.jp/slvip/pages/57.html
関数っていうのはLSLで元から用意されてる物と ユーザが自分で作れる物がある 関数 まずはLSLに元からある関数の使い方の説明 関数を使うことで ある動作を一つにまとめる ←とっても大事 ある値を参照する ってことができるんだ 関数名1(引数); そして関数名の後に続くこの() これはこの関数1にこの引数を使って処理をしてくれ!ってこと ちなみに・・ LSLで始めから用意されてる関数は 全て関数名の先頭にllって書いてある わかりやすいな たとえばllSetPos関数を例にしてみると llSetPos( 5,10,15 ); llSetPos関数っていうのは引数の値にプリムを移動させるという使い方 この関数を動かすことで動かしたプリムは 5,10,15 の座標に移動させられる 引数は関数によって複数要求されることがあるんだけど そういった場合は幾つかの引数を,(カンマ)で区切ってやる必要がある 関数名1(引数1,引数2); また、この引数ってのは関数によって使える型が決まってる 今度はllOwnerSayを例にして何の型を使えって言われてるのか調べてみよう llOwnerSay 上のほうに llOwnerSay(string msg) って書いてあるのがわかると思う どういうことかっていうと llOwnerSayに必要な引数はstring型1つだけ って意味なので引数には文字列型を使わないといけないってこと llOwnerSay("aiueo"); llOwnerSayは自身に引数を表示するって意味なので こうすることで自分の画面にaiueoと表示される ある値を参照する関数っていうのは 関数を実行することによって値を参照することができる vector v = llGetPos(); llGetPos関数は実行することで今ある座標を参照することができる 参照された値は代入演算子で別の変数に代入する必要がある こうやって色々な関数を使って 現在時刻を調べたり風の向きを調べたりすることができるんだ ユーザ関数 ユーザ関数っていうのは 今まで説明してた関数とは逆で 関数を呼び出した時の処理を自分で作ってしまおうという事 myFunction(5); こんな感じで自分で作ったmyFunctionという関数に5という引数を付け加えて実行することができる だけど実行した時に起こす処理を書く必要があるんだ 書く場所はステートの外側&ステートより前に書かないといけない 書き方はこんな感じ 返す型 関数名(受け取る引数){ 処理 return 返す値; } 返す型、返す値ってのは イベント内 myFunction(5); を実行した時にかえって来る型と値の事 ここに書いた型と値が帰って来るので integer myFunction(integer n){ 処理 return 10; } こんなかんじで書いた場合は型をinteger型にしてるので イベント内 integer a = myFunction(5); という感じで実行すれば実行した場所に整数型の値を返すことができる 受け取る引数っていうのは イベント内 myFunction(5); これの場合は整数型の5という引数を送ってるので integer myFunction(integer n){ 処理 return 10; } 関数の中の変数nで5という値を取得することができる このnは関数の中で使うことができる integer myFunction(integer n){ integer m = n * 10; return m; } こういう関数を用意しておいて イベント内 integer new = myFunction(5); こうやって実行させると newの中には5*10の値が入ってることになる 関数の中で処理を実行させたい場合は この関数の中に用意された関数を書いてやればおk integer myFunction(){ llOwnerSay("run function"); return 0; } こういう関数を用意しておいて(引数は必要ないので適当に0を返しておく) イベント内 myFunction(); こう実行させると自身の画面にrun functionと表示される
https://w.atwiki.jp/elisp/pages/18.html
関数リファレンス 関数を定義する 関数 リファレンス GNU Emacs Lispリファレンスマニュアル 関数 関数を定義する (defun 関数名 (引数) 処理内容)という形式になります。 (defun foo (n) (+ n 5));= foo (foo 5);= 10