Apa yang dimaksud dengan "argumen dummy"?

8

Apa artinya ketika suatu argumen ke suatu fungsi disebut argumen dummy ? Saya belum menemukan istilah ini di luar Fortran, apakah ini istilah umum dalam ilmu komputer? Apa yang akan menjadi contoh argumen yang diteruskan sebagai dummy dan tidak dianggap sebagai dummy?

Saya menemukan definisi ini , yang saya tidak yakin saya mengerti, tetapi kedengarannya seperti argumen dummy adalah variabel yang dilewatkan oleh referensi, dalam hal mana dalam Fortran semua variabel adalah variabel dummy? (bingung)

Sunting: Saya baru saja menemukan esai berikut yang membantu saya untuk memahami argumen / fungsi Fortran yang lebih baik memanggil teminologi: Dortor Fortran: Saya datang ke sini untuk berdebat

Kyss Tao
sumber
Menemukan posting ini di situs intel untuk membantu! software.intel.com/en-us/…
user515577

Jawaban:

15

"Dummy" sebagai "tidak digunakan"

Secara umum (bukan dalam Fortran) argumen dummy adalah argumen yang tidak akan digunakan oleh tubuh fungsi.

Misalnya, dalam fungsi berikut, zadalah argumen dummy tetapi xdan ytidak.

int f(int x, int y, int z) {
  return (x + y);
}

Mereka dapat digunakan karena beberapa alasan:

  • tergantung pada argumen lain atau konfigurasi tertentu, argumen tersebut akan digunakan (bukan dummy) dan kadang-kadang tidak (dummy) tetapi pengaturan pemrograman memaksakan untuk meneruskan argumen. Dalam hal itu, Anda biasanya dapat meneruskan apa saja ke fungsi, yaitu NULLatau 0, tergantung pada pengaturan;

  • argumen tidak lagi diperlukan, tetapi Anda harus memberikan satu untuk alasan kompatibilitas mundur;

  • fungsi tidak mengambil argumen apa pun (bisa disebut prosedur) tetapi pengaturan memaksakan untuk memberikan setidaknya argumen. Anda dapat menemukan ini dalam bahasa pemrograman fungsional tidak murni tetapi secara umum tidak disebut "dummy" karena tipe ( unitdalam ocaml ) menyarankannya.

"Dummy" di Fortran dan Pascal

Dalam Fortran dan Pascal, dan mungkin dalam kasus Anda, ada gagasan yang lebih kabur dari argumen boneka-objek yang dilewatkan yang gagal saya pahami. Tetapi tampaknya lebih menyangkut spesifikasi daripada prosedur berlalunya argumen yang sebenarnya. (Beberapa penjelasan: tautan 1 dengan kedua bahasa , tautan 2 dalam bahasa Prancis ).

Saya tidak tahu apakah gagasan ini masih digunakan.

"Dummy" sebagai "terikat"

Saya tidak akan menyarankan terminologi ini dalam hal apapun, tetapi "variabel dummy" dapat berarti "variabel terikat" tetapi gagasan ini lebih merupakan hal matematika dan ilmu komputer.

jmad
sumber
Pemahaman saya (catatan: Saya tahu semantik bahasa Prancis dan bahasa pemrograman tetapi bukan Fortran) adalah bahwa "argumen dummy", dalam semua 3 tautan di bagian Fortran / Pascal Anda, berarti argumen yang merupakan nama lokal untuk objek yang dilewatkan dengan referensi.
Gilles 'SO- stop being evil'
16

Dalam fortran, argumen dummy adalah apa yang oleh bahasa lain disebut sebagai argumen formal . Jadi argumen dummy adalah daftar argumen dalam definisi fungsi (atau subrutin).

The argumen yang sebenarnya adalah daftar argumen dalam daftar panggilan, pada titik dalam kode sumber di mana fungsi ini disebut (yaitu digunakan).

Paul
sumber
2
Ini adalah satu-satunya jawaban yang benar di sini mengenai makna Fortran.
Vladimir F
3

Suatu fungsi didefinisikan dengan baik sebagai: hubungan antara satu set input dan satu set output yang diizinkan . Variabel dummy adalah input yang tidak berpengaruh pada output.

Dalam "C" fungsi waktu mengambil pointer ke objek time_t sebagai input. Karena pointer ini hanya digunakan untuk mendapatkan output, itu bisa dianggap sebagai "variabel dummy".

gam3
sumber
bukankah akan lebih akurat untuk menyebutnya variabel output? Bahkan, dalam beberapa pengaturan (misalnya dalam C #), itu sebenarnya akan diberi kata kunci "keluar" untuk label sebagai parameter keluar.
Joe
1

Argumen dummy sebenarnya adalah argumen dalam fungsi yang tidak digunakan dalam fungsi melainkan diganti dalam ekspresi fungsi saat direferensikan

David
sumber
Hai. Terima kasih atas jawabannya, tetapi apa yang baru yang dibawanya di atas jawaban yang ada? Lihat FAQ kami dan bagaimana mendapatkan FAQ jawaban yang bagus .
Ran G.