PERTUKARAN NILAI-NILAI DARI 2 VARIABEL
masalah:
Diberikan dua variabel A dan B, pertukaran nilai-nilai yang ditugaskan kepada mereka
algoritma pembangunan
masalah antara mengganti nilai-nilai yang terkait dengan variabel melibatkan mekanisme yang sangat mendasar yang terjadi dalam pemilihan banyak dan algoritma data manipulasi. untuk mendefinisikan masalah lebih jelas kita akan memeriksa contoh khusus.
Menganggap bahwa variabel A dan B ditugaskan seperti nilai-nilai yang diuraikan dibawah. yaitu
memulai konfigurasi
B = 463
ini berarti bahwa sel memori atau variabel berisi nilai 721 dan sel memori atau variabel B berisi nilai 463. Tugas kita adalah untuk mengganti isi variabel A dengan 463, dan isi B dengan 721. Dengan kata lain kita ingin berakhir dengan konfigurasi dibawah ini.
target konfigurasi
A=463
B=721
untuk mengubahnilai dari variabel kita dapat menggunakan operator penugasan. karena kita ingin A mengganggap nilai saat ini milik B dan nilai B milik A, kita bisa membuat pertukaran dengan tugas sebagai berikut:
A:=B; (1)
B:=A (2)
Dimana ":=" adalah operator penugasan. dalam (1)":=" menyebabkan nilai yang tersimpan dalam memori variabel B yang akan disalin ke variabel A.
Mari kita mengerjakan 2 langkah untuk memastikan bahwa mereka memiliki efek yang diinginkan.
keluar dengan konfigurasi
A=721
B=463
kemudian setelah pelaksanaan tugas A:=B yang kita miliki
A=463
B=463
Tugas (1) telah mengubah nilai A tetapi telah meninggalkan nilai B tidak tersentuh. memeriksa dengan konfigurasi target kita, kita melihat bahwa A telah di asumsikan nilai 463 seperti yang diperlukan. kita juga harus memeriksa B. ketika langkah tugas (2) B yaitu B:=A dibuat setelah melaksanakan langkah (1) kita berakhir dengan :
A=463
B=463
Dalam melaksanakan langkah (2) A tidak berubah sedangkan B mengambil nilai yang saat ini milik A. konfigurasi yang telah berakhir dengan tidak mewakili solusi yang kita cari. masalah ini muncul karena dalam membuat tugas=
A:=B
kita telah kehilangan nilai yang awalnya milik A (yaitu 721 telah hilang). ini adalah nilai yang kita inginkan B akhirnya beramsumsi. masalah kita karena itu harus lebih hati-hati. dinyatakan sebagai:
nilai baru dari A:=nilai lama dari B
nilai baru dari B:=nilai lama dari A
apa yang kita lakukan dengan proposal kita sekarang adalah untuk membuat tugas nilai
baru nilai B := nilai lama dari A
dengan kata lain kita menjalankan langkah (2) kita tidak menggunakan nilai A yang akan membuat hal-hal bekerja dengan benar karena A sudah berubah.
untuk memecahkan masalah pertukaran kita perlu menemukn cra untuk tidak menghancurkan "nilai lama dari A" ketika kita membuat tugas
A:=B
sebuah cara untuk melakukan ini adalah untuk memperkenalkan t variabel sementara dan menyalin nilai asli dari A ke variabel ini sebelum mengeksekusi langkah (1). langkah-langkah untuk melakukan hal ini adalah:
t:=A;
A:=b
setelah kedua langkah yang kita miliki
A=463
t=721
B=463
kita lebih baik dari pada terakhir kali karena sekarang kita memiliki nilai lama yang disimpan di t, inilah nilai yang kita betuhkan untuk tugas ke B, maka kita dapat membuat tugas
B:=t
setelah melaksanakan langkah ini kita harus:
A=463
t=721
B=721
mengecek kembali dengan konfigurasi target kita melihat bahwa dan sekarang telah dipertukarkan sesuai kebutuhan.
proses kebutuhan sekarang dapat diuraikan
algorithm description
1. menyimpan nilai asli dan A didalam t
2. menetapkan untuk A nilai asli dari B
3. menetapkan untuk B nilai asli dari A yang di simpan dalam t
mekanisme pertukaran sebagai alat pemrograman yang paling berguna diimplementasikan sebagai prosedur yang menerima dua variabel dan mengembalikan nilai-nilai mereka yang ditukar
paskal pelaksanaan
procedure exchange (var A, B : integer);
var t: integer;
begin {save the original value of A then exchange A and B}
{asssert:A=A0^B=B0}
t:= A;
a:=B;
B:=t
{assert : A=B0^B=A0}
end
catatan pada desain
1. penggunaan variabel sementara antara memungkinkan pertukaran dua variabel untuk melanjutkan dengan benar
2. contoh ini menekankan bahwa pada setiap tahap dalam perhitungan variabel selalu mengamsumsikan nilai yang ditentukan oleh tugas terbaru dibulat untuk variabel tersebut
3. bekerja melalui mekanisme dan contoh tertentu dapat menjadi cara yang berguna untuk mendeteksi kesalahan desain
4. sebuah aplikasi yang lebih umum dari pertukaran melibatkan elemen dua array (misalnya A[i] dan [j] langkah-langkah untuk sebuah pertukaran adalah
t:= A[i];
A[i]:=A[j]
A[j]:= t
0 comments:
Post a Comment