Бағдарламалу технологиясы


ШАРТТЫ ЦИКЛ ОПЕРАТОРЛАРЫ 4.1 While циклінің операторы



жүктеу 1,63 Mb.
бет25/73
Дата03.02.2022
өлшемі1,63 Mb.
#35497
түріОқулық
1   ...   21   22   23   24   25   26   27   28   ...   73
Ба?дарламалу технологиясы

4 ШАРТТЫ ЦИКЛ ОПЕРАТОРЛАРЫ




4.1 While циклінің операторы

While циклінің операторы «шартты цикл» деп жиі аталады, өйткені цикл жұмысының аяқталуы кейбір шарттардың орындалмауымен байланысты. Циклді жазу пішімі:

while (шарт)

{ операторлар; },

мұндағы,

шарт – логикалық өрнек, екі мәнді қабылдай алады: жалған немесе ақиқат.

Егер «шарт» ақиқат болса, онда while циклінің «операторлары» орындалады, әйтпесе цикл орындалмайды (аяқталады) және бағдарламаны басқару циклден кейінгі операторға көшеді.

Есептердің шешімдері бойынша алгоритмдердің құрылымдық схемасындағы while циклі келесі суретте көрсетілген.



4.1-суреті – while циклінің графикалық көрінісі


while циклі операторларына арналған мысалдары:

1) while (a/x >= 0.0001) { операторлар;}

Бұл мысалда цикл a/x қатынасы 0.0001 шамасынан кіші болғанға дейін орындалады.

2) while ((x > 0) && (x <= 100)) { операторлар;}

Бұл мысалда цикл x айнымалысының мәні 0-ден 100 дейінгі аралықта болғанға дейін орындалады.

4.1-есеп. Емтихан алушының столында 50 емтихан сұрақтары бар. Студент жетінші билетті тәуекелдеп алуға тырысады (алынған билет нөмері 1-ден 50 дейінгі аралықта кездейсоқ түрде құрылуы керек). Сәтсіз алынған билет емтихан алушының столына қайта қайтарылатын болса, студент билетті неше рет алады? Осыдан кейін билеттерді араластырады.

Есепте шартты циклдік процесті ұйымдастыру керек. Цикл жұмысының шарты – жетіге тең емес санды кездейсоқ түрде құру. Цикл жұмысын іске қосу алдында 1-ден 50 дейінгі аралықта орналасқан, кездейсоқ бірінші a санын құру және талпыныстар санауышына бір санын жазу керек (с=1). Цикл денесінде a айнымалысы үшін кездейсоқ санның функциясы және талпыныстар санауышына (c айнымалысы) арналған инкремент операциясы болуы керек.

Цикл жұмысы аяқталғаннан кейін экран мониторына санауыш мәнін - талпыныстар санын шығаруды ұйымдастыру керек.

Бағдарлама коды мынандай:

using System;

namespace ConsoleCiklWhile

{

class Program



{

static void Main()

{

int a, c;



Random rnd = new Random();

vvod:


a = rnd.Next() % 50 + 1;

c = 1;


while (a != 7)

{

a = rnd.Next() % 50 + 1;



c++;

}

Console.WriteLine("Билет {0}-rette tabildi", c);



Console.WriteLine("Zhalgastiry(Y/N)?");

char cim = (char)Console.Read();

Console.ReadLine();

if (cim == 'Y') goto vvod;

Console.WriteLine("Enter pernesin basiniz");

Console.ReadLine();

}

}

}



Бағдарлама жұмысы:

Билет 34-rette tabildi

Zhalgastiry(Y/N)?

Y

Билет 35-rette tabildi



Zhalgastiry(Y/N)?

Y

Билет 54-rette tabildi



Zhalgastiry(Y/N)?

N

Enter pernesin basiniz


while циклінің операторы алғыш артты цикл операторы деп аталады. Яғни, циклдің жұмыс шартын оны іске қосқанға дейін тексеру керек. Сондықтан, қарастырылған есепті шешу алгоритмінде шартты тексеруді ұйымдастыру үшін, цикл іске қосылғанға дейін бірінші сан құрылуы керек. Бұл цикл денесінің екі рет жазылуына алып келеді – цикл іске қосылғанға дейін және оның ішінде. Егер цикл денесінде екі оператор болса, онда бұл қолайсыздық онша білінбейді, бірақ көптеген операторлардың қайталануы дұрыс емес және бағдарламаның көрнекілігін бұзады (оқулықтың келесі бөлімін қараңыз).

Әдетте шартты циклдер шексіз қатарлармен берілген өрнектерді есептеу үшін қолданылады, мысалы sin(x) функциясын (мысал [5] алынған)



Шеткі және шексіз қосындыларды есептеу алгоритмі әдетте жоғарғы деңгейдегі тілдегі бағдарламалауды оқытатын көптеген пәндерде қарастырылады. Сондықтан дәстүр бойынша sin(x) функциясын есептеу бағдарламасының коды мен алгоритімін қарастырайық.

sin(x) функциясын есептеу формуласы шексіз қосындылардан тұрады.

Математика үшін шексіздік ұғымын қолдану - әдеттегі құбылыс – бүтін және нақты сандар жиынтығы шексіз. Бағдарламалауда барлық бүтін және нақты сандардың мәндері компьютер мүмкіндігімен шектелген. Сондықтан бағдарламалауда шексіз қосындыларды есептеулер орындалмайды. Алайда қосындыны берілген дәлдікте есептеуге болады. Сонымен, шексіз қосындылар берілген дәлдіктегі қосындыларға айналдырылады.

Берілген дәлдіктегі ақырғы қосындыны есептеу алгоритмін функционалды түрде келесі әрекеттер ретімен көрсетуге болады:

бастапқы шарттарды беру;

while( кезекті қосылғыш модулі берілген дәлдіктен үлкен )

{

қосынды = қосынды + кезекті қосылғыш;



жаңа мәндерді қолданып кезекті қосылғышты есептеу;

}

Бастапқы шарт мыналардан тұруға тиісті: цикл денесінің жұмысын қамтамасыз ететін қосынды және кейбір айнымалыларды инициализациялау, бірінші қосылғышты есептеу. Мысалы, кезекті қосылғыштың нөмеріне жауап беретін айнымалы.



Рекуррентті формулалар арқылы кезекті қосылғышты есептеуге кеңес беріледі. Кезекті қосылғышты есептеуді алдынғы мәнді қолданып және ak+1=f(ak) рекуррентті формуласын құрып жеңілдетуге болады.

Осы тәсіл 1.1 формуласы бойынша sin(x) функциясын және басқа да көптеген математикалық функцияларды есептегенде қолданылады.

1.1 формуласы бойынша керекті рекуррентті қатынастардың құрылуын көрсетейік.


қатынасын есептеп керекті рекуррентті арақатынасын аламыз:


Рекуррентті арақатынасты енгізу нәтижесінде циклдің әрбір қадамында санның дәрежесін және факториалдарды табудың қажеті жоқ.

4.2-есеп. sin(x)-тің мәнін есепте, x диалог режімінде беріледі. Есептеуді екі жолмен орындау керек: стандартты sin() функциясымен және берілген t дәлдігіне сәйкес (1.1) қатар көмегімен, t мәні диалог режімінде беріледі.

Шыққан рекуррентті арақатынастарды ескере отырып келесі бағдарлама кодын жазуға болады:

using System;

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Program



{

static void Main()

{

double sym, x, t, y;



string buf;

int i;


vvod:

Console.WriteLine("sin(x) ornegin eseptey");

Console.Write("x= ");

buf = Console.ReadLine();

x = Convert.ToDouble(buf);

Console.Write("Eseptey daldigin engizy, micali, 0,0001 ");

buf = Console.ReadLine();

t = Convert.ToDouble(buf);

sym = 0; y = x; i = 0;

while (Math.Abs(y) > t)

{

sym = sym + y;



y = y * (-x * x) / ((2 * i + 2) * (2 * i + 3));

i++;


}

Console.WriteLine("sin(x) = {0} ", Math.Sin(x));

Console.WriteLine("sym = {0} ", sym);

Console.WriteLine("Zhalgastiry (Y/N)?");

char cim = (char)Console.Read();

Console.ReadLine();

if (cim == 'Y') goto vvod;

Console.WriteLine("Enter pernesin basiniz");

Console.ReadLine();

}

}



}

Бағдарлама жұмысы:

sin(x) ornegin eseptey

x= 0,35


Eseptey laldigin engizy, micali, 0,0001 0,00001

sin(x) = 0,342897807455451

sym = 0,342897934895833

Zhalgastiry (Y/N)?

Y

sin(x) ornegin eseptey



x= 1

Eseptey laldigin engizy, micali, 0,0001 0,000001

sin(x) = 0,841470984807897

sym = 0,841471009700176

Zhalgastiry (Y/N)?
Диалог режимінде әр есептеу үшін әр түрлі дәлдіктер берілген, ол есептеу нәтижелерінің ұқсас разрядтар санын анықтайды.

Қарастырылған алгоритмді құру әдістемесін көптеген есептердің (рекуррентті арақатынастарын есептеуге болатын) ақырғы қосындысын есептеуде қолдануға болады.

Кейбір математикалық есептерде күрделі алгебралық өрнектер бірнеше қарапайым өрнектерге бөлінеді. Әрбір қарапайым өрнектек үшін өз рекуррентті арақатынасын есептеуге болады. Алгебралық өрнектерді бөліктерге бөлу (декомпозиция) және рекуррентті қатынастарды қолдану күрделі математикалық есептерді шешуге арналған алгоритмдерді құруға мүмкіндік береді.


жүктеу 1,63 Mb.

Достарыңызбен бөлісу:
1   ...   21   22   23   24   25   26   27   28   ...   73




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау