Penyataan gelung dengan syarat - manakala


Gelung dengan syarat. pernyataan while
Mengkaji gelung for, kami mengatakan bahawa jika bilangan ulangan sebarang tindakan diketahui, maka anda boleh memendekkan atur cara menggunakan operator gelung for. Tetapi bagaimana jika bilangan ulangan tidak diketahui? Dan ini berlaku agak kerap.
 
Contoh
Mengingat terjemahan nombor daripada sistem nombor perpuluhan kepada yang lain, kita perlu membahagikan nombor (dan kemudian hasil pembahagian) dengan asas sistem nombor sehingga kita mendapat sifar dalam jawapan. Berapa kali kami akan berkongsi tidak diketahui. Dan terdapat banyak program yang melaksanakan algoritma sedemikian. 

Bagaimanakah kita boleh melaksanakan algoritma jika kita tidak mengetahui bilangan lelaran yang tepat?

Untuk kes sedemikian dalam pengaturcaraan, terdapat pernyataan gelung dengan syarat. 
Dalam bahasa pengaturcaraan Python, pernyataan gelung bersyarat bermula dengan perkataan while dan mempunyai struktur berikut.
sementara (<condition>) 
{
  badan gelung
}

Seperti yang kita sedia maklum:
- syarat ialah ungkapan yang boleh menilai sama ada benar atau salah (seperti dalam pernyataan bersyarat);
- badan gelung ialah perintah yang perlu diulang, ia diinden.

Bagaimana pengendali berfungsi?
1. Pertama, program menilai keadaan dalam kurungan selepas perkataan while. Jika syarat dipenuhi (benar), maka atur cara melaksanakan pernyataan (s) yang terkandung dalam badan gelung.
2. Selepas pelaksanaan badan gelung selesai, atur cara kembali untuk menyemak keadaan dan menyemaknya semula.
3. Tindakan ini (menyemak keadaan - melaksanakan badan gelung) diulang sehingga keadaan menjadi palsu.
4. Jika syarat tidak dipenuhi serta-merta (palsu) semasa pelaksanaan pertama kenyataan ini, maka program tidak akan melaksanakan badan gelung.

Menganalisis kerja operator ini, haruslah jelas bahawa badan gelung mesti mengandungi operator yang mempengaruhi keadaan.
Contohnya, dalam gelung, nilai pembolehubah yang digunakan dalam keadaan mungkin ditambah.

Contoh program yang akan kami panggil "Silent count".
Mari jadikan program dikira sebagai ganti kita, contohnya, sehingga 10.
Program ini harus mengeluarkan frasa "Mula" dan "Selesai", dan antara tindakan ini memaparkan nombor yang sedang dikira.

Contohnya, seperti ini:
Mulakan
1 2 3 4 5 6 7 8 9 10
Selesai

Program yang menggunakan gelung while akan kelihatan seperti ini: menggunakan Sistem; kelas Program {     lompang statik Utama() {         Console.WriteLine("Mula");         int i = 1;         manakala (i <= 10) {             Console.WriteLine(i);             i++;         }         Console.WriteLine("Selesai");     } } Dalam program ini, kami memberikan nilai kepada pembolehubah i = 1 - titik permulaan.
Selanjutnya, selagi nilai pembolehubah i tidak lebih besar (iaitu, kurang daripada atau sama dengan) nilai yang kami perlukan, kami:
 1) paparkan nilai pembolehubah i;
 2) tingkatkan nilai pembolehubah i  sebanyak 1 - operator ini mempengaruhi nilai keadaan dalam kurungan. Pembolehubah i  ditambah, bermakna pada satu ketika keadaan i <= 10 akan menjadi palsu. Ini akan berlaku apabila i sama dengan 11. Dalam kes ini, badan gelung tidak lagi akan dilaksanakan dan atur cara akan melaksanakan pernyataan seterusnya selepas gelung, iaitu,  Console.WriteLine("Finish").

Mari cuba tulis atur cara untuk menyelesaikan masalah berikut: anda perlu memasukkan nombor dan tentukan bilangan digit di dalamnya.

Idea penyelesaian.
Kita hanya perlu memotong digit terakhir secara berurutan daripada nombor (ini boleh dilakukan dengan mengurangkan nombor sebanyak 10 kali, menggunakan pembahagian integer sebanyak 10), dan setiap kali kita perlu menambah pembilang. 
Akibatnya, selepas kita memotong semua nombor, kaunter akan menyimpan bilangan digit dalam nombor itu.
Dengan cara lain, algoritma boleh dirumuskan seperti berikut: sementara nombor itu tidak sama dengan sifar, kurangkan ia sebanyak 10 kali dan tambahkan pembilang sebanyak 1.
Program ini akan kelihatan seperti ini: ... lompang statik Utama() { int n = Convert.ToInt32(Console.ReadLine()); kiraan int = 0; manakala (n != 0) { kira++; n = n / 10; } } Anda perlu mengetahui dan memahami program ini dengan baik, kerana banyak tugas lain yang berkaitan dengan pengiraan mengikut digit nombor.

nombor (n) kaunter
123 0
12 1
1 2
0 3

Tugas

Input program ialah aliran data — jujukan integer yang berakhir dengan sifar (sifar tidak termasuk dalam jujukan). Anda perlu mencari jumlah unsur jujukan ini.
 
Algoritma penyelesaian
jumlah=0 input x // masukkan nombor pertama manakala x != 0 // tanda tamat input ditetapkan dalam keadaan,  nc // iaitu sehingga anda memasukkan sifar    jumlah = jumlah + x // anda boleh melakukan sesuatu dengan nombor asal. // Anda boleh menambah semakan nombor untuk beberapa syarat, dsb.    masukan x // masukkan nombor seterusnya kts jumlah cetak //hasil keputusan