関数の使い方・・・
投稿者 ?-?  (その他)
投稿日時
2009/9/29 19:42:57
Cで言う、関数の引数をポインタ指定してるか実態指定してるかの話ですかねー。
それでしたら、VBでもByValとByRefというのがありますよ。
初級講座第11回あたりを見てみてください。
それでしたら、VBでもByValとByRefというのがありますよ。
初級講座第11回あたりを見てみてください。
投稿者 cupid  (社会人)
投稿日時
2009/9/30 19:52:07
こんにちは。管理者じゃありませんが。
VBで、関数っていうのはSubかFunctionでしょ。戻り値の有無ぐらいしか違わない。
VBでも、アプリは関数の集まり。そう言えば、組み込みか自作かの違いはありますね。
データの授受は引数かPublic変数ぐらいで、メモリーなんてあまり考えない。
確かにBy ValかBy Refキーワードかの違いは考慮する必要あるけど。
次に、アセンブルリストなんて多分見られないと思いますが、これはよく知りません。
VBで、関数っていうのはSubかFunctionでしょ。戻り値の有無ぐらいしか違わない。
VBでも、アプリは関数の集まり。そう言えば、組み込みか自作かの違いはありますね。
データの授受は引数かPublic変数ぐらいで、メモリーなんてあまり考えない。
確かにBy ValかBy Refキーワードかの違いは考慮する必要あるけど。
次に、アセンブルリストなんて多分見られないと思いますが、これはよく知りません。
投稿者 YuO  (社会人)
投稿日時
2009/9/30 20:40:55
同じく管理人ではありませんが……。
> というのも、C言語と違ってメモリを意識せずに済むため、
> 関数がどの様にメモリ上で動き入力に対して出力されるかが、
> 理解できていません。
それは,そもそもの前提
> C言語がおおよそ掴めたので、
が崩れませんか。
Cは関数の組み合わせですから,Cにおける関数がわかっていないとプログラムが組み上がらないはずです。
で,その関数は原則としてオブジェクトの変更と他の関数の呼び出しからなっています。
この話の中に,メモリはまったく関与しません。
関数がメモリにどうこう意識しないとわからないのであれば,Cにおいてでも関数がわかっていないのと同じです。
# Cであっても記憶域はちゃんと抽象化されています。
で,VBの関数の仕組みはCにおける関数の仕組みと変わるところはありません。
# 命令型の言語だと原則かわらないと思う。
> なので、アセンブリ言語から解読しようと思っているのですが、
> Express Edition 2008ではアセンブリ言語を見る手段は、
> 無いのでしょうか?
無いです。
SDKいれてIL Disassembler使うとか,ReflectorでMSIL指定すればCLIにおけるアセンブリ言語と言える,
CILコードを見る事が出来ます。
# MS製コンパイラだから,CILではなくMSILと言うべきかもしれませんが。
もし,ここで言うアセンブリ言語がx86アセンブリ言語などを意味しているのであれば,
Visual StudioのStandard Edition以上でアンマネージデバッグを有効にし,
さらに実行時に止めて[デバッグ]-[ウィンドウ]-[逆アセンブル]で調べる事が一応できます。
CLRはMSILを実行時に実行環境のネイティブコードにコンパイルしますので,
環境によって表示されるコードは異なる可能性があります。
> というのも、C言語と違ってメモリを意識せずに済むため、
> 関数がどの様にメモリ上で動き入力に対して出力されるかが、
> 理解できていません。
それは,そもそもの前提
> C言語がおおよそ掴めたので、
が崩れませんか。
Cは関数の組み合わせですから,Cにおける関数がわかっていないとプログラムが組み上がらないはずです。
で,その関数は原則としてオブジェクトの変更と他の関数の呼び出しからなっています。
この話の中に,メモリはまったく関与しません。
関数がメモリにどうこう意識しないとわからないのであれば,Cにおいてでも関数がわかっていないのと同じです。
# Cであっても記憶域はちゃんと抽象化されています。
で,VBの関数の仕組みはCにおける関数の仕組みと変わるところはありません。
# 命令型の言語だと原則かわらないと思う。
> なので、アセンブリ言語から解読しようと思っているのですが、
> Express Edition 2008ではアセンブリ言語を見る手段は、
> 無いのでしょうか?
無いです。
SDKいれてIL Disassembler使うとか,ReflectorでMSIL指定すればCLIにおけるアセンブリ言語と言える,
CILコードを見る事が出来ます。
# MS製コンパイラだから,CILではなくMSILと言うべきかもしれませんが。
もし,ここで言うアセンブリ言語がx86アセンブリ言語などを意味しているのであれば,
Visual StudioのStandard Edition以上でアンマネージデバッグを有効にし,
さらに実行時に止めて[デバッグ]-[ウィンドウ]-[逆アセンブル]で調べる事が一応できます。
CLRはMSILを実行時に実行環境のネイティブコードにコンパイルしますので,
環境によって表示されるコードは異なる可能性があります。
投稿者 初めてVB勉強  (高校生)
投稿日時
2009/10/2 07:43:31
お騒がせしまして大変申し訳ございません。
掲示板に書いたときから原因を考えて要約分かりました。
書いていらっしゃった方もいましたが、
引数と戻り値と宣言が分からないです。
例えば、byvalとbyref等は分かったのですが、
public sub new と publiec sub public functionとはどんなものかとか、
public sub 関数名(引数) と public sub 関数名(引数)変数名(戻り値?)
という初歩的な所が分かっていなかったです。
お騒がせして申し訳ございませんでした。
掲示板に書いたときから原因を考えて要約分かりました。
書いていらっしゃった方もいましたが、
引数と戻り値と宣言が分からないです。
例えば、byvalとbyref等は分かったのですが、
public sub new と publiec sub public functionとはどんなものかとか、
public sub 関数名(引数) と public sub 関数名(引数)変数名(戻り値?)
という初歩的な所が分かっていなかったです。
お騒がせして申し訳ございませんでした。
投稿者 wii  (中学生)
投稿日時
2009/10/10 07:54:58
管理人じゃありませんが。
まず、もうすこし参考書などを読んでしっかり勉強すべきだと思います。
でもここで一蹴するのもよくないので、説明。C#をさわりだけやって挫折した男ですが。
・ public sub new
コンストラクタです。C#でいうvoid (クラス名)かな?
・ public sub(引数)
戻り値の無い関数。引数はかっこの中はC#と同じ。
・ public function(引数) As (データ型)
戻り値のある関数。値を返す時に、
Return(戻り値)と書く。
こんなもんです。
まず、もうすこし参考書などを読んでしっかり勉強すべきだと思います。
でもここで一蹴するのもよくないので、説明。C#をさわりだけやって挫折した男ですが。
・ public sub new
コンストラクタです。C#でいうvoid (クラス名)かな?
・ public sub(引数)
戻り値の無い関数。引数はかっこの中はC#と同じ。
・ public function(引数) As (データ型)
戻り値のある関数。値を返す時に、
Return(戻り値)と書く。
こんなもんです。
投稿者 匿名  (社会人)
投稿日時
2009/10/10 17:05:34
>C#をさわりだけやって挫折した男ですが
挫折した理由など、よかったらおしえてください。
(悪意はありませんので誤解なきように)
挫折した理由など、よかったらおしえてください。
(悪意はありませんので誤解なきように)
投稿者 wii  (中学生)
投稿日時
2009/10/13 06:42:04
>匿名さん
んーとねえ…
まず、VBから始めたもんでして、C#の行末に;をつけるスタイルに戸惑ったり
たとえばDim i As Integer がint i だったり…
ちょっとした慣れればなんでもないようなことで挫折しました(^_^;)
んーとねえ…
まず、VBから始めたもんでして、C#の行末に;をつけるスタイルに戸惑ったり
たとえばDim i As Integer がint i だったり…
ちょっとした慣れればなんでもないようなことで挫折しました(^_^;)
投稿者 匿名デカ  (中学生)
投稿日時
2009/10/13 07:56:57
宣言がわかんないんじゃ、入門書が必要だ。
c言語も宣言あるでしょ?
.....
.....
あ~。
c言語も宣言あるでしょ?
.....
.....
あ~。
投稿者 八王子5517軽四  ()
投稿日時
2009/10/13 08:00:04
ん~。」2年前から進歩してないな。
やる気あんの?苦笑
やる気あんの?苦笑
投稿者 八王子5517  ()
投稿日時
2009/10/13 10:16:39
アセンブリは今は、ねぇ(無い)んじゃないの?
&H50470215参照とか。
見えないトコで自動処理だろ。
ハッキングで乱数のトコいじる奴がいるんで困るよ。
&H50470215参照とか。
見えないトコで自動処理だろ。
ハッキングで乱数のトコいじる奴がいるんで困るよ。
投稿者 匿名  (社会人)
投稿日時
2009/10/13 18:27:35
wiiさん>
私も最初はC#の本を買い込み、挫折しかけたので、VB2008に切り替えました。
でも、せっかく身銭を切って買った本を無駄にしたくないのでc#のサンプルをVBに書き直すこともしながらC#の勉強もしてます。文法が似ているのでそんなにムズくはないですよ。
私も最初はC#の本を買い込み、挫折しかけたので、VB2008に切り替えました。
でも、せっかく身銭を切って買った本を無駄にしたくないのでc#のサンプルをVBに書き直すこともしながらC#の勉強もしてます。文法が似ているのでそんなにムズくはないですよ。
投稿者 神父  ()
投稿日時
2009/10/13 23:30:41
Cを極めたんなら、簡単じゃないの?
CもBasicも、そっくりだしさww
引数のトコは、もう少し鍛えてから。やれば。
CもBasicも、そっくりだしさww
'#pragma endregion
' //Visual c++
' //Randomクラスをmy_Randomとゆう名前の変数で宣言
'Random^ my_Random;
'private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
' //インスタンス(初期化)
' my_Random = gcnew Random();
' int ketuka;
' ketuka = my_Random->Next(1,10);
' MessageBox::Show(ketuka+" です。");
' }
'↓↓↓
'Basicで同じ処理をしてみる。
Public Class Form1
'Visual Basic
'Randomクラスをmy_Randomとゆう名前の変数で宣言
Dim my_Random As Random
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'//インスタンス(初期化)
my_Random = New Random()
Dim ketuka As Integer
ketuka = my_Random.Next(1, 10)
MessageBox.Show(ketuka & " です。")
End Sub
End Class
引数のトコは、もう少し鍛えてから。やれば。
投稿者 流れ者  (その他)
投稿日時
2009/10/14 19:06:07
おはようございます。
神父さんの意見は少し飛躍過ぎている気が個人的にはしますが。
一つの言語を習得しているのなら、他の言語を習得するのも
難しくは無いと、プログラマの間では昔から言われています。
初めてVB勉強さんは理論でVBを習得しようとしているようですが、
プログラム言語の独学での習得は、学校の勉強とは違い、
「よく分からないけど、こうすれば、こう動く」(実践)からはじまり、後付で
「ここが、こういう意味だから、こう動く」(理論)がついてきます。
今は、なんでも良いので、参考書のサンプルを片っ端から実行して見てください。
多くのサンプルを実行して行くなかで、おのずと構文や関数の理解も深まると思います。
OSが作成できる言語(C言語は元々、UNIXを作成するために作られたプログラム言語です)を
習得できた貴方でしたら、大丈夫です。
神父さんの意見は少し飛躍過ぎている気が個人的にはしますが。
一つの言語を習得しているのなら、他の言語を習得するのも
難しくは無いと、プログラマの間では昔から言われています。
初めてVB勉強さんは理論でVBを習得しようとしているようですが、
プログラム言語の独学での習得は、学校の勉強とは違い、
「よく分からないけど、こうすれば、こう動く」(実践)からはじまり、後付で
「ここが、こういう意味だから、こう動く」(理論)がついてきます。
今は、なんでも良いので、参考書のサンプルを片っ端から実行して見てください。
多くのサンプルを実行して行くなかで、おのずと構文や関数の理解も深まると思います。
OSが作成できる言語(C言語は元々、UNIXを作成するために作られたプログラム言語です)を
習得できた貴方でしたら、大丈夫です。
投稿者 神父  ()
投稿日時
2009/10/15 02:13:34
コンピューター言語は中学生でもできる。と、ある本には書いてあります。
ですが、たとえば、中学2年生の教室Aを40人として
成績を1~40位の範囲数を設定します。
20位あたりならBaiscは覚えれる可能性があります。
ですが39位なら無理な感じがしますね。
本を買う。とか、あるいは努力せずにサンプルをながめているだけでは
なにも得ることはできない。
敷居が低い。とゆう人もいますが、個人差が大きい。
ちなみに、学歴は関係ありません。
ある国立大卒のやつでも、興味がなければ習得の早さも段違いに遅い。
掲示板をウロウロしても駄目ですね。
ですが、たとえば、中学2年生の教室Aを40人として
成績を1~40位の範囲数を設定します。
20位あたりならBaiscは覚えれる可能性があります。
ですが39位なら無理な感じがしますね。
本を買う。とか、あるいは努力せずにサンプルをながめているだけでは
なにも得ることはできない。
敷居が低い。とゆう人もいますが、個人差が大きい。
ちなみに、学歴は関係ありません。
ある国立大卒のやつでも、興味がなければ習得の早さも段違いに遅い。
掲示板をウロウロしても駄目ですね。
C言語がおおよそ掴めたので、
VBの勉強をしています。
そのときにVB中学が良いよと友達が教えて頂いたので、
このページを使って勉強しています。
その管理人さんに一つお聞きしたい事があって掲示板を使わせて頂きました。
申し訳ございませんが、
ご教授して頂けないでしょうか。
減殺、使っているのはExpress Edition 2008なのですが、
関数そのものが理解出来なくて困っています。
というのも、C言語と違ってメモリを意識せずに済むため、
関数がどの様にメモリ上で動き入力に対して出力されるかが、
理解できていません。
なので、アセンブリ言語から解読しようと思っているのですが、
Express Edition 2008ではアセンブリ言語を見る手段は、
無いのでしょうか?
技術的な事では無いかも知れませんが、
どうしても関数の中身がイメージできないので、
VBでプログラムの作成が上手く出来ないで困っています。
アセンブリ言語以外でも良いので、
何かアドバイスを頂けますと幸いです。
よろしくお願いいたします。