Hilang dalam terjemahan

Microsoft mengatakan akan berhenti mengembangkan bahasa Visual Basic . Jadi, saatnya menulis ulang kode di Citylink .



Terlepas dari keputusan penting ini, saya sendiri perlu menerjemahkan satu proyek hewan peliharaan dari VBA ke C #. Saya biasanya membuat prototipe semuanya di MS Access, dan kemudian kode pindah ke database yang lebih serius (baca: SQL Server) dan bahasa pemrograman lain.



Dan inilah siklusnya.

Dalam Basic dan Pascal ada prosedur lingkaran

 

untuk saya = rendah ke atas langkah Langkah

              ...

selanjutnya



Hal ini universal dalam arti bahwa ia dapat pergi baik dari bawah ke atas dan dari atas ke bawah. Ini dapat digunakan baik jika Langkah> 0 dan jika Langkah <0.



Bagaimana Anda menulis hal yang sama dalam notasi C / C ++ / C # / JavaScript? Ternyata perulangan for- nya sama sekali tidak setara dengan yang Dasar:



  for (i = Lower; i <Upper + 1; i + = Step) {โ€ฆ}



Cara mengubahnya agar berfungsi untuk kasus saat Langkah <0 ? Berikut ini, bukan yang paling elegan, solusi yang muncul di benak:



untuk(i = Turun; Tanda (Langkah) * i <= Tanda (Langkah) * Atas; i + = Langkah) {โ€ฆ}



Ini, seperti aslinya untukโ€ฆ selanjutnya, akan berputar pada Langkah = 0.



Rekan kerja menyarankan opsi lain:



for (i = Lower; Step> 0? I <= Upper: i> = Upper; i + = Step) {...}



Faktanya, karena kita membutuhkan nilai terakhir dari variabel loop untuk menjadi Atas, dan juga berpartisipasi dalam badan loop, dapat diprogram sebagai loop dengan kondisi pos:



i = Turun - Langkah;

melakukan

i + = Langkah;

...

sementara (i! = Atas)



tetapi kode ini tidak akan berfungsi jika Step tidak sepenuhnya membagi range Lowerโ€ฆ Upper



Ternyata loop yang menggunakan range dengan Python juga tidak memungkinkan perpindahan dari nilai yang lebih besar ke nilai yang lebih kecil, range (b, a) dengan b> a hanya menetapkan rentang kosong.



Solusi apa yang akan Anda sarankan?



All Articles