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?