24.09.2024
Rumah / Ikhtisar Windows / Vba for to step adalah contoh sederhana cara kerjanya. Loop VBA. Pekerjaan laboratorium tentang dasar-dasar pemrograman

Vba for to step adalah contoh sederhana cara kerjanya. Loop VBA. Pekerjaan laboratorium tentang dasar-dasar pemrograman

Sintaks operator:

UntukMenangkal= Awal THaiAkhir[MelangkahMelangkah]

Blok_Operator

BerikutnyaMenangkal

Di sini ditunjukkan:

Untuk Untuk (diperlukan kata kunciVB);

Ke ke (diperlukan kata kunciVB);

Blok_Operator– satu atau lebih operator menelepon badan siklus;

Menangkal - variabel integer yang menghitung jumlah loop yang dieksekusi;

Awal, Akhir - nilai penghitung awal dan akhir;

Melangkah langkah(kata kunciVB);

Melangkah - langkah melawan perubahan; mungkin negatif; parameternya opsional, karena jika langkahnya 1, Anda bisaLangkah Melangkah lebih rendah;

Next – next (diperlukan kata kunci VB, entri operator loop akhir).

Nilai penghitung (Mulai, Akhir) mungkin ada konstanta numerik atau variabel bertipe bilangan bulat atau real, dapat berupa bilangan negatif atau positif. Agar badan perulangan dapat dieksekusi setidaknya sekali, harus ada Awal ≤ Akhir, Jika Melangkah> 0, dan Awal ≥ Akhir, Jika Melangkah< 0. Begitu ternyata Menangkal>Akhir ( Jika Awal< Конец), Eksekusi loop berakhir. Jika Mulai =Akhir, loop akan dieksekusi satu kali;

Contoh 9.1 .Evaluasi fungsiY = 2 – 1.5 Sinxketika X berubah dalam langkah 0,2 dalam rentang tersebut.

Sebuah fragmen dari program untuk menghitung Y dan menghasilkan argumen X dan fungsi Y:

Untuk X = 0 Sampai 2.4 Langkah 0.2

Y = 2 – 1,5*Dosa(X)

Untuk memahami cara kerja loop ini, berikut adalah program untuk loop serupa yang dibuat menggunakan operatorPergi ke, tag, operatorJikaKemudian.

M1: X = X + 0,2

Jika X<= 2.4 Then

Y = 2 – 1,5*Dosa(X)

Mari kita lihat cara kerja program ini. Perhitungan pertama Y tidak standar, seolah-olah keluar dari siklus. Siklus dimulai setelah transfer pertama kendali GoToM1 ke label M1. Pada baris berlabel M1, argumen X dinaikkan sebesar 0,2 dan segera dilakukan pengecekan untuk melihat apakah nilai baru X melebihi nilai akhir 2,4. Jika tidak melebihi, maka perhitungan Y diulangi dengan X baru ini. Kemudian operator GoToM1 dijalankan lagi - mentransfer kendali ke garis berlabel M1. Iterasi (siklus) penghitungan Y ini akan berakhir segera setelah X melebihi 2,4.

Sekarang mari kita bandingkan program dengan If dengan perulangan For...Next.

Untuk X = 0 Sampai 2.4 Langkah 0.2

menggantikan dua baris

M1: X = X + 0,2

Jika X<= 2.4 Then

Ini adalah dua baris kode terakhir yang dieksekusi di perulangan For, tetapi kita tidak melihatnya. Kami mengkodekannya dengan baris cFor... Baris kode GoTo M1 dikodekan dengan kata Next X (secara harfiah: next X). Hal ini menghasilkan desain yang kompak.

Saat menggunakan perulangan For...Next, Anda perlu mempelajari cara menggunakan penghitung perulangan untuk menyelesaikan berbagai masalah. Untuk mengetahui cara menggunakan penghitung untuk memecahkan masalah, Anda perlu melakukannya menganalisis rumusan masalah, menemukan pola perubahan beberapa parameter masalah.

Contoh 9.2 . Penentuan jumlah unsur-unsur suatu deret : .

Fragmen program:

S = 0 ‘ S – jumlah deret tersebut

Untuk i = 1 Sampai 16 ‘ counter i adalah penyebut pecahan tersebut

S = S + 1/i ‘ akumulasi jumlah

Cetak “S = “; S ' menampilkan jumlah S ke formulir

Untuk setiap nilai pencacah i, ekspresi 1/i secara berurutan membentuk elemen-elemen deret tersebut, dimulai dari 1.

Contoh 9.3 . Menghitung jumlah serangkaian elemen
.

Fragmen program:

S = 0 ‘ S – jumlah deret tersebut

Untuk i = 1 Sampai 18 ‘ penghitung i – pembilang

S = S + i/(i + 1) ' penyebutnya 1 lebih besar dari pembilangnya

Cetak “S = “; S ' menampilkan jumlah S ke formulir

Contoh 9.4 . Perhitungan jumlah: 5 + 8 + 11 + … + 32 + 35

Fragmen program:

S = 0 ‘ S – jumlah deret tersebut

Untuk i = 5 Sampai 35 Langkah 3 ‘ kita mendapatkan aritmatika _

perkembangan dengan penyebut 3

Cetak “S = “; S

Contoh 9.5. Menghitung jumlah x tertentu:

Analisis masalah menunjukkan bahwa derajat X bervariasi dari 1 sampai 10. Dalam hal ini, pembilang koefisien X lebih besar dari derajat sebesar 1, dan penyebutnya sebesar 2. Nilai derajatnya akan kita bentuk dengan menggunakan melawan saya. Kemudian Anda dapat membuat program seperti ini (fragmen):

S = 1 ‘ S – jumlah deret tersebut

Untuk i = 1 Sampai 10’ seperti counter i, derajatnya berubah di X

S = S + (-1)^i*(i + 1)*x^i / (i + 2)

Cetak “S = “; S

SiklusUntukBerikutnyadigunakan untukmasukan, keluaran Danpemrosesan susunan .

Contoh 9.6. Input dan output nilai elemen array B(N).

Fragmen program:

' Kami menghilangkan pemberian nilai ke variabel N, _

dimasukkan pada formulir di bidang teks txtN:

B(i) = InputBox("Masukkan item B(" & i & ")", _

"Masukan larik B(" & N & “)”)

Cetak " "; Dua);

Fungsi Kotak Masukan() menampilkan kotak dialog dengan tombol tutup, pesan tertentu, kolom input, tombol OKE,Membatalkan, dengan header tertentu (atau tanpa header). Jika angka 12 dimasukkan - ukuran array N, maka dalam contoh kita, ketika pertama kali muncul, jendela ini akan terlihat seperti:

Seperti yang bisa kita lihat, pesannya Masukkan elemen B(1) meminta Anda memasukkan nilai elemen pertama ke dalam kotak teks. Jendela ini akan muncul 12 kali karena array berisi 12 elemen. Ini mengikuti dari judul formulir. Indeks unsur B(i) dalam undangan bervariasi antara 1 sampai dengan 12.

Jika Anda hanya ingin menampilkan nilai elemen array B(N) pada formulir, maka badan perulangan akan terdiri dari satu pernyataan:

Melihat elemen array untuk melakukan beberapa tindakan pada elemen tersebut juga dilakukan menggunakan operator loop For...Next.

Mari kita memberi contoh pemrosesan array satu dimensi.

Contoh 9.7 . Menentukan elemen maksimum dalam array B(M).

Tidak termasuk masukan data awal dan keluaran hasil, kami menjelaskan secara singkat algoritmanya:

    Mari kita deklarasikan variabel Bmax, di mana kita akan memasukkan nilai elemen pertama array, dan variabel Imax, yang akan kita tetapkan 1 - indeks elemen pertama array.

    Dalam satu perulangan, dengan menggunakan operator For...Next, kita memeriksa semua elemen array, dimulai dari elemen ke-2. Menggunakan operator If...Then, kita membandingkan nilainya dengan nilai yang disimpan dalam variabel Bmax.

    Jika ternyata nilai suatu elemen array lebih besar dari nilai Bmax, maka Bmax diberi nilai elemen tersebut, dan nilai Imax diberi indeks elemen array tersebut.

Setelah loop berakhir, variabel Bmax akan berisi nilai elemen maksimum, dan Imax akan berisi indeksnya (angka).

Program untuk bagian algoritma ini.

Bmaks = B(1): Imaks = 1

Jika B(i) > Bmax Maka Bmax = B(i): Imax = i

Contoh 9.8. Menentukan jumlah, hasil kali, dan jumlah elemen positif suatu arrayD(M).

Variabel: S, P, K – masing-masing jumlah, hasil kali, dan jumlah elemen positif.

Algoritma definisi seperti itu:

    Kita tetapkan nol pada variabel S dan K, dan tetapkan 1 pada variabel P. Biasanya, variabel yang jumlahnya diakumulasikan, ini S dan k, selalu disetel ulang ke nol sebelum perulangan, dan variabel dalam yang produknya dihitung ditugaskan 1.

    Dengan menggunakan perulangan For...Next, kita memeriksa semua elemen array dan memeriksa apakah elemen-elemen tersebut positif (D(i) > 0).

    Jika ternyata elemennya positif, maka kita tambahkan nilainya ke nilai jumlah S dan simpan jumlah barunya di variabel yang sama. Variabel P kita kalikan dengan nilai positif elemen tersebut dan juga disimpan dalam variabel P. Dan kita menambahkan 1 ke variabel K dan menyimpan nilai baru di variabel yang sama

Program Bagian dari algoritma ini terlihat seperti:

S = 0: P = 1: K = 0

Jika D(i) > 0 Maka

S = S + D(i) ‘ beginilah jumlah yang terakumulasi _

nilai positif elemen array D(i)

P = P*D(i) ‘ definisi hasil kali positif

' elemen susunan

K = K + 1 ‘ operator ini namanya COUNTER, ini dia

' mendefinisikan jumlah elemen array positif

Contoh 9.9. Menemukan jumlah, hasil kali, bilangan, dan rata-rata elemen array ganjilD(M).

Berikut adalah bagian dari program untuk definisi seperti itu.

S = 0: P = 1: K = 0

Jika D(i) Mod 2<>0 Lalu

Ssr = S/k ‘ menghitung rata-rata unsur ganjil

Bandingkan bagian program ini dengan program pada Contoh 9.8. Program ini hampir sepenuhnya mengulangi program sebelumnya. Hanya kondisi dalam pernyataan If yang berubah. KondisiD(i) Mod 2<>0 artinya kita mencari elemen array D(i) yang tidak habis dibagi 2, yaitu elemen ganjil. Jika kita memeriksa kondisi D(i) Mod 2 = 0, maka kita akan memilih elemen genap dari array.

Seperti diketahui, pembagian berdasarkan Mod memberikan sisa pembagian dalam bilangan bulat. Misalnya, setelah mengeksekusi operator d = 34Mod4, variabel d akan sama dengan 2. Oleh karena itu, untuk memilih elemen array yang merupakan kelipatan 4, kita perlu memeriksa kondisi D(i) Mod 4 = 0. Kondisi akan menjadi serupa jika kita mencari elemen yang merupakan kelipatan dari bilangan lain. Angka-angka lain ini akan ditulis, bukan 4.

Contoh 9.10. Menulis Elemen ArrayR(N), kelipatan 5, ke dalam array lain dan mengeluarkan array baru ke formulir.

Mari kita nyatakan array lain, misalnya, R5(N). Ukuran array baru ini harus diasumsikan sama dengan array aslinya, karena dalam kasus ekstrim semua elemen dapat berupa kelipatan 5.

Algoritma masalah:

    Setel ulang penghitung k. Dengan menggunakan operator loop For...Next, kita memeriksa semua elemen array R(N).

    Kami memeriksa setiap elemen untuk kelipatan 5 menggunakan operator If...Then dan membagi elemen array dengan Mod.

    Jika elemennya adalah kelipatan 5, maka dengan menggunakan penghitung bertipe k=k+ 1 kita membentuk indeks larik R5(N), mulai dari 1, dan menuliskannya ke larik lainnya –R5(N).

    Jika k berbeda dari nol, tampilkan array R5() pada formulir.

    Jika k sama dengan nol, kita menghasilkan keluaran: “Tidak ada unsur yang habis dibagi 5.”

Fragmen program:

Jika R(i) Mod 5 Maka k = k + 1: R5(k) = R(i)

Jika k<>0 Lalu

Cetak “Tidak ada unsur yang habis dibagi 5”

Loop dapat disarangkan di dalam loop lainnya.

Mari kita tunjukkan hasil kerjanya loop bersarang . Program di bawah ini menampilkan nilai-nilai penghitung siklus i, j dan k. Dari keluaran i, j, k, menjadi jelas bagaimana loop bersarang dieksekusi.

Sub Pribadi frmCycle_DblClick()

ScaleMode = 4' unit – simbol

Untuk i = 1 Sampai 3' lingkar luar

Cetak "i = "; Saya;

Untuk j = 1 Sampai 4' loop bersarang pertama

CurrentX = Lebar Teks("i = 1 ") + 5

Cetak "j = "; J;

CurrentX = Lebar Teks("i = 1 j = 1 ") + 7

Untuk k = 1 Sampai 5' loop bersarang ke-2

Bentuk yang ditunjukkan (Gbr. 1) menunjukkan hasil keluaran penghitung dari ketiga loop: loop terluar – penghitung i, loop bersarang pertama – penghitung j, dan loop kedua, terdalam – penghitung k. Seperti yang kita lihat, penghitung paling lambat adalah loop luar(poi), dan yang "tercepat" adalah penghitung loop terdalam (menurutk).

Program dijalankan setelah mengklik dua kali tombol kiri mouse pada formulir frmCicli.

CurrentX, CurrentY – properti formulir yang menentukan koordinat X, Y dari titik awal untuk menampilkan informasi menggunakan metode Cetak (lihat Gambar 1 untuk lokasi sumbu X dan Y pada formulir).

TextWidth() adalah fungsi yang mengembalikan lebar teks yang ditentukan dalam fungsi sebagai argumen dalam tanda kutip ganda.

Loop bersarang digunakan saat memproses array dua dimensi (matriks). Namun dalam beberapa tugas, tidak termasuk input dan output elemen array dua dimensi, Anda dapat membatasi diri pada satu loop. Mari kita lihat beberapa contoh pemrograman matriks.

Contoh 9.11. Input dan output dari matriks (array dua dimensi) bilangan bulatke dalamA(N).

Anda dapat memasukkan matriks menurut baris dan kolom . Lebih mudah - baris demi baris, jika Anda memprogram keluaran elemen array ke dalam formulir segera setelah dimasukkan.

Masukan dan keluaran matriksbaris demi baris - fragmen 1.

Redupkan M Sebagai Integer, N Sebagai Integer, i Sebagai Integer, j Sebagai Integer

Redupkan intA() Sebagai Integer ‘ mendeklarasikan array dinamis

M = Val(txtN.Teks) ‘ M – jumlah baris

N = Val(txtN.Teks) ‘ N – jumlah kolom

ReDim intA(M, N) Sebagai Integer ‘ mendefinisikan ulang array

Untuk i = 1 Ke M ‘ i akan mempertahankan nilainya sampai seluruhnya

'loop bersarang di j tidak akan dieksekusi

Cetak " "; intA(saya, j); ' keluaran baris demi baris

Cetak ' pergi ke awal baris baru

Untuk memasukkan matriks per kolom, Anda harus membuat perulangan terluar di j (menentukan nomor kolom), dan perulangan dalam di i (menentukan nomor baris).

Masukan dan keluaran matriksberdasarkan kolom fragmen 2.

PrY = 2500: CurrentY = PrY ‘ PrY menetapkan koordinat Y awal

' menampilkan elemen pertama dari setiap kolom pada formulir

Untuk j = 1 Ke N ‘ j akan mempertahankan nilainya sampai sepenuhnya

'loop bersarang di i tidak akan dieksekusi

intA(i,j) = InputBox("Masukkan elemen intA(" & i & “,” & j & ")", _

"Matriks masukan intA(" & M & “,” & N & ")")

Tab Cetak(6 * j); intA(i, j) ' keluaran berdasarkan kolom

CurrentY = PrY ' untuk menampilkan elemen pertama

' kolom berikutnya

Fragmen program kedua ini tidak mengulangi 5 baris pertama dari fragmen pertama. Fungsi Tab(6 * j) mengatur awal keluaran dalam satu baris (dalam karakter), dimulai dari tepi kiri formulir. Koordinat PrY di sini sama dengan 2500 twips, tetapi Anda dapat memilih nilai lain.

Contoh 9.12 . Mengurutkan nilai elemen arrayV(N) menaik.

Ada beberapa algoritma untuk mengurutkan array. Ini salah satunya: menggunakan loop bersarangUntukBerikutnyakami memilih elemen, mulai dari yang pertama hingga yang kedua dari belakang, dan membandingkan masing-masing elemen dengan elemen berikutnya; jika ternyata elemen selanjutnya lebih kecil dari yang dipilih, kita tukar.

Sebuah fragmen dari program yang mengimplementasikan algoritma ini:

Untuk i = 1 Sampai N – 1

Untuk j = i + 1 Ke N

Jika V(j)< V(i) Then P = V(i): V(i) = V(j): V(j) = P

Mari kita jelaskan bagian program ini.

Menggunakan loop luar dengan counter i, kita memilih elemen V(i) untuk dibandingkan dengan elemen berikutnya. Loop bagian dalam dengan counter j memilih elemen berikutnya dari V(j) untuk perbandingan. Nilai awalj adalah i+ 1. Ini adalah elemen pertama dari elemen berikutnya.

Untuk menukar nilai elemen V(i) dan V(j), kami memperkenalkan beberapa variabel P, di mana kami untuk sementara “menyembunyikan” nilai salah satu elemen array (dalam program ini adalah V(i )). Kemudian elemen V(i) diberi nilai elemenV(j), dan elemenV(j) diberi nilaiV(i), yang disimpan dalam variabelP. Jika kita “menyembunyikan” nilai V(j) pada P, maka kode pertukaran nilai akan seperti ini: P = V(j): V(j) = V(i): V(i) = P .Hasilnya tidak akan berubah.

Ke mengurutkan array dalam urutan menurun, syarat pembuktiannya cukup dituliskan dalam bentuk V(j) > V(i), yaitu mengubah tanda pertidaksamaan ke tanda lain.

Jika array bukan numerik, tetapi string, dan nama keluarga dimasukkan ke dalam elemen array, maka dengan menggunakan program pada contoh 9.12, Anda dapat mengurutkan daftar nama keluarga berdasarkan abjad. Faktanya adalah bahwa untuk huruf-huruf alfabet yang digunakan di komputer, pertidaksamaan berikut ini benar: A< Б < В < Г….< Я и т. д., поскольку числовые коды букв алфавита последовательно увеличиваются, начиная с А и до конца алфавита. Это же справедливо и для букв английского алфавита.

Contoh 9.13 . Menghitung jumlah elemen positif pada kolom ganjil suatu matriksF(M, N) dan menampilkan jumlahnya ke formulir.

Algoritma program:

    Menggunakan loop luar dengan langkah 2, kita membentuk indeks kolom ganjil matriks, dimulai dari kolom pertama.

    Kami mengatur ulang jumlah S, di mana jumlah elemen positif akan terakumulasi.

    Di loop dalam kita memeriksa tanda elemen array.

    Jika elemen array positif (> 0), kita menghitung jumlah S.

    Setelah akhir loop dalam, kami menampilkan jumlah S pada formulir.

Fragmen program:

Untuk j = 1 Ke N Langkah 2

Jika F(i, j) > 0 Maka S = S + F(i, j)

Cetak “Jumlah Kolom”; J; “:”; S ‘j – nomor kolom!

Loop bersarang memungkinkan Anda mengatur penghitungan pilihan dan memecahkan masalah yang tidak dapat diselesaikan secara analitis. Dari hasil pencarian diperoleh pilihan-pilihan solusi, di antaranya dipilih satu atau lebih yang memenuhi kondisi masalah.

Contoh 9.14. Ada 1801 rubel. Berapa banyak coklat yang bisa Anda beli seharga 31 rubel? dan roti seharga 18 rubel untuk menghabiskan semua uang sepenuhnya.

Program:

Jumlah = 1801

SemuaCokelat = Jumlah\31: SemuaBulk = Jumlah\18

Untuk i = 1 Untuk Semua Cokelat

Untuk j = 1 Ke VseBulk

Harga = i*31 + j*18' jumlah harga pembelian

Jika Harga = 1801 Maka

Cetak "Cokelat: "; Saya; Tab(19); "Bulok: "; J

Mari kita jelaskan program di mana kita menggunakan variabel yang diberi nama dalam bahasa Rusia.

Pertama, kita tentukan berapa jumlah maksimal coklat saja atau coklat gulung saja yang bisa dibeli untuk jumlah keseluruhan. Kami menggunakan nilai AllChocolates dan AllBulks yang diperoleh untuk membatasi jumlah pencarian jumlah coklat dan roti gulung. Untuk setiap nilai jumlah coklat (i) dan jumlah gulungan (j), kami menentukan total Harga pembeliannya. Jika Harga yang dihitung adalah 1801, maka opsi yang dipilih adalah salah satu solusi dari masalah tersebut.

Fungsi Tab() menentukan dari posisi mana dari tepi formulir, informasi yang mengikuti fungsi ini akan ditampilkan. Jika Tab(19), maka dari posisi ke-19.

Program ini menampilkan 3 kemungkinan opsi pembelian:

Cokelat 7, gulungan 88

Coklat 25, roti gulung 57

Cokelat 43, roti 26

Jika ingin memberikan jawaban yang jelas, perlu dirumuskan syarat tambahan. Misalnya, “lebih sedikit roti yang dibeli dibandingkan coklat.” Maka satu-satunya solusi adalah pilihan ke-3.

Ada banyak masalah matematika yang dapat diselesaikan secara sederhana dengan brute force menggunakan pemrograman loop bersarang.

Selain struktur pengambilan keputusan, ada jenis struktur pengendalian lain yang disebut siklus.

Siklus adalah struktur algoritmik yang dengannya beberapa pengulangan blok operator diimplementasikan.

Ada tiga tipe utama perulangan dalam Visual Basic, yang diimplementasikan menggunakan konstruksi For:Next, Do:Loop, dan While:Wend.

Untuk:Perulangan berikutnya. Digunakan ketika jumlah pengulangan suatu blok pernyataan tertentu diketahui sebelumnya. Desain ini terlihat seperti ini:

Untuk penghitung = nilai awal Ke nilai akhir Operator1 Operator2 Berikutnya [penghitung]

Ketika pernyataan di atas dijalankan untuk pertama kalinya, variabel counter diberi nilai awal, setelah itu dua opsi dimungkinkan. Jika, sebagai hasil pemeriksaan penghitung kondisi > nilai akhir, diperoleh nilai True, maka perulangan berakhir, dan blok operator1 dan operator2 tidak pernah dieksekusi. Sebaliknya, jika hasil pengujian kondisi adalah False, maka dalam hal ini blok pernyataan dieksekusi untuk pertama kalinya, setelah itu transisi ke awal perulangan terjadi. Selanjutnya nilai variabel counter dinaikkan satu langkah yang terletak setelah kata kunci Langkah (jika tidak ada maka ditetapkan langkah = 1). Setelah itu, kebenaran kondisi penghitung > nilai akhir, dll. diperiksa kembali, akhir perulangan terjadi pada saat hasil pemeriksaan ini bernilai Benar.

Seringkali kita perlu menghentikan perulangan “darurat” ketika beberapa kondisi tambahan terpenuhi. Dalam hal ini, di dalam loop Anda harus menggunakan frase layanan Exit:For, yang biasanya terletak di struktur kendali, Misalnya:

Jika kondisinya maka Exit For

Jika hasil pengecekan kondisi bernilai True, maka eksekusi loop akan dihentikan, dan blok operator1 akan dieksekusi kembali, namun blok operator2 tidak.

Lakukan: Lingkaran. Ini digunakan ketika jumlah pengulangan operator badan perulangan tidak diketahui sebelumnya. Ada empat jenis desain ini. Saat menggunakan dua yang pertama, loop akan dieksekusi berkali-kali atau tidak dieksekusi sama sekali.

Lakukan Sampai kondisi pernyataan Loop

Jika hasil pemeriksaan kondisi adalah False, maka blok pernyataan dieksekusi, jika tidak, transisi dilakukan ke pernyataan yang terletak setelah kata layanan Loop. Di sisi lain, jika pengujian pertama terhadap kondisi mengembalikan hasil Benar, maka perulangan tidak akan dieksekusi sekali pun.

Pernyataan Do While Condition Loop

Jika kondisinya benar, maka blok pernyataan akan dieksekusi, tetapi jika kondisinya salah, yaitu hasil pemeriksaannya adalah False, maka perulangan tidak akan dieksekusi satu kali pun.

Jika dua konstruksi terakhir digunakan, perulangan akan dieksekusi setidaknya sekali.

Lakukan Pernyataan Loop Hingga kondisi

Blok pernyataan dijalankan selama hasil pengujian kondisinya adalah False, jika tidak maka perulangan akan berakhir.

Lakukan Pernyataan Loop While Kondisi

Jika kondisinya salah, blok pernyataan akan dieksekusi, tetapi jika kondisinya benar, yaitu. Hasil pengecekan Benar, maka terjadilah akhir siklus.

Perulangan sementara: Wend. Ini juga digunakan ketika jumlah pengulangan pernyataan badan perulangan tidak diketahui sebelumnya, dan memiliki sintaks berikut:

Sedangkan kondisi pernyataan Wend

Jika hasil pengecekan kondisi Benar, maka blok operator dijalankan, sebaliknya dilakukan peralihan ke operator yang terletak setelah kata layanan Wend. Di sisi lain, jika pengujian pertama terhadap kondisi tersebut mengembalikan hasil False, maka perulangan tidak akan dieksekusi sekali pun.

VBA. Organisasi siklus.

Pernyataan loop digunakan untuk mengulangi suatu tindakan atau sekelompok tindakan beberapa kali. Jumlah pengulangan (iterasi loop) dapat ditentukan sebelumnya atau dihitung.

VBA mendukung dua jenis konstruksi perulangan:

  1. Loop dengan jumlah pengulangan yang tetap ( loop yang dibalas).
  2. Loop dengan jumlah pengulangan yang tidak terbatas ( loop bersyarat).

Untuk semua jenis siklus konsep ini digunakan badan lingkaran , yang mendefinisikan blok pernyataan yang berada di antara pernyataan awal dan akhir perulangan. Setiap pengulangan eksekusi pernyataan-pernyataan pada badan perulangan disebut perulangan

Siklus tetap

VBA menyediakan dua struktur kontrol untuk mengatur loop tetap: For ... Next (loop dengan counter) dan For Each ... Next (loop dengan enumerasi).

Operator Untuk...Selanjutnya Ini adalah counter loop tipikal yang mengeksekusi sejumlah iterasi tertentu. Sintaks dari pernyataan For...Next adalah:

Untuk<счетчик> = <начЗначение>Itu<конЗначение>

<блок операторов>

Berikutnya [<счетчик>]

Contoh penggunaan operator For...Next.

Listing 1. Operator Untuk... Selanjutnya

' TUGAS: Membuat program yang menerima dua nomor dari pengguna.

‘ Menambahkan semua angka dalam rentang yang ditentukan oleh dua angka ini, lalu

‘ menampilkan jumlah yang dihasilkan.

Sub sampel7()

Redupkan saya Sebagai Penghitung siklus Integer

Redupkan nilai penghitung awal sStart

Redupkan nilai penghitung akhir sEnd

Dim sSum As Long 'jumlah yang dihasilkan

sStart = InputBox("Masukkan angka pertama:")

sEnd = InputBox("Masukkan angka kedua :")

jumlah = 0

Untuk i = CInt(sMulai) Ke CInt(sEnd)

sJumlah = sJumlah + i

berikutnya saya

MsgBox “Jumlah angka dari “ & sStart & ” sampai “ & sEnd & ” adalah : “ & sSum

Akhiri Sub

Pernyataan loop Untuk Setiap...Berikutnyatermasuk dalam kategori operator tipe objek, yaitu. berlaku terutama untuk koleksi objek, serta array . Badan perulangan dieksekusi beberapa kali, sesuai dengan jumlah elemen dalam array atau koleksi. Untuk Setiap...Format pernyataan berikutnya:

Untuk Masing-masing<элемент>Di dalam<группа> <блок операторов>Berikutnya [<элемент>]

Loop bersyarat (loop tidak terdefinisi)

Perulangan bersyarat digunakan ketika tindakan berulang perlu dilakukan hanya dalam kondisi tertentu. Jumlah iterasi tidak ditentukan dan secara umum bisa sama dengan nol (khususnya, untuk loop dengan prasyarat). VBA menawarkan kepada pengembang beberapa struktur kontrol untuk mengatur loop bersyarat:

  • Empat jenis Do..Loops, yang berbeda dalam jenis kondisi yang diperiksa dan waktu yang diperlukan untuk menyelesaikan pemeriksaan ini.
  • Perulangan terus menerus Sementara... Wend.

Perulangan Do While... tipikal loop dengan prasyarat. Kondisi diperiksa sebelum badan perulangan dieksekusi. Siklus tersebut terus bekerja hingga mencapai titik tersebut<условие>dieksekusi (yaitu memiliki nilai True). Karena pemeriksaan dilakukan di awal, badan perulangan mungkin tidak akan pernah dieksekusi. Lakukan Sementara... Format Lingkaran:

Lakukan Sementara<условие>

<блок операторов>

Lingkaran

Listing 2. Lakukan Sementara... Loop

' TUGAS: Membuat program yang memerlukan input pengguna

'urutan angka yang berubah-ubah. Masukan harus dihentikan

‘ hanya setelah jumlah angka ganjil yang dimasukkan melebihi 100.

Sub sampel8()

Dim OddSum Sebagai Integer 'jumlah bilangan ganjil

Redupkan OddStr As String 'sebuah string dengan angka ganjil

Dim Num 'untuk menerima nomor yang dimasukkan

OddStr = “” 'inisialisasi string keluaran

OddSum = 0 'inisialisasi OddSum

Lakukan Sementara OddSum< 100 ‘начало цикла

Angka = InputBox(“Masukkan angka : “)

Jika (Nomor Mod 2)<>0 Lalu 'periksa paritas

OddSum = OddSum + Num' akumulasi jumlah bilangan ganjil

OddStr = OddStr & Angka & ” ”

Akhiri Jika

Lingkaran

'cetak string dengan angka ganjil

Perintah MsgBox:=”Angka ganjil: ” & OddStr

Akhiri Sub

Pernyataan Do...Loop Whiledirancang untuk organisasiloop dengan postkondisi. Kondisi diperiksa setelah badan perulangan dieksekusi setidaknya satu kali. Siklus tersebut terus bekerja sampai<условие>tetap benar. Lakukan... Format Loop While:

Melakukan<блок операторов>Ulangi Sementara<условие>

Listing 3. Loop dengan postcondition

' TUGAS: Membuat program untuk permainan “Tebak Angkanya”. Programnya harus acak

‘ cara untuk menghasilkan angka dalam kisaran 1 hingga 1000, pengguna harus melakukannya

' tebak nomor ini. Program ini menampilkan petunjuk untuk setiap nomor yang dimasukkan

‘ “lebih” atau “kurang”.

Sub sampel8()

Randomize Timer 'menginisialisasi generator nomor acak

Redupkan pesan Sebagai String ‘ string pesan

Redupkan SecretNumber Selama, UserNumber Sebagai Varian

Mulai: SecretNumber = Round(Rnd * 1000) ' nomor yang dihasilkan komputer

UserNumber = Kosong ‘ nomor yang dimasukkan oleh pengguna

Lakukan gameplay

Pilih Kasus Benar

Case IsEmpty(UserNumber): msg = “Masukkan nomor”

Kasus UserNumber > SecretNumber: msg = “Terlalu banyak!”

Nomor Pengguna Kasus< SecretNumber: msg = “Слишком мало!”

Pilihan Akhir

UserNumber = InputBox(prompt:=pesan, Judul:=”Tebak nomornya”)

Ulangi Saat Nomor Pengguna<>Nomor Rahasia

' penyelidikan

If MsgBox(“Mainkan lagi?”, vbYesNo + vbQuestion, “Anda dapat menebaknya!”) = vbYes Then

Mulai

Akhiri Jika

Akhiri Sub

Perulangan Lakukan Sampai... Ulangi dan Lakukan... Ulangi Sampai adalah inversi dari loop kondisional yang telah dibahas sebelumnya. Secara umum, cara kerjanya sama, hanya saja badan perulangan dieksekusi jika kondisinya salah (mis.<условие>=Salah). Lakukan Sampai... Format Perulangan:

Lakukan Sampai<условие> <блок операторов>Lingkaran

Lakukan... Loop Sampai format loop:

<блок операторов>

Ulangi Sampai<условие>

Tugas praktis:Tulis ulang program di Listing 10 dan 11 menggunakan pernyataan loop terbalik.

Ulangi Sementara...Wend juga berlaku untuk loop bersyarat. Operator ini sepenuhnya konsisten dengan struktur Do While... Loop. Sementara...Format loop Wend:

Ketika<условие>

<блок операторов>

Pergi ke

Ciri khas dari operator ini adalah ketidakmungkinan memaksa penyelesaian (interupsi) badan perulangan (operator Exit Do tidak berfungsi di perulangan While… Wend).

Mengganggu sebuah siklus

Untuk menghentikan iterasi lebih awal dan keluar dari loop, pernyataan Exit digunakan. Operator ini berlaku di semua struktur siklik kecuali While... Wend. Sintaks umum untuk menggunakan Exit untuk memutus perulangan adalah:

<начало_цикла>

[<блок операторов1>]

Keluar (Untuk | Lakukan)

[<блок операторов2>]

<конец_цикла>

Ketika pernyataan Exit dijalankan, perulangan diinterupsi dan kontrol ditransfer ke pernyataan yang mengikuti pernyataan tersebut<конец_цикла>. Mungkin ada beberapa pernyataan Exit di badan perulangan.

Listing 4. Paksa keluar dari loop

Sub sampel9()

Untuk i = 1 Sampai 10000000

Jika i = 10 Maka Exit For ‘ keluar dari loop ketika penghitung mencapai 10

Berikutnya

Pelajaran dari seri ini: “ Pemrograman dalam Visual Basic.NEN untuk anak sekolah"

Anda sudah familiar dengan kontrol ComboBox.
Dalam pelajaran ini kita akan melanjutkan studi kita tentang operator bahasa Visual Basic.Net, dengan fokus pada operator loop.
Berhubung dgn putaran struktur algoritmik ada tiga jenis:

  1. counter loop di mana tubuh loop dieksekusi jumlah tertentu sekali;
  2. loop untuk memproses array atau koleksi;
  3. perulangan bersyarat, yang mana badan perulangan dijalankan selama kondisinya benar (atau hingga kondisinya menjadi benar).

Dalam pelajaran ini kita akan melihat operator loop dengan counter (Untuk... Selanjutnya). Mari kita menulis proyek menggunakan operator ini.

Siklus dengan penghitung Untuk. . . Berikutnya t digunakan bila sudah diketahui sebelumnya berapa banyak pengulangan yang perlu dilakukan.

Diagram blok

Pandangan umum operator

For Counter = StartValue To EndValue Loop Body Selanjutnya [Penghitung]

Sintaks operatornya adalah sebagai berikut: baris yang diawali dengan kata kunci For adalah kepala perulangan, dan baris dengan kata kunci Berikutnya adalah akhir perulangan, di antara keduanya terdapat pernyataan yang merupakan badan perulangan.

Algoritma untuk mengeksekusi operator For. . . Berikutnya

  1. Nilai variabel Counter diatur sama dengan StartValue.
  2. Kondisi Penghitung dicentang<= КонЗнач
  3. Jika kondisi terpenuhi, maka badan perulangan akan dieksekusi. Variabel Counter diubah dengan nilai langkah: Counter = Counter + step.
  4. Ketika variabel Counter mencapai nilai ConValue, loop keluar dan pernyataan berikut dijalankan.

Pemrogram dapat mengatur keluar prematur dari loop menggunakan konstruksi Exit For. Dalam hal ini, loop secara otomatis keluar dan kontrol ditransfer ke perintah berikutnya setelah loop.

Proyek "Pendapatan dari Deposit"

Tulislah sebuah proyek yang menghitung pendapatan dari deposito dan menyediakan perhitungan bunga sederhana dan bunga majemuk. Bunga sederhana diakumulasikan pada akhir jangka waktu deposito, bunga majemuk diakumulasikan setiap bulan dan ditambahkan ke jumlah deposit awal, dan bunga bulan berikutnya diakumulasikan pada jumlah baru. Formulir yang direkomendasikan ditunjukkan pada gambar.

Teknologi eksekusi

Tutorial ini menunjukkan cara menggunakan loop For...Next untuk mengulangi kode beberapa kali.

Setiap tindakan dari suatu prosedur yang diulang beberapa kali atau sampai suatu kondisi terpenuhi atau tidak terpenuhi disebut siklus .

Proses mengeksekusi semua pernyataan yang terlampir dalam struktur loop satu kali disebut iterasi lingkaran.

Struktur loop yang selalu dieksekusi dalam jumlah tertentu disebut loop dengan jumlah iterasi yang tetap. Jenis struktur loop lainnya berulang beberapa kali tergantung pada serangkaian kondisi. Siklus seperti ini disebut siklus yang tidak terbatas.

Blok pernyataan yang terletak antara awal dan akhir perulangan disebut "badan lingkaran".

Struktur loop yang paling sederhana adalah siklus tetap .

Untuk..Loop berikutnya

Sintaksis

Untuk menangkal = Awal Ke Akhir
Pernyataan
Berikutnya [ menangkal]

Penghitung - variabel numerik VBA apa pun
Mulai - ekspresi numerik apa pun yang menentukan nilai awal variabel penghitung
Akhir - ekspresi numerik yang menentukan nilai akhir untuk variabel penghitung


Secara default, VBA menambah variabel menangkal dengan 1 setiap kali pernyataan dieksekusi dalam perulangan. Anda dapat menetapkan nilai yang berbeda ( Ukuran Ster- ekspresi numerik apa pun) yang akan mengubahnya menangkal.

Kata kunci Berikutnya memberi tahu VBA bahwa akhir perulangan telah tercapai. Variabel opsional menangkal setelah kata kunci Berikutnya harus merupakan variabel yang sama menangkal, yang ditentukan setelah kata kunci Untuk di awal struktur loop.


Di bawah ini adalah daftar loop paling sederhana Untuk..Selanjutnya, yang menghitung jumlah angka dari 1 hingga 10:



Dan sekarang ada dua opsi untuk siklus tersebut Untuk..Selanjutnya menggunakan langkah loop selain satu:



Memperhatikan! Saat menurunkan penghitung siklus Untuk..Selanjutnya perulangan dijalankan selama variabel penghitung lebih besar atau sama dengan nilai akhir, dan ketika penghitung perulangan bertambah, perulangan dijalankan selama variabel penghitung kurang dari atau sama dengan nilai akhir.

Ulangi Untuk Setiap..Selanjutnya

Siklus Untuk Masing-masing..Selanjutnya tidak menggunakan penghitung siklus. Siklus Untuk Masing-masing..Selanjutnya dieksekusi sebanyak elemen dalam grup tertentu, seperti kumpulan objek atau array (yang akan dibahas nanti). Dengan kata lain, siklus Untuk Masing-masing..Selanjutnya dieksekusi satu kali untuk setiap elemen dalam grup.

Sintaksis

Untuk Masing-masing Elemen Di dalam Kelompok
Pernyataan
Berikutnya [ Elemen]

Elemen - variabel yang digunakan untuk mengulangi semua elemen dalam grup tertentu
Grup adalah objek atau larik kumpulan
Pernyataan - satu, beberapa atau tidak ada pernyataan VBA (badan perulangan).