[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.87,0:00:03.31,Default,,0000,0000,0000,,Oke, saya mau merekam\Nsatu video terakhir hari ini Dialogue: 0,0:00:03.31,0:00:07.99,Default,,0000,0000,0000,,Saya baru terpikir ini ketika membuat video tentang bagaimana objek berkomunikasi antara satu dengan lainnya Dialogue: 0,0:00:07.100,0:00:13.42,Default,,0000,0000,0000,,Ada prinsip penting tentang\Nbagaimana variabel dilewatkan sebagai argumen ke fungsi lainnya Dialogue: 0,0:00:13.43,0:00:16.57,Default,,0000,0000,0000,,yang belum disampaikan \Ndi video-video sebelumnya Dialogue: 0,0:00:16.57,0:00:18.61,Default,,0000,0000,0000,,Jadi, saya pikir saya tidak punya contoh untuk ini Dialogue: 0,0:00:18.61,0:00:19.47,Default,,0000,0000,0000,,Saya hanya akan diag... Dialogue: 0,0:00:19.47,0:00:21.60,Default,,0000,0000,0000,,Sampaikan kepada Anda melalui ini dan memperlihatkan susunannya Dialogue: 0,0:00:21.60,0:00:25.12,Default,,0000,0000,0000,,dan kita akan lihat apa yang belum dibahas dan apa yang perlu ditambahkan dan apa yang membingungkan Dialogue: 0,0:00:25.12,0:00:28.20,Default,,0000,0000,0000,,Saya akan mengarang suatu fungsi konyol Dialogue: 0,0:00:28.20,0:00:30.51,Default,,0000,0000,0000,,suatu fungsi yang tidak ada gunanya Dialogue: 0,0:00:30.51,0:00:32.09,Default,,0000,0000,0000,,Saya akan menyebutnya Dialogue: 0,0:00:32.09,0:00:34.00,Default,,0000,0000,0000,,"change" (ubah) Dialogue: 0,0:00:34.26,0:00:36.68,Default,,0000,0000,0000,,dan (fungsi) ini akan menerima Dialogue: 0,0:00:36.68,0:00:39.32,Default,,0000,0000,0000,,suatu angka (val) sebagai argumennya Dialogue: 0,0:00:39.32,0:00:41.91,Default,,0000,0000,0000,,dan di dalam fungsi ini Dialogue: 0,0:00:42.43,0:00:48.28,Default,,0000,0000,0000,,val = val x 2 Dialogue: 0,0:00:48.28,0:00:52.62,Default,,0000,0000,0000,,oke, jadi fungsi ini menerima suatu angka Dialogue: 0,0:00:52.62,0:00:55.25,Default,,0000,0000,0000,,dan mengkalikan angka tersebut dengan dua Dialogue: 0,0:00:55.25,0:00:57.00,Default,,0000,0000,0000,,dan menyimpan hasilnya di dirinya sendiri (val) Dialogue: 0,0:00:57.00,0:00:58.98,Default,,0000,0000,0000,,Jadi, kalau saya bilang "int x" Dialogue: 0,0:00:58.98,0:01:00.15,Default,,0000,0000,0000,,Kamu bisa lihat tidak? Dialogue: 0,0:01:00.15,0:01:01.14,Default,,0000,0000,0000,,Tidak. Saya tulis lebih rendah deh. Dialogue: 0,0:01:01.14,0:01:04.42,Default,,0000,0000,0000,,"int x = 50" Dialogue: 0,0:01:04.42,0:01:08.81,Default,,0000,0000,0000,,lalu saya bilang "change(x)" Dialogue: 0,0:01:08.81,0:01:13.32,Default,,0000,0000,0000,,lalu saya bilang "println(x)" Dialogue: 0,0:01:13.32,0:01:16.49,Default,,0000,0000,0000,,Apa hasil dari "println" ini? Dialogue: 0,0:01:16.49,0:01:17.71,Default,,0000,0000,0000,,Yuk pikirkan ini Dialogue: 0,0:01:17.71,0:01:19.96,Default,,0000,0000,0000,,Nilai "x" adalah 50 Dialogue: 0,0:01:19.96,0:01:23.63,Default,,0000,0000,0000,,"change(x)" artinya\N(nilai) x masuk ke "val" Dialogue: 0,0:01:23.63,0:01:26.07,Default,,0000,0000,0000,,jadi sekarang nilai "val" adalah 50 Dialogue: 0,0:01:26.07,0:01:27.92,Default,,0000,0000,0000,,lalu "val = val x 2" Dialogue: 0,0:01:27.92,0:01:31.32,Default,,0000,0000,0000,,jadi sekarang "val" nilainya 100 Dialogue: 0,0:01:31.32,0:01:34.98,Default,,0000,0000,0000,,tapi ketika saya cetak "x",\Napakah saya akan lihat "100" atau "50"? Dialogue: 0,0:01:34.98,0:01:37.24,Default,,0000,0000,0000,,Pikirkan itu Dialogue: 0,0:01:37.24,0:01:42.19,Default,,0000,0000,0000,,sebagai desainer bahasa pemrograman,\Nterserah kamu memutuskan ini harusnya gimana Dialogue: 0,0:01:42.19,0:01:46.79,Default,,0000,0000,0000,,Bahasa pemrograman Java,\Nyang mana Processing dibangun di atasnya, Dialogue: 0,0:01:46.79,0:01:49.06,Default,,0000,0000,0000,,Yang akan kita lihat adalah angka 50. Dialogue: 0,0:01:49.06,0:01:54.22,Default,,0000,0000,0000,,Kenapa? Ini dikenal sebagai "pass by copy"\N(melewatkan argumen dengan menyalin nilai) Dialogue: 0,0:01:54.22,0:01:56.66,Default,,0000,0000,0000,,Saat kau melewatkan suatu nilai primitif: Dialogue: 0,0:01:56.66,0:02:00.28,Default,,0000,0000,0000,,angka, integer, float, dan sebagainya Dialogue: 0,0:02:00.28,0:02:02.91,Default,,0000,0000,0000,,ke suatu fungsi Dialogue: 0,0:02:02.91,0:02:05.14,Default,,0000,0000,0000,,kau melewatkan salinan dari nilai tersebut Dialogue: 0,0:02:05.14,0:02:06.85,Default,,0000,0000,0000,,artinya, dalam memori komputer, Dialogue: 0,0:02:06.85,0:02:12.70,Default,,0000,0000,0000,,"x" mereferensikan suatu tempat\Ndi memori dengan nilai 50 Dialogue: 0,0:02:12.70,0:02:18.92,Default,,0000,0000,0000,,lalu "val" mereferensikan tempat lain\Ndi memori komputer dengan apa? Dialogue: 0,0:02:18.92,0:02:21.45,Default,,0000,0000,0000,,nilai 50 disalin ke sana Dialogue: 0,0:02:21.45,0:02:25.03,Default,,0000,0000,0000,,lalu di sini, "val" dikalikan 2 Dialogue: 0,0:02:25.03,0:02:27.03,Default,,0000,0000,0000,,"val" sekarang nilainya 100 Dialogue: 0,0:02:27.03,0:02:29.84,Default,,0000,0000,0000,,tapi "x", yang menunjuk ke 50, \Ntidak terpengaruh Dialogue: 0,0:02:29.84,0:02:31.72,Default,,0000,0000,0000,,"Pass by Copy"\N(melewatkan argumen dengan salinan nilai) Dialogue: 0,0:02:31.72,0:02:35.93,Default,,0000,0000,0000,,Alasan kenapa saya bahas ini dan \Nsadar bahwa ini sangat penting Dialogue: 0,0:02:35.93,0:02:39.87,Default,,0000,0000,0000,,Jika kau melewatkan suatu objek ke fungsi,\Ncara kerjanya tidak seperti ini. Dialogue: 0,0:02:39.87,0:02:45.25,Default,,0000,0000,0000,,Cara kerjanya disebut\N"Pass by Reference" Dialogue: 0,0:02:45.25,0:02:48.33,Default,,0000,0000,0000,,Kita anggap ada objek Particle buatan, Dialogue: 0,0:02:48.33,0:02:51.68,Default,,0000,0000,0000,,di mana objek Particle itu cuma punya "x" dan "y" Dialogue: 0,0:02:51.68,0:03:01.28,Default,,0000,0000,0000,,Jadi "Particle p = new Particle(50, 100);" Dialogue: 0,0:03:01.28,0:03:05.40,Default,,0000,0000,0000,,lalu saya bilang "change(p);" Dialogue: 0,0:03:05.40,0:03:09.80,Default,,0000,0000,0000,,lalu ada fungsi yang disebut "void change" Dialogue: 0,0:03:09.80,0:03:14.99,Default,,0000,0000,0000,,yang menerima objek Particle, yang disebut Dialogue: 0,0:03:14.99,0:03:18.55,Default,,0000,0000,0000,,"blah". Cuma butuh nama variabel \Nyang berbeda. (nama) ini jelek. Dialogue: 0,0:03:18.55,0:03:23.08,Default,,0000,0000,0000,,ah... sebal saya buat nama variabel "blah"\Nmari pikirkan sesuatu... Dialogue: 0,0:03:23.08,0:03:25.85,Default,,0000,0000,0000,,saya mau menyebutnya "aP" Dialogue: 0,0:03:25.85,0:03:28.85,Default,,0000,0000,0000,,"a Particle". "aP" Dialogue: 0,0:03:28.85,0:03:35.14,Default,,0000,0000,0000,,kalau saya bilang "aP.x = 300;" Dialogue: 0,0:03:35.14,0:03:37.66,Default,,0000,0000,0000,,Apa yang terjadi? Dialogue: 0,0:03:37.67,0:03:43.100,Default,,0000,0000,0000,,oke, jadi (bagian) ini setara dengan \N"int x = 50; change(x);" Dialogue: 0,0:03:43.100,0:03:47.36,Default,,0000,0000,0000,,sekarang saya nyatakan \N"Particle p = new Particle; change(p);" Dialogue: 0,0:03:47.36,0:03:48.74,Default,,0000,0000,0000,,fungsi "change()" ini, Dialogue: 0,0:03:48.74,0:03:53.03,Default,,0000,0000,0000,,alih-alih mengkalikan dengan 2,\Nsaya set nilainya jadi 300 Dialogue: 0,0:03:53.03,0:03:57.68,Default,,0000,0000,0000,,dan ingat sebelumnya bahwa x = 50\Ndan y = 100 Dialogue: 0,0:03:57.68,0:04:00.37,Default,,0000,0000,0000,,Jadi, di sini saya punya partikel p Dialogue: 0,0:04:00.37,0:04:02.76,Default,,0000,0000,0000,,dan "p" menunjuk ke suatu tempat \Ndi memori komputer Dialogue: 0,0:04:02.76,0:04:06.59,Default,,0000,0000,0000,,di mana "50" dan "100" disimpan Dialogue: 0,0:04:06.59,0:04:09.97,Default,,0000,0000,0000,,sekarang di sini saya buat partikel baru\Nnamanya "aP" Dialogue: 0,0:04:09.97,0:04:13.11,Default,,0000,0000,0000,,- Dialogue: 0,0:04:13.11,0:04:16.38,Default,,0000,0000,0000,,Saya tidak membuat objek baru. Dialogue: 0,0:04:16.38,0:04:20.75,Default,,0000,0000,0000,,Saat kau melewatkan objek ke suatu fungsi,\Nkau memberikan referensinya Dialogue: 0,0:04:20.75,0:04:26.06,Default,,0000,0000,0000,,Lokasi data dalam memori,\Nbukan salinan datanya. Dialogue: 0,0:04:26.06,0:04:29.06,Default,,0000,0000,0000,,Jadi, "aP" sebenarnya menunjuk ke sini... Dialogue: 0,0:04:29.06,0:04:34.39,Default,,0000,0000,0000,,dan jika saya mengubah aspek, parameter, \Ndata objek tersebut Dialogue: 0,0:04:34.39,0:04:39.08,Default,,0000,0000,0000,,misal "x" jadi "300".\NSaya mengubah variabel asalnya juga. Dialogue: 0,0:04:39.08,0:04:41.09,Default,,0000,0000,0000,,"Pass by Reference"\N(mengoper dengan referensi) Dialogue: 0,0:04:41.09,0:04:42.40,Default,,0000,0000,0000,,Jadi, di Java Dialogue: 0,0:04:42.40,0:04:46.70,Default,,0000,0000,0000,,saat kau mengoper nilai primitif \Nke suatu fungsi, sebagai argumennya, Dialogue: 0,0:04:46.70,0:04:50.03,Default,,0000,0000,0000,,kau membuat salinannya dan \Nvariabel aslinya tidak terpengaruh Dialogue: 0,0:04:50.03,0:04:52.95,Default,,0000,0000,0000,,ketika kau melewatkan objek \Nke suatu fungsi, Dialogue: 0,0:04:52.95,0:04:55.50,Default,,0000,0000,0000,,kau hanya kirim referensinya saja Dialogue: 0,0:04:55.50,0:04:59.00,Default,,0000,0000,0000,,dan jika kau ubah objeknya di fungsi itu,\Nini juga akan berubah Dialogue: 0,0:04:59.00,0:05:03.22,Default,,0000,0000,0000,,Izinkan saya menunjukkan skenario\Ndi mana hal ini penting Dialogue: 0,0:05:03.22,0:05:06.08,Default,,0000,0000,0000,,Jadi, kalau kita kembali ke sini... Dialogue: 0,0:05:07.16,0:05:10.38,Default,,0000,0000,0000,,... Ini adalah contoh di mana saya cuma\Nmengganti warna latar belakangnya... Dialogue: 0,0:05:10.38,0:05:16.46,Default,,0000,0000,0000,,Jadi saya akan simpan ini sebagai "ver_2" Dialogue: 0,0:05:16.46,0:05:20.55,Default,,0000,0000,0000,,saya cuma mau buat suatu fungsi \Nyang dipanggil "p1.overlaps(p2)" Dialogue: 0,0:05:20.55,0:05:24.50,Default,,0000,0000,0000,,dan ini tidak akan mengembalikan \N"true" atau "false" lagi Dialogue: 0,0:05:24.50,0:05:28.87,Default,,0000,0000,0000,,oke, dan di fungsi tersebut,\Nini hanya void Dialogue: 0,0:05:28.87,0:05:32.76,Default,,0000,0000,0000,,ini akan mengerjakan sesuatu \Njika mereka overlap Dialogue: 0,0:05:32.76,0:05:34.33,Default,,0000,0000,0000,,dan apa yang akan saya lakukan? Dialogue: 0,0:05:34.33,0:05:39.47,Default,,0000,0000,0000,,saya akan beri partikelnya dengan "color"\N(warna) Dialogue: 0,0:05:39.47,0:05:45.94,Default,,0000,0000,0000,,dan warnanya akan menjadi \Nhitam pada awalnya Dialogue: 0,0:05:45.94,0:05:49.17,Default,,0000,0000,0000,,dan isi dengan warna itu Dialogue: 0,0:05:49.17,0:05:57.53,Default,,0000,0000,0000,,dan ketika ini tumpang-tindih,\N"other.col" menjadi merah Dialogue: 0,0:05:57.53,0:06:01.72,Default,,0000,0000,0000,,jika tidak, "other.col" sama dengan hitam Dialogue: 0,0:06:01.72,0:06:04.07,Default,,0000,0000,0000,,Jadi, saya tahu \Nsaya melakukan ini dengan cepat Dialogue: 0,0:06:04.07,0:06:06.98,Default,,0000,0000,0000,,mungkin kamu bisa mengikuti atau tidak... Dialogue: 0,0:06:06.98,0:06:11.60,Default,,0000,0000,0000,,Tapi izinkan saya menunjukkan\Nkenapa ini SANGAT PENTING Dialogue: 0,0:06:11.89,0:06:15.22,Default,,0000,0000,0000,,Perhatikan saat mereka tumpang-tindih,\Npartikel ini akan berubah warnanya Dialogue: 0,0:06:15.22,0:06:19.46,Default,,0000,0000,0000,,Saya melewatkan p2 ke fungsi tersebut Dialogue: 0,0:06:19.46,0:06:21.06,Default,,0000,0000,0000,,Salinan tidak dibuat Dialogue: 0,0:06:21.06,0:06:24.11,Default,,0000,0000,0000,,Saya memberikan \Nreferensi ke objek sebenarnya Dialogue: 0,0:06:24.11,0:06:27.06,Default,,0000,0000,0000,,dan "p2", referensi ke objek tersebut,\Nmasuk ke "other" Dialogue: 0,0:06:27.06,0:06:30.55,Default,,0000,0000,0000,,Dan sekarang saya mengubah \Nnilai dari "other". Dialogue: 0,0:06:30.55,0:06:35.05,Default,,0000,0000,0000,,Jika saya mengubah nilai "other", artinya \Nsaya sebenarnya mengubah nilai "p2" Dialogue: 0,0:06:35.05,0:06:37.45,Default,,0000,0000,0000,,dan sekarang "p2" menjadi merah. Dialogue: 0,0:06:37.45,0:06:40.41,Default,,0000,0000,0000,,Saya juga bisa bilang... Dialogue: 0,0:06:40.41,0:06:44.83,Default,,0000,0000,0000,,warna objek ini adalah hijau Dialogue: 0,0:06:44.83,0:06:49.38,Default,,0000,0000,0000,,saya beri masing-masing suatu alfa kecil Dialogue: 0,0:06:54.34,0:06:57.18,Default,,0000,0000,0000,,Jadi jika kita perhatikan sekarang, \Nkamu bisa lihat sekarang... Dialogue: 0,0:06:57.18,0:06:58.49,Default,,0000,0000,0000,,Keduanya hitam... Dialogue: 0,0:06:58.49,0:07:00.02,Default,,0000,0000,0000,,Satu berubah hijau, satu berubah merah... Dialogue: 0,0:07:00.02,0:07:01.80,Default,,0000,0000,0000,,Satu berubah hijau, satu berubah merah... Dialogue: 0,0:07:01.80,0:07:03.20,Default,,0000,0000,0000,,Hal lain yang perlu diperhatikan adalah Dialogue: 0,0:07:03.20,0:07:07.22,Default,,0000,0000,0000,,sepertinya di versi program aslinya \N(sebelumnya), Dialogue: 0,0:07:07.22,0:07:11.72,Default,,0000,0000,0000,,p1 overlap p2 adalah sama dengan \Np2 overlap p1. Dialogue: 0,0:07:11.72,0:07:13.91,Default,,0000,0000,0000,,Tapi sekarang kalau saya ubah itu, Dialogue: 0,0:07:13.91,0:07:17.70,Default,,0000,0000,0000,,karena saya beri p2 ke fungsi itu, \Np2 berubah hijau dan satunya jadi merah. Dialogue: 0,0:07:17.70,0:07:21.47,Default,,0000,0000,0000,,Jadi, ada banyak yang asal-asalan \Ndalam contoh buatan ini Dialogue: 0,0:07:21.47,0:07:24.03,Default,,0000,0000,0000,,Tapi saya pikir ini penting untuk disadari Dialogue: 0,0:07:24.03,0:07:25.70,Default,,0000,0000,0000,,bahwa jika kamu mengirimkan Dialogue: 0,0:07:25.70,0:07:30.09,Default,,0000,0000,0000,,objek ini ke suatu fungsi, kamu bisa \Nubah objek itu dalam fungsi itu sendiri Dialogue: 0,0:07:30.09,0:07:34.01,Default,,0000,0000,0000,,oke, jadi saya tidak tahu apakah ini bisa \Nmembuatmu lebih paham atau makin bingung Dialogue: 0,0:07:34.01,0:07:35.73,Default,,0000,0000,0000,,Saya pikir saya sudah sampaikan\Ndi video terakhir Dialogue: 0,0:07:35.73,0:07:40.66,Default,,0000,0000,0000,,Tapi saya hari ini hanya merangkum semua \Nvideo dan coba buat konten kecil ekstra Dialogue: 0,0:07:40.66,0:07:43.73,Default,,0000,0000,0000,,Video ini cuma 7 menit, \Nyang mana tidak terlalu buruk Dialogue: 0,0:07:43.73,0:07:45.03,Default,,0000,0000,0000,,oke, sampai jumpa