Math.sin( )メソッドについてよく理解でないのですが、
やはり数学的な知識が必要なのでしょうか?
Math.Sinは単純に,正弦関数sinの計算を行うだけのメソッドです。
あくまで数学関数を実行するだけのものですから,
正弦関数を知っていればMath.Sinが理解でいないことはないですし,
正弦関数を知らなければMath.Sinは理解できないでしょう。
そういう意味では数学的な知識が必要かもしれませんが,三角関数は初等数学の範囲内だと思いますし,それほど難しい知識ではないと思います。
注意点として、引数はラジアンで与える必要があります。
360°= 2πラジアンですので、度をラジアンに変換するには、2π/360 をかければよいです。
↑フォントによってはπがnに見えたりするかしら?
πはパイ、円周率です。.NET では Math.PI です。
>Math.sin( )メソッドについて
>Math.Sinは単純に,正弦関数sinの計算を行うだけのメソッドです。
こう書かれていることを否定するだけの根拠を羅列する知識はないのですが、
Math.Sin()は正弦関数sin()の値を得ることができる関数です。
では間違っているのでしょうか?
よくわかりませんが、
> Math.Sin()は正弦関数sin()の値を得ることができる関数です。
という書き方は、根拠はないけれど
> Math.Sinは単純に,正弦関数sinの計算を行うだけのメソッドです。
を否定しているのですか?
個人的には同じに思えて、意味的にどこが違うのかわからないのですが。
>> Math.Sinは単純に,正弦関数sinの計算を行うだけのメソッドです。
>を否定しているのですか?
否定できるのであればしたい・・・
「計算を行うだけ」ではないので。
Math.Sinは単純に,正弦関数sinの計算を行って結果の値を返す関数です。
といいたいわけです。
Sinという関数名に値を返している以上は「関数」とよびたいです。
VBでいえば
Dim Sub XXX(・・・)
か
Dim Function YYY(・・・) As Double
というのが決定的な差ですよね。
よくわからない話ですが、wikipediaでみるかぎり、「メソッド」の定義から察するに、この場合は「メソッド」でも正解のような気がします。
ところで質問者はおそらく、学校で配られたプリントをみて、大して興味もないプログラミングを他力本願で済ますために書いたといったところでしょうか?
質問は結構だと思いますが、高校1年の数学くらいは知らないとこの先進めないかと思いますよ。がんばってください。
> 「計算を行うだけ」ではないので。
「行うだけではない」とは?
まあ,実際問題として参照用のソースコードを見ると
> [MethodImplAttribute(MethodImplOptions.InternalCall)]
> public static extern double Sin(double a);
となっているので,内部で何やっているのかはわからないのですが。
> Sinという関数名に値を返している以上は「関数」とよびたいです。
.NET Frameworkにおいて,System.Math.Sinは「メソッド」と呼ばれます。
http://msdn.microsoft.com/ja-jp/library/system.math.sin.aspx
とりあえず,MSDNの「クラス、プロパティ、フィールド、およびメソッド」
http://msdn.microsoft.com/ja-jp/library/a67b72ea.aspx
を読んでください。
> VBでいえば
> Dim Sub XXX(・・・)
> か
> Dim Function YYY(・・・) As Double
> というのが決定的な差ですよね。
戻り値の型がSystem.Voidかそうでないかだけの差です。
Public Shared Sub Test → .method public static void Test() cil managed
Public Shared Function Test() As Integer → .method public static int32 Test() cil managed
なお,区別するなら
・Sub XXXはSubプロシージャ
・Function YYYはFunctionプロシージャ
です。
http://msdn.microsoft.com/ja-jp/library/sect4ck6.aspx
http://msdn.microsoft.com/ja-jp/library/dz1z94ha.aspx
ところで,Dim Sub XXXとかDim Function YYYなんて構文ないはずですが……。
http://msdn.microsoft.com/ja-jp/library/7ee5a7s1.aspx
いろいろありがとうございました。
これから「関数」という言葉は使わないことにします。
計算を行うだけではなく、計算を行い、かつ、その値を返すことをしている、ということですか。
「計算を行うだけ」では結果を返さないことになってしまうから、と。
ただ、計算を行って結果を返さないなどということはまずあり得ませんから、いちいち「値を返す」と書く必要はないと考えます。
それに、厳密に言えば計算をしているとも限りませんし…表引きしているかもしれませんよね。
名前にこだわるのであれば、「メソッド」が正式名称でしょう。
プログラミング用語の「関数」は俗称で、必ずしも数学の用語の定義とは一致しませんし。
> これから「関数」という言葉は使わないことにします。
適材適所で使ってください。
.NET Framework では、値を返すものも返さないものも「メソッド」ですが、C 言語ではどちらも「関数」と呼びますし、値を返すものは「関数」、返さないものは「手続き」と呼び分ける言語もあります。
最初の子の書き込みがないね。
僕は中2レベルの算数しかできないけど。
sinとかのアレはクラスでしょ。たぶん。
コレ以前に作ったんで、遊んでね。
Option Strict On
'VisualBasic2008
Public Class Form1
Sub New()
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
'PIは3.14159です
StartPosition = FormStartPosition.CenterScreen
Size = New Size(300, 300)
End Sub
Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Timer1.Interval = 300
Timer1.Start()
End Sub
Sub 針です(ByVal g As Graphics, _
ByVal 針の長さ As Integer, _
ByVal 角度 As Integer, _
ByVal 色 As Pen)
Dim x As Integer = CInt(針の長さ * Math.Cos(角度 * Math.PI / 180))
Dim y As Integer = CInt(針の長さ * Math.Sin(角度 * Math.PI / 180))
g.DrawLine(色, CInt(Width / 2), CInt(Height / 2), CInt(Width / 2 + x), CInt(Height / 2 + y))
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim 針の長さ As Integer
'秒針
針の長さ = Now.Second * 6 + 270
針です(e.Graphics, CInt(Height / 3), 針の長さ, Pens.Black)
'分針
針の長さ = Now.Minute * 6 + 270
針です(e.Graphics, CInt(Height / 4), 針の長さ, Pens.Aqua)
'時針
Dim 時針 As Integer = Now.Hour
針の長さ = (時針 * 30 + 270) + 時針 \ 2
針です(e.Graphics, CInt(Height / 6), 針の長さ, Pens.Red)
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'Timer1をフォームにドラッグしてね
Me.Invalidate()
End Sub
End Class
>最初の子の書き込みがないね。
その「最初の子」なんですが、解決し忘れてましたね。
あれからすべてメソッドで通しています。
いろいろありがとうございました。
P.S. ザコキャラ(最後のヤツ)の意見は確かにやくにたちません。
たぶんすべてにおいて中2レベル(あるいはそれ未満)なんでしょう。
ココ飽きたよ。
じゃ〜な。