3

違いはなんですか?

public write(){
// dostuff
}

上記のコードは、サブルーチン、メソッド、またはプログラム ブロックですか?

これらの用語は意味が似ているのでよくわかりません。

それで、私が非常に厳格で衒学的だったとしたら、それはどちらでしょうか? 私はそれらをサブルーチンと呼ぶ方が好きですが、これは厳密に正しいですか?

プログラミング言語: JAVA

編集:ありがとう、私は今理解しましたが、それを呼び出す最も安全な方法は何ですか? ブロック?複数のプログラミング言語を使用していますが、「ブロック」という用語で十分でしょうか?

関数をブロックと呼ぶことはできますか?

では、すべてをブロックとして参照できますか? 私にとっては簡単ですよね?

ブロックを関数やサブルーチンとは呼びませんが、関数、メソッドなどをブロックとして呼び出します。ブロックと呼んでいいですか?

それで、これはこれがある程度正確であることを意味しますか?ローカル変数は、プログラム ブロックの外部ではアクセスされません (はい、これが当てはまらない状況がいくつかあります)。

4

4 に答える 4

2

戻り値がないため、上記のいずれもありません。write.java という名前のファイルで、write という名前のクラスの引数なしのコンストラクターである場合にのみ、「正しい」と言えます。さらに、Sun Java コーディング標準に違反しています。

サブルーチンは、FORTRAN や COBOL などの関数型/手続き型言語の用語です。これらの言語は、データとメソッドを分離し、与えられたデータで動作するメソッドを保持します。

オブジェクトは、データとメソッドをインスタンスにカプセル化します。ほとんどのオブジェクト指向プログラマーはメソッドを好みます。サブルーチンに対するあなたの「好み」は、あなたを風変わりで調子が悪いとマークします。

「サブルーチン」という言葉をあまり聞きません。私があなただったら、「方法」に慣れるでしょう。

于 2013-05-26T15:02:42.627 に答える
1

そもそも、そこにあるのはコンストラクターであり、メソッドではありません。void(nothing) を返す適切なメソッドは、(C# または Java 構文に従って) 次のようなものになります。

public void write()
{}

さて、あなたが最初に尋ねたことに関して:サブルーチンとメソッドの違いは何ですか?、まあ、基本的にはありません。しかし、さらに深く知りたい場合は、アセンブリ プログラミング IMO に進む必要があります。アセンブリのサブルーチンは、実際には次の 2 つの点でメソッドとは異なります。

  1. パラメータが渡されない
  2. 彼らは何も返さない

そして、おそらくあなたは自問しているでしょう: では、何かを処理するにはどうすればよいでしょうか? このサブルーチンはどのように機能するのでしょうか? アセンブリでは、すべての高級プログラミング言語のメソッドで行うように、パラメーターをサブルーチンに渡すのではなく、レジスターがその役割を果たします。サブルーチンを呼び出す前に処理する値 (パラメーター) を保存する必要があります。サブルーチンに到達する前に、この値が影響を受けないようにしてください。同様に、結果の値を後で使用するために別のレジスタに保持します。アセンブリでこれを行うには、スタックから値をプッシュおよびポップするスタックを使用して、一般的に使用される他の方法もありますが、私の主張は十分に明確になったと思います。何かに役立つ場合は、単純なサブルーチンを使用して2つの数値を追加するアセンブリのコードを投稿します。

org 00H

mov R3,#10                 ;save the first parameter
mov R4,#20                 ;save the second parameter

call Sum                   ;execute the subroutine

mov A,R3                   ;mov 30 to accumulator

Sum:                       ;subroutine declaration
add R3,R4
ret

end
于 2013-05-26T15:21:28.263 に答える