Apakah operator penugasan ditulis dengan benar dalam Pascal. operator penugasan. Input, output, operator penugasan

Jenis pelajaran:

  • pendidikan. Siswa diperkenalkan dengan operator bahasa Pascal yang baru;
  • pengulangan tema Memori batin komputer";
  • memperkuat pengetahuan yang diperoleh.

Topik pelajaran:“Pemrograman dalam Pascal. operator penugasan.

Sasaran:

  • Perkenalkan konsep "Operator Penugasan".
  • Bedakan operasi yang berlaku untuk bilangan bulat dan bilangan real.
  • Menyusun dan mengevaluasi ekspresi dengan benar menggunakan operator penugasan.
  • Menulis program untuk tugas-tugas sederhana.

Durasi pelajaran: 1 jam 30 menit.

SELAMA KELAS

Pelajaran pertama

1. Pengulangan topik pelajaran sebelumnya "Tipe Data". Contoh penggunaan kata-kata yang terdengar sama tetapi memiliki makna yang berbeda.

Guru dan siswa bekerja dalam bentuk “tanya jawab” (10 menit).

2. Guru menjelaskan topik baru dengan menggunakan presentasi pelajaran multimedia “Pemrograman dalam Pascal. operator penugasan. Definisi konsep "operator penugasan" diberikan, bentuk umum dan struktural dari operator diberikan. Sebelum mempertimbangkan pekerjaan operator penugasan, kami mengingat dan mengulangi topik “Memori Akses Acak, Properti Memori akses acak».

Disertai dengan presentasi. Lampiran 1 (15 menit).

3. Siswa bekerja secara mandiri, membaca dan mencatat topik baru (presentasi pelajaran direkam sebelumnya di komputer siswa, pertanyaan untuk mencatat ditentukan oleh guru). Di sini, siswa dapat mengenal teks-teks program yang menggunakan operator penugasan. Lampiran 2(20 menit).

Pelajaran kedua

4. Siswa bekerja di papan tulis, melakukan latihan (12-15 menit).
1. Guru melakukan pengendalian pengetahuan dalam bentuk tes. Program tes direkam sebelumnya di komputer siswa. Skor ditentukan oleh program. Lampiran 5(10 menit).
5. Siswa melakukan sedikit pekerjaan mandiri pada kartu, atau menulis dan men-debug program di LPL Pascal, yang menggunakan operator penugasan (guru memanggil nomor kartu dengan tugas). Siswa dinilai untuk pekerjaan mereka. Lampiran 3 . Lampiran 4(15 menit).
Pekerjaan rumah. Siswa diajak untuk menulis teks program sederhana di LPL Pascal yang menggunakan operator penugasan (untuk siswa yang tidak sempat menyelesaikan tugas di kelas).

Temuan:

  • Melalui blok 1 pengulangan topik pelajaran sebelumnya.
  • Melalui blok 2, 3 dan 4, topik baru “Operator Penugasan” diberikan dan diperbaiki.
  • Melalui blok 5 dan 6, kontrol pengetahuan dilakukan.

Pemrograman dalam Pascal

Pelajaran #1 (2 jam). Variabel dan konstanta. operator penugasan

  1. Memeriksa pekerjaan rumah.
  2. Topik baru.
  3. Pekerjaan rumah.

Memeriksa pekerjaan rumah.

2. Topik baru: “Variabel dan konstanta. Operator Penugasan"

Variabel - adalah nama area memori (ukuran area tergantung pada tipe data) yang menyimpan nilai yang diberikan ke variabel. Variabel dapat dibandingkan dengan kotak yang berisi nilai (perbandingan terbaik adalah dengan gedung apartemen, karena Anda dapat mengeluarkan sesuatu dari kotak dan itu akan menjadi yang terakhir, mis. kotak tetap kosong, dan variabelnya, genap jika digunakan, tetap berada di area memori).
Konstan - memperbaiki nilai numerik atau teks tunggal yang tidak dapat diubah selama eksekusi program.
operator penugasan. Salah satu operator yang paling banyak digunakan operator penugasan. Tampilan umum dari operator penugasan:

nama variabel:= ekspresi;

Ekspresi dapat berupa nilai tertentu (yaitu bilangan bulat atau bilangan real, misalnya, 22 atau 2,5, nilai simbolis: "ABC", nilai logis: BENAR atau SALAH), dan beberapa ekspresi (nilai + operasi pada mereka), yang hasilnya akan ditugaskan ke variabel di sisi kiri.

CONTOH:

PAG:= 10;(nilai spesifik sebagai angka);
X:= X + 1;(ekspresi);
C:=B;(nama variabel);
G:= 'HALO'; ( nilai simbolik tertentu);
X:= (-A + SIN(Y) - 4 * B * X) / (2 * C);(ekspresi matematika);
Y:= BENAR;(nilai logika tertentu).

Perbedaan antara operasi penugasan dalam matematika dan pemrograman.

Dalam matematika, ungkapan = in berarti nilai yang dihitung untuk a dan b harus sama.
Dalam pemrograman, A := B dipahami berarti bahwa nilai yang disimpan di area memori bernama B ditempatkan di area memori bernama A. Oleh karena itu, ekspresi invers
B:= A memberikan hasil yang berbeda.
Contoh: Nilai 5 dan 9 masing-masing ditempatkan di A dan B.

J: = 5;
B:=9

a) Hasil operasi A:= B;

b) Hasil operasi B:= A;

Berikut adalah perbedaan signifikan lainnya antara tanda sama dengan dan operator penugasan: A = A + 1;
Dalam matematika, ungkapan seperti itu tidak ada artinya, karena identitasnya salah. Tidak ada nilai numerik A yang benar. Dalam pemrograman, ini berarti 1 ditambahkan ke nilai yang disimpan di sel A, dan nilai yang baru diperoleh menggantikan yang lama di sel A. Misalnya, jika A memiliki nilai 5 sebelum mengeksekusi pernyataan ini, maka setelah eksekusi akan menjadi 6.

Perbedaan selanjutnya: ekspresi matematis A + 9 - B = X cukup masuk akal dan dapat berarti bahwa ketika Anda mengganti beberapa angka alih-alih A dan B di sisi kiri ekspresi, Anda akan mendapatkan N. Pada saat yang sama, di memprogram ekspresi ini tidak ada artinya, karena sisi kiri ekspresi harus berisi nama area memori tempat nilai yang dihitung di sisi kanan ditetapkan. Jika Anda mencoba memasukkan ekspresi seperti itu ke dalam program Anda, Anda akan mendapatkan pesan kesalahan, karena nama variabelnya adalah A + 9 - B tidak akan mengerti.

tulis dalam bentuk biasa:

(- b + sqrt(sqr(b) - 4 * a * c))/(2 * a);
a / b * (c + d) - (a - b) / b / c + 1E - 8;

Bibliografi:

  • V.B. Popov"TURBO PASCAL untuk anak sekolah I", "Keuangan dan statistik", Moskow, 1996
  • A A. Cherno dalam "Sinopsis pelajaran ilmu komputer di kelas 9 - 11", "Guru", Volgograd, 2004.
  • DM Zlatopolsky“Saya akan pergi ke kelas ilmu komputer. Masalah dalam pemrograman, kelas 7 - 11", "Pertama September", Moskow, 2001.

Operator- perintah untuk melakukan tindakan tertentu. Bahasa pemrograman Pascal berisi 11 operator.

Operator penugasan dalam Pascal

Operator penugasan adalah operator yang paling umum digunakan di Turbo Pascal.

Format rekaman: X:=A;
di mana: X– nama variabel;
SEBUAH- ekspresi ;
:= - tanda tugas.

Pekerjaan operator: Selama eksekusi pernyataan, nilai di sisi kanan ekspresi dihitung dan ditetapkan ke nama variabel.

Tipe variabel dan tipe ekspresi harus cocok, kecuali jika ekspresi bertipe integer dan variabel bertipe real. Dalam hal ini, nilai ekspresi yang dihitung diubah menjadi tipe nyata.

Contoh 9.1. Buatlah program untuk menghitung fungsi:

y=cosa+inb; n=k+1; r=ord(#65).

Var
a, b, y: nyata;
k, n: bilangan bulat;
r: karakter;
t, v, u: Boolean;
* * *
y:= cos(a)+ln(b);
n:=k+1;
r:=ord(#65);
t:=(v dan u)or(v dan bukan u);
* * *
akhir.

Langsung operator di Pascal

Di Turbo Pascal, urutan alami dari eksekusi operator diadopsi, yaitu. dalam urutan di mana mereka muncul dalam teks program. Pernyataan lompat menyela urutan alami dari eksekusi pernyataan dan mentransfer kontrol ke pernyataan yang ditandai dengan label yang ditentukan dalam pernyataan lompat.

Format perekaman: Ke m;

di mana: pergi ke- pergi ke;
m- label.

Pekerjaan operator: Pernyataan lompat mentransfer kontrol ke pernyataan yang ditandai dengan label m.
Penggunaan pernyataan melompat dalam TR tidak diinginkan karena melanggar integritas struktural dari program. Program seperti itu sulit dibaca, di-debug, dan dimodifikasi. Penggunaan operator lompat di TR tunduk pada batasan yang mencegah penggunaannya tanpa pandang bulu.

Dengan menggunakan pernyataan lompat, Anda dapat mentransfer kendali dalam satu tingkat atau melompat dari tingkat internal ke tingkat eksternal. Transisi dari lapisan luar ke lapisan dalam dilarang. Misalnya, dari program ke badan subrutin atau di dalam pernyataan loop atau pernyataan bersyarat.


Operator penugasan adalah operator yang paling sederhana dan paling umum.

Format operator penugasan

Operator penugasan adalah notasi yang berisi simbol = (tanda sama dengan), di sebelah kiri adalah nama variabel, dan di sebelah kanan - ekspresi. Operator penugasan diakhiri dengan tanda; (titik koma).

Variabel = Ekspresi ; // operator penugasan

Operator penugasan dapat dibedakan dalam teks program dengan adanya tanda sama dengan. Ekspresi dapat berupa konstanta, variabel, pemanggilan fungsi, atau ekspresi itu sendiri.

Aturan eksekusi operator penugasan

Operator penugasan, seperti operator lainnya, dapat dieksekusi. Ini berarti bahwa entri yang menyusun pernyataan penugasan dijalankan sesuai aturan. Saat operator penugasan dijalankan, nilai di sisi kanan dievaluasi, lalu nilai ini ditugaskan ke variabel di sebelah kiri tanda sama dengan. Akibat dari eksekusi pernyataan penugasan, variabel di sisi kiri selalu mendapatkan nilai baru; nilai ini mungkin berbeda atau sama dengan nilai sebelumnya dari variabel ini. Ekspresi di sisi kanan operator penugasan dievaluasi sesuai dengan urutan ekspresi yang dievaluasi (lihat Operasi dan Ekspresi).

Contoh Pernyataan Penugasan

Dalam operator penugasan, deklarasi tipe variabel diperbolehkan di sebelah kiri tanda sama dengan:

int Dalam = 3 ;
dobel Do = 2.0 ;
bool Bo = benar;
warna Co = 0 x008000 ; // Variabel Co diberi nilai konstan
stringSt = "sss"; // Variabel St diberi nilai konstanta
datetime Da = D "01/01/2004"; // Variabel Da diberi nilai konstanta

Variabel yang dideklarasikan sebelumnya digunakan dalam pernyataan penugasan tanpa menentukan jenisnya.

Dalam = 7 ; // Variabel In diberi nilai konstanta
Do = 23,5 ; // Variabel Do diberi nilai konstanta
Bo = 0 ; // Variabel Bo diberi nilai konstanta

Dalam operator penugasan, tidak diperbolehkan mendeklarasikan tipe variabel di sisi kanan tanda sama dengan:

Di = int Di_2; // Mendeklarasikan tipe variabel di sisi kanan adalah dilarang
Do = dobel Do_2; // Mendeklarasikan tipe variabel di sisi kanan adalah dilarang

Pernyataan penugasan tidak mengizinkan deklarasi berulang dari jenis variabel.

int di; // Deklarasi tipe variabel In
int Masuk = Masuk_2; // Deklarasi ulang variabel tidak diperbolehkan (Masuk)

Contoh penggunaan di sisi kanan fungsi kustom dan standar:

Di = Fungsi_Saya(); // Masuk diatur ke pengguna. fungsi
Do = Gipo (Do1 , Do1 ); // Setel ke pengguna. fungsi
Bo = Terhubung(); // Bo disetel ke std. fungsi
St = NamaObjek(0) ; // St diatur ke std. fungsi
Da = WaktuSaat Ini(); // Da diatur ke std. fungsi

Contoh penggunaan di sisi kanan ekspresi:

Di = (Fungsi_Saya() + Di2 ) / 2 ; // Variabel In ditugaskan
// ..nilai ekspresi
Do = MathAbs (Do1 + Gipo (Do2 , 5 ) + 2.5 ); // Variabel Do Ditugaskan
// ..nilai ekspresi

Saat menghitung dalam operator penugasan, aturan untuk tipe data casting diterapkan (lihat Type Casting).

Contoh Tugas Formulir Pendek

MQL4 juga menggunakan bentuk singkat dari operator penugasan. Ini adalah bentuk pernyataan penugasan yang menggunakan operasi penugasan selain operasi penugasan = (tanda sama dengan) (lihat Operasi dan Ekspresi). Operator bentuk pendek tunduk pada aturan dan batasan yang sama. Bentuk singkat dari operator penugasan digunakan dalam kode untuk kejelasan. Pemrogram, atas kebijakannya sendiri, dapat menggunakan satu atau beberapa bentuk operator penugasan. Setiap operator penugasan bentuk pendek dapat dengan mudah ditulis ulang menjadi format penuh, dan hasil eksekusi operator tidak akan berubah.

Di /= 33 ;
Dalam = Dalam / 33 ;

St += "_exp7"; // Bentuk pendek dari operator penugasan
St = St + "_exp7"; // Bentuk lengkap dari operator penugasan

Kami telah mempertimbangkan program paling sederhana yang ditulis dalam Pascal di lingkungan PascalABC.Net. Di sana kami melakukan operasi aritmatika pada angka, dan kemudian menampilkannya menggunakan operator tulis (atau tulis). Tapi kami tidak menggunakan operator penugasan, yang sangat umum dalam pemrograman. Jadi apa itu penugasan?

Pertimbangkan beberapa variabel M dan N yang memiliki nilai tertentu, katakanlah, M = 12, N = 34. Untuk masing-masing nilai ini, komputer mengalokasikan area memori yang terpisah, yang merupakan sejumlah sel, atau bit (1 sel = 1 sedikit). Banyak nomor (atau jenis data lainnya) tidak dapat disimpan di lokasi memori yang sama karena alasan yang sama bahwa dua liter air tidak dapat ditampung dalam satu toples liter.

Sangat sering menjadi perlu untuk menghapus nilai variabel M, sama dengan 12, dan sebagai gantinya menjadi sama dengan nilai variabel N, yaitu 34. Apa yang dilakukan komputer? Ia menemukan lokasi memori di mana nilai N "tersembunyi", menyalinnya (angka 34), kembali ke lokasi penyimpanan M (sama dengan 12), menghapus nilainya dan memasukkan yang baru, yaitu 34. Sebagai hasilnya, M = 12 berubah menjadi M = 34.

Penugasan adalah perekaman data di area memori komputer yang dialokasikan untuk nilai M, data yang disimpan di area memori komputer lain, di mana nilai N direkam.

Penugasan ditulis sebagai M:= N , artinya nilai N masuk ke M. Wajar jika muncul pertanyaan: apa yang terjadi dengan nilai N? Tidak ada, dia hanya "berbagi" nilainya dengan variabel M, tapi dia sendiri tidak berubah. Kadang-kadang pendatang baru dalam pemrograman berpikir bahwa variabel M dan N ditukar, padahal tidak. Untuk mengilustrasikan fenomena ini, pertimbangkan masalahnya:

Sebuah tugas. Angka diberikan: M = 12, N = 34. Tukar nilainya.

Kita perlu menetapkan 34 ke angka M, dan 12 ke angka N (sebaliknya). Sangat sering, programmer pemula menulis seperti ini:


Pada baris pertama kode, M ditugaskan ke N, yaitu, M:= 34. Di baris kedua, N ditugaskan ke M, tetapi variabel terakhir tidak lagi sama dengan 12, karena nilainya berubah di baris sebelumnya menjadi 34. Oleh karena itu, kedua variabel akan sama dengan 34. Untuk demonstrasi, kami akan menulis kode lengkap yang harus Anda tulis ulang di lingkungan pemrograman PascalABC.Net:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var M N: ketik bilangan bulat;

Keterangan:

")" onmouseout="toolTip()">bilangan bulat
; mulai tulis ( "Masukkan angka M dan N:" <-- вводим 12 } write (" N = " ) ; readln (N) ; { <-- вводим 34 } M := N; { <== M присваивается N, поэтому M = 34 } N := M; { <== N присваивается M, поэтому N = 34 } akhir.

Jalankan program untuk dieksekusi; masukkan 12 saat diminta untuk M, masukkan 34 untuk N, dan tekan Enter. Jika semuanya dilakukan dengan benar, Anda akan melihat:

Masukkan angka M dan N:
M=12
N=34
Hasil:
M=34 T=34

Seperti yang Anda lihat dari baris terakhir, ini bukan yang kami inginkan - menukar nilai M dan N di beberapa tempat.

Untuk mencapai hasil yang benar, nilai awal variabel M perlu diperbaiki, misalnya s:= M ("ingat" M dengan menuliskan nilainya ke variabel s). Akibatnya, kami akan menetapkan nomor N bukan nilai variabel M, yang telah berubah, tetapi gunakan nilai s yang sama dengannya:


Sesuai dengan perubahan terbaru, program sebelumnya akan berbentuk:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var M, N, s: ketik bilangan bulat;

Keterangan:
Merupakan bilangan bulat bertanda 32-bit.

Kisaran nilai: -2 147 483 648 .. 2 147 483 647")" onmouseout="toolTip()">bilangan bulat
; mulai tulis ( "Masukkan angka M dan N:") ; tulis("M="); readln(M); (<-- вводим 12 } write (" N = " ) ; readln (N) ; { <-- вводим 34 } s := M; { <== запоминаем M, равное 12 } M := N; ( M = 34 karena N = 34 ) N := s; ( N = 12 karena s = 12 ) writeln("Hasil:"); writeln(" M = " , M, " N = " , N) ; readln akhir.

Tulis ulang program ini di PascalABC.Net dan jalankan (tombol F9 pada keyboard). Jika jawabannya adalah:

Masukkan angka M dan N:
M=12
N=34
Hasil:
M=34 N=12

maka program bekerja dengan benar. Seperti yang Anda lihat dari baris terakhir, nilai angka M dan N ditukar.

Penugasan- mekanisme pengikatan dalam pemrograman yang memungkinkan Anda untuk secara dinamis mengubah tautan antara nama objek data (biasanya variabel) dan nilainya. Sebenarnya, mengubah nilai adalah efek samping dari operasi penugasan, dan dalam banyak bahasa pemrograman modern, operasi itu sendiri juga mengembalikan beberapa hasil (biasanya salinan dari nilai yang ditetapkan). Pada tingkat fisik, hasil dari operasi penugasan adalah menulis dan menulis ulang sel memori atau register prosesor.

Penugasan adalah salah satu konstruksi utama dalam bahasa pemrograman imperatif, diimplementasikan secara efisien dan sederhana pada arsitektur von Neumann yang menjadi dasar komputer modern.

Dalam bahasa pemrograman berorientasi objek, semantik penugasan sangat berbeda. Misalnya, dalam bahasa Kotlin, saat menetapkan, objek disalin, dan dalam bahasa Rust, objek dipindahkan (semantik bergerak) dan bundel lama menjadi tidak valid.

mengatur<целевая_переменная> <выражение>

Notasi ini setara dengan memanggil fungsi. Demikian pula, di COBOL gaya lama:

KALIKAN 2 DENGAN 2 MEMBERIKAN EMPAT.

Algoritma kerja

  • Hitung nilai sebelah kiri operan pertama. Pada tahap ini, lokasi objek target, penerima nilai baru, diketahui.
  • Hitung nilai tangan kanan dari operan kedua. Langkah ini bisa berukuran besar dan menyertakan pernyataan lain (termasuk penugasan).
  • Tetapkan nilai tangan kanan yang dihitung ke nilai tangan kiri. Pertama, jika terjadi konflik tipe, mereka harus dilemparkan (atau pesan kesalahan dikeluarkan karena ketidakmungkinannya). Kedua, penetapan nilai sebenarnya dalam bahasa pemrograman modern dapat diganti dan tidak hanya mencakup transfer nilai sel memori (misalnya, ke "properti" objek di , kelebihan beban operator).
  • Mengembalikan nilai tangan kanan yang dihitung sebagai hasil operasi. Tidak diperlukan dalam semua bahasa (misalnya, tidak diperlukan dalam Pascal).

Penamaan

Pemilihan simbol penugasan merupakan masalah kontroversi di kalangan perancang bahasa. Ada anggapan bahwa penggunaan simbol = untuk penugasan membingungkan pemrogram, dan juga menimbulkan pertanyaan memilih simbol untuk operator pembanding, yang sulit dipecahkan dengan baik.

Contoh buruk yang terkenal adalah pilihan tanda sama dengan untuk menunjukkan tugas, yang berasal dari Fortran pada tahun 1957 dan masih diulangi secara membabi buta oleh banyak pengembang bahasa. Ide buruk ini menggulingkan tradisi kuno menggunakan tanda "=" untuk menunjukkan perbandingan kesetaraan, predikat yang dievaluasi menjadi "benar" atau "salah". Namun di Fortran, simbol ini mulai menunjukkan penugasan, paksaan terhadap kesetaraan. Dalam hal ini, operan berada dalam posisi yang tidak sama: operan kiri, variabel, harus dibuat sama dengan operan kanan, ekspresi. Jadi x = y tidak berarti sama dengan y = x.

Teks asli (Bahasa Inggris)

Contoh terkenal untuk ide buruk adalah pilihan tanda sama dengan untuk menunjukkan penugasan. Itu kembali ke Fortran pada tahun 1957 dan telah disalin secara membabi buta oleh pasukan perancang bahasa. Mengapa itu ide yang buruk? Karena itu menggulingkan tradisi lama seabad untuk membiarkan "=" menunjukkan perbandingan kesetaraan, sebuah predikat yang benar atau salah. Tapi Fortran mengartikannya sebagai penugasan, penegakan kesetaraan. Dalam hal ini, operan berada pada pijakan yang tidak sama: Operan kiri (variabel) harus dibuat sama dengan operan kanan (ekspresi). x = y tidak berarti sama dengan y = x.

Implementasi posisi Wirth ini dapat dianggap bahwa dalam bahasa Pascal, di mana dia adalah penulisnya, operator penugasannya adalah: = , sedangkan untuk perbandingan, digunakan = saja.

Pilihan karakter operator kesetaraan dalam bahasa saat menggunakan = sebagai penugasan diselesaikan:

  • Dengan memperkenalkan simbol bahasa baru untuk operator uji kesetaraan.
A = B = C

variabel A diberi nilai Boolean dari ekspresi relasi B = C. Notasi ini menyebabkan penurunan keterbacaan dan jarang digunakan.

Fitur semantik

Jauh dari selalu cara "intuitif" (untuk pemrogram bahasa imperatif) dalam menafsirkan penugasan adalah satu-satunya cara yang benar dan mungkin.

Dari sintaks yang digunakan dalam bahasa imperatif, tidak selalu mungkin untuk memahami bagaimana semantik penugasan diimplementasikan kecuali jika didefinisikan secara eksplisit dalam bahasa tersebut.

A = b = a a = 1000

Setelah itu, b akan memiliki nilai - hanya karena sebenarnya nilainya adalah nilai a . Jumlah referensi ke objek data yang sama disebut kardinalitasnya, dan objek itu sendiri dibunuh (dihancurkan atau diberikan ke pengumpul sampah) ketika kardinalitasnya mencapai nol. Bahasa pemrograman tingkat rendah (seperti C) memungkinkan pemrogram untuk secara eksplisit mengontrol apakah semantik pointer atau semantik salin digunakan.

Substitusi operasi

Banyak bahasa menyediakan kemampuan untuk mengubah arti suatu penugasan, baik melalui mekanisme properti atau melalui kelebihan beban operator penugasan. Pergantian mungkin diperlukan untuk melakukan pemeriksaan validitas nilai yang ditetapkan atau operasi tambahan lainnya. Overloading dari operator penugasan sering digunakan untuk memberikan "salinan yang dalam", yaitu menyalin nilai daripada referensi, yang disalin secara default dalam banyak bahasa.

Mekanisme seperti itu memungkinkan untuk memberikan kemudahan dalam bekerja, jadi bagi seorang programmer tidak ada perbedaan antara menggunakan operator bawaan dan operator yang kelebihan beban. Untuk alasan yang sama, masalah mungkin terjadi, karena tindakan operator yang kelebihan beban bisa sangat berbeda dari tindakan operator default, dan pemanggilan fungsi tidak jelas dan dapat dengan mudah disalahartikan sebagai operasi bawaan.

Desain yang diperluas

Tugas konstruksi dalam berbagai bahasa pemrograman

Karena operator penugasan banyak digunakan, pengembang bahasa pemrograman mencoba mengembangkan konstruksi baru untuk menyederhanakan penulisan operasi tipikal (untuk menambahkan apa yang disebut "gula sintaksis" ke bahasa). Selain itu, dalam bahasa pemrograman tingkat rendah, kriteria inklusi seringkali berupa kemampuan untuk mengkompilasi menjadi kode yang dapat dieksekusi secara efisien. Bahasa C sangat terkenal dengan properti ini.

Beberapa target

Salah satu alternatif untuk operator sederhana adalah kemampuan untuk menetapkan nilai ekspresi ke beberapa objek. Misalnya, dalam PL/1, operator

JUMLAH, JUMLAH = 0

secara bersamaan menetapkan nol ke SUM dan TOTAL . Di Ada, penugasan juga merupakan pernyataan, bukan ekspresi, jadi notasi untuk beberapa penugasan adalah:

JUMLAH, JUMLAH: Integer:= 0;

Penugasan serupa di Python memiliki sintaks berikut:

Jumlah = jumlah = 0

Tidak seperti PL/1, Ada, dan Python, di mana beberapa penugasan hanya dianggap sebagai notasi steno, di C, Lisp, dan lainnya, sintaks ini memiliki dasar yang ketat: operator penugasan hanya mengembalikan nilai yang ditetapkan padanya (lihat di atas). Jadi contoh terakhir sebenarnya adalah:

Jumlah = (total = 0)

Baris seperti ini akan berfungsi di C (jika Anda menambahkan titik koma di akhir), tetapi akan menyebabkan kesalahan di Python.

Tugas paralel

Opsi terakhir hanya berfungsi dengan jenis yang mendukung operasi bit (misalnya, untuk ganda, kompiler bahasa tidak akan mengizinkan Anda untuk bertukar nilai variabel dengan cara ini).

a ||= 10

Konstruk ini memberikan nilai ke variabel a hanya jika nilainya belum diberikan atau sama dengan false .

Pernyataan majemuk

Operator penugasan majemuk memungkinkan Anda menyingkat bentuk penugasan yang umum digunakan. Dengan menggunakan metode ini, Anda dapat mempersingkat notasi penetapan yang menggunakan variabel target sebagai operan pertama di sisi kanan ekspresi, misalnya.