4.2 do – while циклінің операторы
do – while циклін тексеруді цикл денесі орындалғаннан кейін жүргізу керек болған жағдайда қолдану орынды, мысалы 4.1 есебінің алгоритмін құру үшін. Циклді жазу пішімі:
do
{ операторлар; }
while (шарт),
мұнда,
шарт – логикалық өрнек, оның екі мәні болуы мүмкін: жалған немесе ақиқат.
егер «шарт» ақиқат болса, онда do – while циклінің «операторлары», әйтпесе цикл орындалмайды (аяқталады).
do – while циклі соңғы шарты цикл деп аталады - шарт цикл денесі орындалғаннан кейін тексеріледі.
Келесі суретте есептің шешімі бойынша алгоритмнің құрылымдық схемасында do – while циклі былай көрсетіледі.
операторлар
иә
жоқ
4.2-суреті – do – while циклінің графикалық көрінісі
do – while циклінің ерекшелігі - цикл денесі кем дегенде бір рет орындалады.
Келесі есепті шығару үшін осы оператордың жұмысын қарастырайық.
4.3-есеп. Қатар қосындысын есептейтін бағдарлама жазу:
Есептеу n дәрежесіндегі Х-ке бөлінген бір K санынан кіші болғанға дейін жалғасады, K саны ЭВМ-де диалог режімінде беріледі. Х мәні де ЭВМ-де диалог режімінде беріледі және ол бірден үлкен болуы керек.
Күрделі математикалық өрнектердің есептеу алгоритмін құру барысында оны жеке бөліктерге бөлу (декомпозиция жасау) дұрыс, мысалы, алымы мен бөлімі. Оны орындау айтарлықтай барлық алгоритмнің құру процесін жеңілдетеді және болатын қателіктер санын азайтады.
Үлкен математикалық өрнекті бір жолмен жазуға тырыспаңыз. Оны жеке үзінділерге бөліңіз. Ол бағдарламаны дұрыстау (отладка) процесін едәуір қысқартады. Оқыту үлгісі ретінде есептің математикалық өрнегін бөліктерге бөлу (декомпозиция) процесін қарастырайық.
Мысалы, өрнектің бөлімі Х-ке тең Z (Z = X) айнымалысымен белгіленсе, онда әрбір келесі қосылғыштың бөлімі қатардың алдыңғы бөлімін Х-ке көбейтіндісіне тең, яғни Z = Z * X.
4.5– суреті – 4.3-есептің шешімі бойынша құрылымдық алгоритм
Қатардың қосылғыштарының алымы әрқашан бірге тең, сондықтан ол үшін қосымша айнымалыны қосудың қажеті жоқ.
do while циклін «іске қоспас» бұрын өрнекті анықтап алу керек, ол өрнек циклде шарт ретінде қолданылады. Біздің есепте қолданылатын өрнек: >K - шарт «ақиқат» «болғанша» цикл орындала береді.
Цикл денесінде қосындыны жинау керек және жаңа Z бөлгішін есептеу керек.
Бағдарлама коды мынандай:
using System;
namespace ConsoleDoWhile
{
class Program
{
static void Main()
{
int n = 0;
double s = 1, z = 0, y = 0;
vvod:
Console.WriteLine("x>1 manin engizy");
string buf = Console.ReadLine();
double x = double.Parse(buf);
Console.WriteLine("k < 1 manin engizy");
string buf = Console.ReadLine();
double k = double.Parse(buf);
if (x <= 1 && k >= 0) goto vvod;
z = x;
s = 1; n = 0;
do
{
y = 1 / z;
s = s + y;
z = z * x;
n = n + 1;
}
while (y > k);
Console.WriteLine("Kosindi = {0}, сikldin iske kosily sany = {1}", s, n);
Console.WriteLine("Enter pernesin basiniz");
Console.ReadLine();
}
}
}
Бағдарлама жұмысы:
x>1 manin engizy
2,2
k < 1 manin engizy
0,0001
Kosindi = 1,83326850772752, сikldin iske kosily sany = 12
Enter pernesin basiniz
Достарыңызбен бөлісу: |