< Return to Video

8.6: Pass by Value vs. Pass by Reference - Processing Tutorial

  • 0:01 - 0:03
    Oke, saya mau merekam
    satu video terakhir hari ini
  • 0:03 - 0:08
    Saya baru terpikir ini ketika membuat video tentang bagaimana objek berkomunikasi antara satu dengan lainnya
  • 0:08 - 0:13
    Ada prinsip penting tentang
    bagaimana variabel dilewatkan sebagai argumen ke fungsi lainnya
  • 0:13 - 0:17
    yang belum disampaikan
    di video-video sebelumnya
  • 0:17 - 0:19
    Jadi, saya pikir saya tidak punya contoh untuk ini
  • 0:19 - 0:19
    Saya hanya akan diag...
  • 0:19 - 0:22
    Sampaikan kepada Anda melalui ini dan memperlihatkan susunannya
  • 0:22 - 0:25
    dan kita akan lihat apa yang belum dibahas dan apa yang perlu ditambahkan dan apa yang membingungkan
  • 0:25 - 0:28
    Saya akan mengarang suatu fungsi konyol
  • 0:28 - 0:31
    suatu fungsi yang tidak ada gunanya
  • 0:31 - 0:32
    Saya akan menyebutnya
  • 0:32 - 0:34
    "change" (ubah)
  • 0:34 - 0:37
    dan (fungsi) ini akan menerima
  • 0:37 - 0:39
    suatu angka (val) sebagai argumennya
  • 0:39 - 0:42
    dan di dalam fungsi ini
  • 0:42 - 0:48
    val = val x 2
  • 0:48 - 0:53
    oke, jadi fungsi ini menerima suatu angka
  • 0:53 - 0:55
    dan mengkalikan angka tersebut dengan dua
  • 0:55 - 0:57
    dan menyimpan hasilnya di dirinya sendiri (val)
  • 0:57 - 0:59
    Jadi, kalau saya bilang "int x"
  • 0:59 - 1:00
    Kamu bisa lihat tidak?
  • 1:00 - 1:01
    Tidak. Saya tulis lebih rendah deh.
  • 1:01 - 1:04
    "int x = 50"
  • 1:04 - 1:09
    lalu saya bilang "change(x)"
  • 1:09 - 1:13
    lalu saya bilang "println(x)"
  • 1:13 - 1:16
    Apa hasil dari "println" ini?
  • 1:16 - 1:18
    Yuk pikirkan ini
  • 1:18 - 1:20
    Nilai "x" adalah 50
  • 1:20 - 1:24
    "change(x)" artinya
    (nilai) x masuk ke "val"
  • 1:24 - 1:26
    jadi sekarang nilai "val" adalah 50
  • 1:26 - 1:28
    lalu "val = val x 2"
  • 1:28 - 1:31
    jadi sekarang "val" nilainya 100
  • 1:31 - 1:35
    tapi ketika saya cetak "x",
    apakah saya akan lihat "100" atau "50"?
  • 1:35 - 1:37
    Pikirkan itu
  • 1:37 - 1:42
    sebagai desainer bahasa pemrograman,
    terserah kamu memutuskan ini harusnya gimana
  • 1:42 - 1:47
    Bahasa pemrograman Java,
    yang mana Processing dibangun di atasnya,
  • 1:47 - 1:49
    Yang akan kita lihat adalah angka 50.
  • 1:49 - 1:54
    Kenapa? Ini dikenal sebagai "pass by copy"
    (melewatkan argumen dengan menyalin nilai)
  • 1:54 - 1:57
    Saat kau melewatkan suatu nilai primitif:
  • 1:57 - 2:00
    angka, integer, float, dan sebagainya
  • 2:00 - 2:03
    ke suatu fungsi
  • 2:03 - 2:05
    kau melewatkan salinan dari nilai tersebut
  • 2:05 - 2:07
    artinya, dalam memori komputer,
  • 2:07 - 2:13
    "x" mereferensikan suatu tempat
    di memori dengan nilai 50
  • 2:13 - 2:19
    lalu "val" mereferensikan tempat lain
    di memori komputer dengan apa?
  • 2:19 - 2:21
    nilai 50 disalin ke sana
  • 2:21 - 2:25
    lalu di sini, "val" dikalikan 2
  • 2:25 - 2:27
    "val" sekarang nilainya 100
  • 2:27 - 2:30
    tapi "x", yang menunjuk ke 50,
    tidak terpengaruh
  • 2:30 - 2:32
    "Pass by Copy"
    (melewatkan argumen dengan salinan nilai)
  • 2:32 - 2:36
    Alasan kenapa saya bahas ini dan
    sadar bahwa ini sangat penting
  • 2:36 - 2:40
    Jika kau melewatkan suatu objek ke fungsi,
    cara kerjanya tidak seperti ini.
  • 2:40 - 2:45
    Cara kerjanya disebut
    "Pass by Reference"
  • 2:45 - 2:48
    Kita anggap ada objek Particle buatan,
  • 2:48 - 2:52
    di mana objek Particle itu cuma punya "x" dan "y"
  • 2:52 - 3:01
    Jadi "Particle p = new Particle(50, 100);"
  • 3:01 - 3:05
    lalu saya bilang "change(p);"
  • 3:05 - 3:10
    lalu ada fungsi yang disebut "void change"
  • 3:10 - 3:15
    yang menerima objek Particle, yang disebut
  • 3:15 - 3:19
    "blah". Cuma butuh nama variabel
    yang berbeda. (nama) ini jelek.
  • 3:19 - 3:23
    ah... sebal saya buat nama variabel "blah"
    mari pikirkan sesuatu...
  • 3:23 - 3:26
    saya mau menyebutnya "aP"
  • 3:26 - 3:29
    "a Particle". "aP"
  • 3:29 - 3:35
    kalau saya bilang "aP.x = 300;"
  • 3:35 - 3:38
    Apa yang terjadi?
  • 3:38 - 3:44
    oke, jadi (bagian) ini setara dengan
    "int x = 50; change(x);"
  • 3:44 - 3:47
    sekarang saya nyatakan
    "Particle p = new Particle; change(p);"
  • 3:47 - 3:49
    fungsi "change()" ini,
  • 3:49 - 3:53
    alih-alih mengkalikan dengan 2,
    saya set nilainya jadi 300
  • 3:53 - 3:58
    dan ingat sebelumnya bahwa x = 50
    dan y = 100
  • 3:58 - 4:00
    Jadi, di sini saya punya partikel p
  • 4:00 - 4:03
    dan "p" menunjuk ke suatu tempat
    di memori komputer
  • 4:03 - 4:07
    di mana "50" dan "100" disimpan
  • 4:07 - 4:10
    sekarang di sini saya buat partikel baru
    namanya "aP"
  • 4:10 - 4:13
    -
  • 4:13 - 4:16
    Saya tidak membuat objek baru.
  • 4:16 - 4:21
    Saat kau melewatkan objek ke suatu fungsi,
    kau memberikan referensinya
  • 4:21 - 4:26
    Lokasi data dalam memori,
    bukan salinan datanya.
  • 4:26 - 4:29
    Jadi, "aP" sebenarnya menunjuk ke sini...
  • 4:29 - 4:34
    dan jika saya mengubah aspek, parameter,
    data objek tersebut
  • 4:34 - 4:39
    misal "x" jadi "300".
    Saya mengubah variabel asalnya juga.
  • 4:39 - 4:41
    "Pass by Reference"
    (mengoper dengan referensi)
  • 4:41 - 4:42
    Jadi, di Java
  • 4:42 - 4:47
    saat kau mengoper nilai primitif
    ke suatu fungsi, sebagai argumennya,
  • 4:47 - 4:50
    kau membuat salinannya dan
    variabel aslinya tidak terpengaruh
  • 4:50 - 4:53
    ketika kau melewatkan objek
    ke suatu fungsi,
  • 4:53 - 4:56
    kau hanya kirim referensinya saja
  • 4:56 - 4:59
    dan jika kau ubah objeknya di fungsi itu,
    ini juga akan berubah
  • 4:59 - 5:03
    Izinkan saya menunjukkan skenario
    di mana hal ini penting
  • 5:03 - 5:06
    Jadi, kalau kita kembali ke sini...
  • 5:07 - 5:10
    ... Ini adalah contoh di mana saya cuma
    mengganti warna latar belakangnya...
  • 5:10 - 5:16
    Jadi saya akan simpan ini sebagai "ver_2"
  • 5:16 - 5:21
    saya cuma mau buat suatu fungsi
    yang dipanggil "p1.overlaps(p2)"
  • 5:21 - 5:24
    dan ini tidak akan mengembalikan
    "true" atau "false" lagi
  • 5:24 - 5:29
    oke, dan di fungsi tersebut,
    ini hanya void
  • 5:29 - 5:33
    ini akan mengerjakan sesuatu
    jika mereka overlap
  • 5:33 - 5:34
    dan apa yang akan saya lakukan?
  • 5:34 - 5:39
    saya akan beri partikelnya dengan "color"
    (warna)
  • 5:39 - 5:46
    dan warnanya akan menjadi
    hitam pada awalnya
  • 5:46 - 5:49
    dan isi dengan warna itu
  • 5:49 - 5:58
    dan ketika ini tumpang-tindih,
    "other.col" menjadi merah
  • 5:58 - 6:02
    jika tidak, "other.col" sama dengan hitam
  • 6:02 - 6:04
    Jadi, saya tahu
    saya melakukan ini dengan cepat
  • 6:04 - 6:07
    mungkin kamu bisa mengikuti atau tidak...
  • 6:07 - 6:12
    Tapi izinkan saya menunjukkan
    kenapa ini SANGAT PENTING
  • 6:12 - 6:15
    Perhatikan saat mereka tumpang-tindih,
    partikel ini akan berubah warnanya
  • 6:15 - 6:19
    Saya melewatkan p2 ke fungsi tersebut
  • 6:19 - 6:21
    Salinan tidak dibuat
  • 6:21 - 6:24
    Saya memberikan
    referensi ke objek sebenarnya
  • 6:24 - 6:27
    dan "p2", referensi ke objek tersebut,
    masuk ke "other"
  • 6:27 - 6:31
    Dan sekarang saya mengubah
    nilai dari "other".
  • 6:31 - 6:35
    Jika saya mengubah nilai "other", artinya
    saya sebenarnya mengubah nilai "p2"
  • 6:35 - 6:37
    dan sekarang "p2" menjadi merah.
  • 6:37 - 6:40
    Saya juga bisa bilang...
  • 6:40 - 6:45
    warna objek ini adalah hijau
  • 6:45 - 6:49
    saya beri masing-masing suatu alfa kecil
  • 6:54 - 6:57
    Jadi jika kita perhatikan sekarang,
    kamu bisa lihat sekarang...
  • 6:57 - 6:58
    Keduanya hitam...
  • 6:58 - 7:00
    Satu berubah hijau, satu berubah merah...
  • 7:00 - 7:02
    Satu berubah hijau, satu berubah merah...
  • 7:02 - 7:03
    Hal lain yang perlu diperhatikan adalah
  • 7:03 - 7:07
    sepertinya di versi program aslinya
    (sebelumnya),
  • 7:07 - 7:12
    p1 overlap p2 adalah sama dengan
    p2 overlap p1.
  • 7:12 - 7:14
    Tapi sekarang kalau saya ubah itu,
  • 7:14 - 7:18
    karena saya beri p2 ke fungsi itu,
    p2 berubah hijau dan satunya jadi merah.
  • 7:18 - 7:21
    Jadi, ada banyak yang asal-asalan
    dalam contoh buatan ini
  • 7:21 - 7:24
    Tapi saya pikir ini penting untuk disadari
  • 7:24 - 7:26
    bahwa jika kamu mengirimkan
  • 7:26 - 7:30
    objek ini ke suatu fungsi, kamu bisa
    ubah objek itu dalam fungsi itu sendiri
  • 7:30 - 7:34
    oke, jadi saya tidak tahu apakah ini bisa
    membuatmu lebih paham atau makin bingung
  • 7:34 - 7:36
    Saya pikir saya sudah sampaikan
    di video terakhir
  • 7:36 - 7:41
    Tapi saya hari ini hanya merangkum semua
    video dan coba buat konten kecil ekstra
  • 7:41 - 7:44
    Video ini cuma 7 menit,
    yang mana tidak terlalu buruk
  • 7:44 - 7:45
    oke, sampai jumpa
Title:
8.6: Pass by Value vs. Pass by Reference - Processing Tutorial
Description:

more » « less
Video Language:
English
Duration:
07:45

Indonesian subtitles

Revisions