Аппараттық және бағдарламалық қамтамасыз етуді орнату

Циклдік есептеу процестерін бағдарламалау. Қолмен кестелеу және бағдарламалау функциялары

Зертханалық жұмыс № 2

«Циклдік есептеу процестерін бағдарламалау»

Жұмыс мақсаты

C++ тілінде циклдік операторларды үйрену.

Теориялық бөлім

Цикл- командалар жиынының бірнеше рет орындалуын ұйымдастыруға арналған жоғары деңгейлі программалау тілдеріндегі басқару құрылымының бір түрі. Сондай-ақ циклды кез келген тәсілмен ұйымдастырылған нұсқаулардың қайталанатын орындалатын кез келген тізбегі деп атауға болады.

Бірнеше рет орындауға арналған нұсқаулар жиынтығы деп аталады цикл денесі . Цикл денесін бір рет орындау шақырылады итерация . Итерацияның қайта орындалатынын немесе цикл аяқталатынын анықтайтын өрнек шақырылады шығу жағдайы немесе циклді тоқтату. Ағымдағы итерация нөмірін сақтайтын айнымалы деп аталады итерация есептегіші цикл немесе жай есептегіш цикл. Цикл міндетті түрде есептегішті қамтымайды, бірнеше есептегіш болуы мүмкін – циклден шығу шарты циклде өзгеретін бірнеше айнымалыларға байланысты болуы мүмкін.

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

Циклдің келесі түрлері бар.


1. Шартсыз циклдар.Циклдер , бағдарлама логикасы қамтамасыз етілмеген шығу. Атиптілігіне байланысты бағдарламалау тілдері шексіз циклдарды құру үшін арнайы синтаксистік құралдарды қамтамасыз етпейді, сондықтан мұндай циклдар қарапайым (немесе) жасауға арналған конструкциялар арқылы жасалады. шартты) циклдар. Мысалы, Си тілінде цикл қолданылады үшін(;;)бос бөлімдермен.

2. Шартты циклдар.Бұл циклдар, олардың орындалуы цикл денесінің басында немесе соңында тексерілетін қандай да бір шартпен басқарылады. Сәйкесінше, шартты циклдер алғы шартпен және кейінгі шартпен келеді. Алғы шарты бар цикл - оның басталуына дейін көрсетілген кейбір шарт ақиқат болғанда орындалатын цикл. Бұл жағдай тексеріледі бұрынцикл денесінің орындалуы, сондықтан дене бір рет болса да орындалмауы мүмкін (егер шарт ең басынан жалған болса). Процедуралық программалау тілдерінің көпшілігінде оны оператор жүзеге асырады кезінде, сондықтан оның екінші атауы – while-loop. C++ тілінде мұндай цикл келесідей көрінеді:

кезінде(<условие>)

<тело цикла>

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

<тело цикла>

кезінде(<условие продолжения цикла>);

Әртүрлі тілдерде постшартпен цикл шартын қолдануда кейбір айырмашылықтар бар. Паскаль тілінде және одан шыққан тілдерде мұндай циклдің шарты ретінде қарастырылады шығу жағдайыШарт ақиқат болғанда цикл аяқталады. C тілінде - қалай жалғастыру шарты(шарт жалған болғанда цикл аяқталады; мұндай циклдар кейде «while циклдары» деп аталады).

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

Циклдің негізгі ерекшелігі осы түрдегіцикл басталғаннан кейін және шығу командасының алдында орналасқан цикл денесінің бөлігі әрқашан орындалады (тіпті циклден шығу шарты бірінші итерацияда ақиқат болса да), ал цикл денесінің бөлігі цикл басталғаннан кейін орындалады. exit пәрмені соңғы итерацияда орындалмайды. Орташа шығу циклінің көмегімен сіз алдын ала шарт циклін (шығу операторын цикл денесінің басына қою арқылы) және кейінгі шарт циклін (шығу операторын цикл денесінің соңына қою арқылы) оңай модельдеуге болады.

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

Кейбір тілдерде, мысалы, C және одан алынған басқалары, цикл үшін, есептегіші бар циклдің синтаксистік формасына қарамастан, шын мәнінде алғы шарты бар цикл болып табылады. Яғни, C тілінде цикл құрылымы:


үшін (i = 0; i< 10; ++i)

Цикл денесі

шын мәнінде құрылыс белгісінің басқа түрін білдіреді:

кезінде (яғни< 10)

Цикл денесі

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

C++ тілінде цикл

1. for циклі.

For операторын қолданатын циклды қайталанулардың қажетті саны алдын ала белгілі болған кезде қолдануға ыңғайлы. Бұл оператордың синтаксисі:

for (цикл басталар алдындағы әрекет;

циклді жалғастыру шарты;

әрбір цикл итерациясының соңындағы әрекеттер) (

цикл нұсқауы;

цикл нұсқауы 2;

цикл нұсқауы N;

Бұл жазбаның ерекше жағдайы бар (есептегішпен):

үшін (санауыш = мән; санауыш< значение; шаг цикла)

цикл денесі;

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

Мысал: 1-ден 1000-ға дейінгі барлық сандардың қосындысын есептеңіз.

#қосу

std аттар кеңістігін пайдалану;

int i; // цикл санауышы

int сомасы = 0; // 1-ден 1000-ға дейінгі сандардың қосындысы.

setlocale(0, "");

үшін (i = 1; i<= 1000; i++) // задаем начальное значение 1, конечное 1000 и задаем шаг цикла - 1.

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

2. while циклі.

Циклдарды ұйымдастыру кезінденемесе істеу... кезіндеитерациялардың қажетті саны алдын ала белгісіз болған жағдайда қолдануға ыңғайлы. Цикл синтаксисі кезінде C++ тілінде осылай көрінеді.

while (Шарт) (

Цикл денесі;

Бұл цикл жақшада көрсетілген шарт ақиқат болғанша орындалады. while циклі арқылы 1-ден 1000-ға дейінгі сандарды қосудың мысалы:

#қосу

std аттар кеңістігін пайдалану;

setlocale(0, "");

кезінде (яғни< 1000)

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

3. do while циклі

Цикл уақытында жасаңызерекшеленеді кезіндеол циклды орындаған кезде шартқа қарамастан циклдің бір өтуі орындалатындығы. 1-ден 1000-ға дейінгі сандардың қосындысын цикл арқылы табу есебін шешуге арналған бағдарлама уақытында жасаңыз:

#қосу

std аттар кеңістігін пайдалану;

setlocale(0, "");

int i = 0; // цикл санауышын инициализациялау.

int сомасы = 0; // қосынды санауышын инициализациялау.

істеу (// цикл арқылы өту.

) әзірше (і< 1000); // пока выполняется условие.

cout<< "Сумма чисел от 1 до 1000 = " << sum << endl;

1. Таңдалған опцияға сәйкес есепті шешу үшін C++ тілінде бағдарлама құрастырыңыз.

2. Бағдарламаны енгізу, жөндеу және құрастыру. Оның дұрыс жұмыс істейтінін тексеріңіз.

1. Бағдарлама алгоритмінің құрылымдық сұлбасы.

2. Түсініктемелері бар бағдарлама тізімі.

3. Бақылау жүгірістерінің нәтижелері.

тест сұрақтары

1. Циклді, цикл денесін, итерацияны анықтаңыз.

2. Циклдан шығу шарты, итерация санауышы дегеніміз не?

3. Кез келген циклде қандай қадамдар бар?

4. Постшарт циклі қалай жұмыс істейді?

5. Алғы шарты бар цикл қалай жұмыс істейді?

6. Есептегіш цикл қалай жұмыс істейді?

7. Қолдану арқылы цикл қалай жүзеге асырылады мәлімдеме үшін?

8. while операторы арқылы цикл қалай жүзеге асырылады?

9. Do while операторы арқылы цикл қалай жүзеге асырылады?

1. Келесі таңбалар тізбегін көрсетіңіз

2. Бүтін сандар тізбегі енгізілді (0 – қатардың соңы), оң сандардың ішіндегі ең кішісі мен теріс сандар арасындағы ең үлкенінің айырмасын табыңыз.

3. N бүтін сандар тізбегін енгізіңіз, тақ сандардың көбейтіндісі мен теріс сандардың ішіндегі ең үлкенінің айырмасын табыңыз.

4. Бүтін сандар тізбегі енгізіледі, 0 – тізбектің соңы. Тізбекте 3, 5 және 7-ге еселік кем дегенде екі бүтін сан бар-жоғын анықтаңыз.

5. N бүтін сандар тізбегі енгізілген. 11-ге еселіктердің ішіндегі ең үлкен санды анықтаңыз.

6. Бүтін сандар тізбегі енгізіледі, 0 – тізбектің соңы. Тізбекте кемінде үш теріс жұп сан бар-жоғын анықтаңыз.

7. N нақты сан тізбегі енгізілген. 20-дан үлкен сандардың ішіндегі ең кішісін анықтаңыз.

8. Бүтін сандар тізбегі енгізіледі, 0 – тізбектің соңы. 5-ке еселік емес, 7-ге еселік болатын оң сандар санын және қатардың теріс элементтерінің қосындысын есептеңіз.

9. N нақты сан тізбегі енгізілген. 7-ге еселік болатын тізбектің элементтері арасындағы арифметикалық ортаны анықтаңыз.

10. Сандар тізбегі енгізіледі, 0 - тізбектің соңы. Реттілік қатаң түрде төмендейтінін анықтаңыз.

12. Бүтін сандар тізбегі енгізіледі, 0 – тізбектің соңы. Тізбекте кем дегенде екі көршілес натурал сан бар-жоғын анықтаңыз.

13. N нақты сан тізбегі енгізілген. Тізбек таңбалар бойынша ауыспалы екенін анықтаңыз.

14. N нақты сан тізбегі енгізілген. Тізбектің минималды оң және ең үлкен теріс элементтері арасындағы айырмашылықты анықтаңыз.

15. 1-ден N аралығындағы төрттің соңғы үш еселігін табыңыз. Осы сандардың қосындысын есептеңіз.

16. Келесі таңбалар тізбегін көрсетіңіз

18. N1-ден N2 аралығындағы 5-ке бөлінбейтін соңғы үш санның көбейтіндісін есептеңдер.

19. 1-ден К аралығындағы төртке еселік емес жұп сандардың арифметикалық ортасын есептеңіз.

№2 тапсырма

Тармақталған есептеу процестерін бағдарламалау

Жұмыс мақсаты

Есептеу процестерін тармақтау үшін бағдарламалау дағдыларын алыңыз. Шартты мәлімдемелерді, логикалық айнымалыларды, логикалық қатынастарды және операцияларды үйреніңіз.

D ауданы х, у жазықтығына берілсін.Координаталары (х,у) нүктенің D ауданына «түсетінін» немесе түспейтінін анықтау қажет. Егер ол соқса, онда функцияны және М айнымалысын есептеу керек, оның мәні «соқты» немесе «жетпейді» белгісі болып табылады, М=1 мәнін беріңіз. Әйтпесе есептеп M=2 қойыңыз.

Прогресс

Есепті шешу алгоритмі:

1. D аймағын жазып, функцияларын жаз

2. Ауданның шекарасын анықтайтын теңдеулерді жазыңыз

3. Нүктелердің бір бөлігі D ішінде, ал кейбіреулері оның сыртында болатындай етіп 7 нүкте дайында.

4. Тапсырманы орындау программасын жазыңыз.

5. Таңдалған ұпайлар үшін санау нәтижелерін алыңыз және жазыңыз.

f 1= tg(x)/e y f 2 =

(x>0 және y>0 және X**2+Y**2<=9) или (x<0 и y>0 және y<=x+4) или (x<0 и y<0 и x>(-4) және y>(-2))

онда нүкте D аймағына жатады

1)(1;1)
2)(3;3)
3)(-1;2)
4)(-5;2)
5)(-2;-1)
6)(-5;-3)

Фортран MathCAD
x ж z м в z м в
0,1573E+01 Т 1.573
0,0751E+01 Ф 0.751
-1 -0,1211E+01 Т -1.211
-5 0,083E+01 Ф 0.83
-2 -1 0,394E+01 Т 3.94
-5 -3 0,0282E+01 Ф 0.282
-3 0,0271E+01 Ф 0.271

БАСЫП АЛУ *,"X=?,Y=?";ОҚУ *,X,Y

C=(x>0..және.у>0..және.X**2+Y**2<=9).or.(x<0..and.y>0..және.ж<=x+4).or.(x<0..and.y<0..and.x>(-4).және.y>(-2))

PRINT2,X,Y,Z,C,M

2 FORMAT("X=",F7.3,3X,"Y=",F7.3,3X,"Z=",E11.4,3X,"C=",L2,3X,"M=", I2/)

АЯҚТАУ БАҒДАРЛАМАСЫ 2

F1 ФУНКЦИЯСЫ(X,Y)

F1=қою(x)/exp(x)**y

F2 ФУНКЦИЯСЫ(X,Y)

F2= (sqrt(sin(2*x+3*y)**2)**1./3.)

басып шығару*,"a,b,c=?";оқу "(2F7.3)",a,b,c

q=a>b.және.а

а в

w=b>a.және.б

б в

e=c>a.жәнеc

в б

28.,558.,345. 345.0000


№3 тапсырма

Циклдік есептеу процестерін бағдарламалау

Жұмыс мақсаты

Циклдік есептеу процестерін бағдарламалау дағдыларын алыңыз. Қадамдық және шартты циклдарды үйреніңіз.

1. Мерзімді және соңғы соманы есептеуге арналған есептеу формулаларын жазыңыз

2. Берілген қадаммен х параметрінің көрсетілген диапазонындағы шекті мүшелердің қосындысын берілген дәлдікпен есептеу алгоритмін құрастырыңыз. Қадамды алу үшін x диапазонын 10-ға бөліңіз.

3. Есепті шешуге арналған программа құрыңыз. Бағдарламада әрбір х мәні үшін кестеде келтірілген формула бойынша сәйкес у қатарының шамамен және нақты қосындысын есептеуді қамтамасыз етеді.

қатар қосындысының нақты мәні, сондай-ақ қосынды мүшелерінің саны.

Прогресс

1. x0 циклінің басталуы мен xl циклінің аяқталуын орнатыңыз

2. Формула бойынша h қадамын орнатыңыз

4. Есептерді қайталанатын әдіспен шешуге арналған программа жазыңыз

5. Алынған мәліметтер кестесін құру

Жол формуласы:

Нақты қосындыны есептеу формуласы: π/4

1. x0= π/10 xk=9 π/10

3.


нақты:: a,b,c,eps,h,s,x,x0,xk,y,p

b=(sin*(x)*(2*n)-1+sin*((2*n-1)*x))/4*n-2

егер(абс(а)

2,x,s,y,n басып шығару; (1,2)x,s,y,n жазу

соңы 2 пішімі("x=",f6.3,3x,"s=",e10.3,3x,"y=",e10.3,3x,"n=",i5)

соңғы бағдарлама зертханасы3


x S(x) ж
0.314 0.324 0.785
0.565 0.622 0.785
0.817 0.979 0.785
1.068 1.404 0.785
1.319 1.43 0.785
1.57 -19.257 0.785
1.821 -533.961 0.785
2.072 -8,624E+3 0.785
2.324 -9,986E+4 0.785
2.575 -8,928E+5 0.785
2.826 -6.477E+6 0.785

«Циклдік есептеу процестерін бағдарламалау»

Жұмыс мақсаты:циклдік есептеу процестерінің алгоритмдерін құрастыру және күрделі құрылымды циклдік бағдарламаларды ұйымдастыру әдістерін меңгеру.

Теориялық бөлім

4.1.1. Циклдік алгоритмдер.

Цикл – бірнеше рет орындалатын әрекеттер тізбегі.

Циклдік алгоритм – бір немесе бірнеше циклді қамтитын алгоритм.

Циклдің 3 түрі бар:

Алғы шарты бар цикл;

Постшартпен цикл;

Есептегішпен цикл (санау циклі).

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

Санау циклдері цикл денесінің орындалуы алдын ала анықталған рет қайталануы тиіс сыныпты білдіреді.

Циклдік алгоритмдердің блок-схемалары келесідей:

1. Есептегішпен цикл.

2. Алғы шарты бар цикл. 3. Постшартпен цикл.

4.1.2 C++ программалау тіліндегі цикл операторлары.

C++ тілінде әрбір цикл түріне сәйкес оператор бар:

while циклі (алғы шартпен);

do...while циклі (постшартпен);

For циклі (есептелетін).

1. while сияқты цикл операторы

Жазу формасы:

while (шарт) мәлімдемесі;

мұндағы: (шарт) – логикалық өрнек;

оператор – циклде орындалатын оператор немесе цикл денесі.

Егер циклдің денесі құрама оператор болса, онда ол оператор жақшаларына (...) алынуы керек:

әзірше (шарт)

оператор тобы

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

2. Do…while сияқты цикл операторы

Жазу формасы:

оператор;

while (шарт);

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

Егер цикл денесі құрама мәлімдеме болса, онда алғы шарты бар циклге келетін болсақ, ол оператор жақшаларына (...) алынуы керек:



оператор тобы

while (шарт);

3. for сияқты цикл операторы

Жазу формасы:

оператор;

A - цикл параметрі үшін бастапқы мәндерді және қажет болған жағдайда басқа параметрлер үшін бастапқы мәндерді орнататын бастапқы өрнек. Мысалға:

i=0, x=0,5, p=1, s=0

В – циклды жалғастыру шартын тексеретін шартты өрнек. Мысалға:

С – цикл параметрін және қажет болса басқа параметрлерді арттыратын өсу өрнегі, содан кейін олар тізім түрінде жазылады. Мысалы: x+=0,1, i++

4.1.3 Циклдік есептеу процесі үшін C++ тілінде алгоритм мен бағдарламаны құрастыру мысалы.

Өрнектің мәнін есептеңіз:

б- бастапқы мән, оның мәні пернетақтадан енгізіледі және өзгермейді;

а– 1-қадаммен диапазондағы өзгерістер;

ж– нәтиже, оның мәндері экранда көрсетіледі.

Тағайындау шарты негізінде a айнымалысы бүтін сан болып табылады, сондықтан оны санау циклінде санауыш ретінде пайдалануға болады.

Есепті санау циклі арқылы шешу алгоритмінің блок-схемасы келесідей:

#қосу

#қосу

#қосу

printf("В енгізіңіз:");

scanf(“%f”,&b);

printf("a y\n");

үшін (a=0;a<=10;a++)

printf("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

Алғы шарты бар цикл арқылы осы есепті шешу алгоритмінің блок-схемасы келесідей:

Осы алгоритмге сәйкес келетін C++ бағдарламасының мәтіні келесідей:

#қосу

#қосу

#қосу

printf("В енгізіңіз:");

scanf(“%f”,&b);

printf("a y\n");

printf("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

else printf("y жоқ\n");

Пост шарты бар цикл арқылы осы есепті шешу алгоритмінің блок-схемасы келесідей:

Осы алгоритмге сәйкес келетін C++ бағдарламасының мәтіні келесідей:

#қосу

#қосу

#қосу

printf("В енгізіңіз:");

scanf(“%f”,&b);

printf("a y\n");

printf("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

else printf("y жоқ\n");

кезінде (а<=10);

Практикалық бөлім

4.2.1 Жұмысты орындауға қойылатын талаптар:

Айнымалылардың бірінің мәндер диапазоны үшін №3 зертханалық жұмыстың тапсырмасын орындаңыз. Айнымалы мән, оның өзгеру диапазоны және қадамы 4-кестеде көрсетілген. Жеке тапсырмада көрсетілген циклдердің екі түрі үшін алгоритмдер мен бағдарламалардың блок-схемаларын құрастырыңыз (4-кесте).

Нәтижелердің шығуын айнымалы параметрдің мәндері анық ажыратылатын және оның әрбір нақты мәндері үшін нәтиженің мәндері (3 кестенің 2 бағанынан үш айнымалы) көрсетілетіндей етіп орналастырыңыз. кесте түрінде.

Жұмыс тәртібі.

1. Тапсырманы талдауды орындау, проблемалық тұжырымды тұжырымдау.

2. Алгоритмдердің блок-схемаларын жасаңыз.

3. С++ тілінде программа жазыңыз. Пернетақтадан бастапқы деректерді енгізуді және нәтижелерді экранға шығаруды қамтамасыз етіңіз.

4. Әртүрлі бастапқы деректер бойынша бағдарламаның өнімділігін тексеріңіз.

5. Нәтижелерге талдау жасаңыз.

Жеке тапсырмалардың нұсқалары.

Жеке тапсырмалардың нұсқалары мұғалім журналындағы топтық тізімдегі студент нөміріне сәйкес 4-кестеден таңдалады.

Кесте 4. Жеке тапсырмалардың нұсқалары

№ p/p өзгермелі айнымалы Цикл түрлері
10 ≤ a ≤ 10,Δ a=1
-4 ≤ d ≤ 4, Δ d = 0,5
-6 ≤ x ≤ 3, Δ x = 0,5
0 ≤ b ≤ 3 0, Δ b = 1,5 1. Алғы шарты бар, 2. Есептелетін
-15 ≤ j ≤ 1 0, Δ j = 0,5 1. Алғы шартпен, 2. Кейінгі шартпен
5 ≤ e ≤ 35,Δ e = 2 1. Есептелетін, 2. Постшартпен
-5 ≤ м ≤ 15,Δ m = 1 1. Алғы шарты бар, 2. Есептелетін
1 ≤ c ≤ 70,Δ c=3 1. Алғы шартпен, 2. Кейінгі шартпен
1,5 ≤ c ≤ 15,Δ c = 0,5 1. Есептелетін, 2. Постшартпен
-8 ≤ b ≤ 28,Δ b = 2 1. Алғы шарты бар, 2. Есептелетін
-4,5 ≤ x ≤ 11,5,Δ x = 0,5 1. Алғы шартпен, 2. Кейінгі шартпен
-7 ≤ k ≤ 2,Δ k = 0,3 1. Есептелетін, 2. Постшартпен
-1 ≤ м ≤ 21,Δ m = 1 1. Алғы шарты бар, 2. Есептелетін
-2 ≤ e ≤ 34,Δ e = 2 1. Алғы шартпен, 2. Кейінгі шартпен
-11 ≤ c ≤ 23,Δ c = 2 1. Есептелетін, 2. Постшартпен
-13 ≤ p ≤ 50,Δ p=3 1. Алғы шарты бар, 2. Есептелетін
3,3 ≤ b ≤ 9,3,Δ b = 0,3 1. Алғы шартпен, 2. Кейінгі шартпен
3,5 ≤ y ≤ 12,3,Δ y=0,4 1. Есептелетін, 2. Постшартпен
-7,5 ≤ a ≤ 5,7,Δ a = 0,6 1. Алғы шарты бар, 2. Есептелетін
-1,5 ≤ h ≤ 1,2,Δ h = 0,1 1. Алғы шартпен, 2. Кейінгі шартпен
0 ≤ h ≤ 10,Δ h=0,5 1. Есептелетін, 2. Постшартпен
-15 ≤ b ≤ 15, Δ b=2 1. Алғы шарты бар, 2. Есептелетін
-7 ≤ l ≤ 3, Δ l = 0,5 1. Алғы шартпен, 2. Кейінгі шартпен
-5,5 ≤ b ≤ 6,5, Δ b = 0,5 1. Есептелетін, 2. Постшартпен
1 ≤ k ≤ 9, Δ k = 0,4 1. Алғы шарты бар, 2. Есептелетін
0 ≤ b ≤ 6,9,Δ b = 0,3 1. Алғы шартпен, 2. Кейінгі шартпен
-3 ≤ v ≤ 9,Δ v = 0,6 1. Есептелетін, 2. Постшартпен
-2 ≤ p ≤ 2,6,Δ p = 0,2 1. Алғы шарты бар, 2. Есептелетін

4.3 Бақылау сұрақтары мен практикалық тапсырмалар:

1. while операторы қалай жұмыс істейді?

2. do ... while операторы қалай жұмыс істейді?

3. for операторы қалай жұмыс істейді?

4. Программадағы циклды құрайтын операторлардың астын сыз.

5. while және do ... while операторларының айырмашылығы неде?

6. Программада бір цикл операторын басқасымен ауыстырыңыз.

1. Программаларда циклдік есептеу процестерін құру әдістері.

2. Компьютерге енгізілгенНнақты сандар. Осы жиынның арифметикалық ортасын көрсететін программа жазыңыз.

Кіріспе

Циклдік бағдарламалар кез келген бағдарламалық жасақтамада қолданылады. Бұл жағдайда циклдар айқын және жасырын болуы мүмкін. Атап айтқанда, жасырын цикл үзу өңдегіштерінде бар, олар шын мәнінде денесі үзу арқылы іске қосылатын шексіз циклде жұмыс істейді. Ішкі бағдарламалар да Windows қолданбаларының циклдік – терезе функциялары болып табылады. Одан әрі циклі бар бағдарламалар қарастырылады, олардың денесінде функционалдық модульдер бар.

Циклдік процессаргументтің әртүрлі мәндері үшін бірдей формулаларды пайдаланып есептеулер қайта-қайта орындалатын есептеу процесі.

Бағдарламаларциклдік процесті жүзеге асыратындар циклдік бағдарламалар деп аталады.

Циклды ұйымдастыруды келесі кезеңдерге бөлуге болады:

циклды дайындау (инициализациялау) (AND);

циклдық есептеулерді орындау (цикл денесі) (Т);

параметрді өзгерту (M);

циклдің аяқталу шартын тексеру (U).

Бұл қадамдарды орындау реті, мысалы, T және M, әртүрлі болуы мүмкін. Сынақтың орнына байланысты циклды аяқтау шарттары төменгі және жоғарғы ұштары бар ілмектерді ажыратады. Төменгі ұшы бар цикл үшін цикл денесі кем дегенде бір рет орындалады, өйткені алдымен есептеулер орындалады, содан кейін циклден шығу шарты тексеріледі.


Жоғарыдан аяқталған цикл жағдайында, шығу шарты дереу орындалса, цикл денесі бір рет болса да орындалмауы мүмкін.

Егер цикл денесінің қайталану саны белгілі немесе алдын ала анықталған болса, цикл детерминирленген деп аталады. Егер цикл денесінің қайталану саны алдын ала белгілі болмаса, бірақ есептеулерге қатысатын параметрлердің (кейбір айнымалылар) мәндеріне байланысты болса, цикл итеративті деп аталады.

Цикл денесіБұл бағдарламаның бірнеше рет қайталанатын бөлігі.

Цикл параметріцикл қайталанған сайын жаңа мәндер қабылдайтын айнымалы (қарапайым және күрделі циклдар бар).

n рет циклінің жалпы көрінісі

Жалпы алғанда, цикл n рет келесі түрде жазылады:

nc қайталау саны

Қызметтік сөз nts (циклдің басы) және kts (циклдің соңы) бірінің астына қатаң жазылады және тік жолақ арқылы байланысады. Осы жолдың оң жағында командалардың қайталанатын тізбегі (цикл денесі) жазылады.

Қайталану саны ерікті бүтін сан.

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

Циклдің жалпы көрінісі

Жалпы алғанда, цикл келесі түрде жазылады:

nc қоштасу шарты

| цикл денесі (пәрмендер тізбегі)

Циклды орындаған кезде компьютер келесі қадамдарды қайталайды:

а) қызметші сөзден кейін жазылған шартты тексереді;

б) шарт орындалмаса, онда циклдің орындалуы аяқталып, компьютер кт-тен кейін жазылған командаларды орындауға кіріседі. Егер шарт орындалса, онда компьютер цикл денесін орындайды, шартты қайтадан тексереді және т.б.

үшін циклдің жалпы көрінісі

i үшін i1-ден i2-ге дейін nc

| цикл денесі (пәрмендер тізбегі)

Мұнда i – бүтін түр мәнінің атауы, i1, i2 – ерікті бүтін сандар немесе бүтін мәндері бар өрнектер. Цикл денесі i = i1, i = i1 + 1, i1 + 2, …i = i2 үшін дәйекті түрде орындалады.

Алгоритмдік тілдің ережелері i1, i2 кез келген бүтін сандарды көрсетуге мүмкіндік береді. атап айтқанда, i2 i1-ден аз болуы мүмкін. бұл жағдай қате деп есептелмейді - тек циклдің денесі бір рет болса да орындалмайды, ал компьютер бірден kts-тен кейін жазылған командаларды орындауға кіріседі.

n рет цикл және while циклі

n рет және осы уақытқа дейінгі циклдар алгоритмдік тілде шамамен бірдей түрде орналастырылған. Бұл таңқаларлық емес, өйткені бұл командалардың екеуі де циклды - қайталанатын командалар тізбегін орнатады. nts және kts қызметтік сөздері циклдің орындалып жатқанын көрсетеді, ал цикл тақырыбы оны орындаудың нақты механизмін көрсетеді.

Дегенмен, бұл екі циклдің бір маңызды айырмашылығы бар. Циклды n рет орындауды бастағанда, компьютер цикл денесін қанша рет қайталау керектігін біледі. Циклды орындаған кезде бұл әлі болмайды: компьютер циклдің күйін әр жолы тексереді және орындаудың қашан аяқталатынын алдын ала анықтай алмайды. Циклдың қайталану санын цикл аяқталғанға дейін ғана біле аласыз.

Бұл қандай жағдайларда қандай циклді пайдалану керектігін түсіндіреді. Егер қайталану саны цикл басталғанға дейін белгілі болса, циклды n рет қолданған ыңғайлы. Қайталану санын алдын ала анықтау мүмкін болмаса, ұзақ цикл қажет.

Мысалы, автоматты басқару бағдарламасы суретте көрсетілген құрылымға ие. бір. Циклге енгізілген модульдер(сондай-ақ үзілістерді өңдеу модульдері), әрқайсысы бір кіріс және бір шығысы бар, әдетте өзіне тән қасиетке ие: модульдер ағымдағы циклде мән тағайындалған статикалық айнымалыларды қамтиды және бұл айнымалылардың талдауы келесі циклде орындалады. Осылайша, аталған айнымалылар токтың соңындағы немесе келесі бағдарлама циклінің басындағы модульдің күйін сипаттайды. Болашақта циклдік бағдарламалардың тек осындай модульдерін қарастырамыз және оларды қысқаша MCP деп белгілейміз.


1-сурет. Шексіз циклі бар басқару бағдарламасының типтік құрылымы.

MCP әртүрлі құрылымға ие, олардың күрделілігі арнайы критерийлер бойынша бағалануы керек. В.В.Липаев программалық модульдердің күрделілігінің ыңғайлы және объективті критерийін ұсынды, атап айтқанда: модульдің басқару графигіндегі жолдардың саны мен жалпы ұзындығы. Бұл тек шартты және таңдаулы мәлімдемелерді ескереді. Дегенмен, бұл критерий статикалық жады бар MCP үшін жеткіліксіз, өйткені MCP талдау кезінде алдыңғы циклде орнатылған барлық статикалық айнымалылардың мәндерін есте сақтау қажет. Сонымен қатар, C және Pascal сияқты кең таралған бағдарламалау тілдерінде бұрыннан белгілі құрылымдық бағдарламалауды қоспағанда, алгоритмдер мен бағдарламаларды стандарттау бойынша ұсыныстар жоқ. Бұл мақала MCP-ге қатысты осы олқылықтарды толтыруды ұсынады.

2. Циклдік бағдарламалар модульдерінің фрагменттері

Екі полюсті фрагмент немесе жай ғана фрагмент, қарастырылып отырған MCP құрылымды деген болжаммен бір кіріс және бір шығыс (оның ішінде цикл операторлары) бар бағдарлама бөлімін қарастырамыз. Ең қарапайым фрагментке бір оператор кіреді. Фрагменттердің тізбегі де фрагмент болып табылады. MCP, өз кезегінде, фрагмент болып табылады және фрагменттердің тізбегінен тұрады.

Шешім кестелерін жүзеге асыратын модульдердің құрылымын синтездеу үшін тәуелсіз фрагменттердің әдісі ұсынылған. Бұл жағдайда фрагмент тәуелсіз болып саналады, егер оны модуль фрагменттерінің тізбегінің кез келген жеріне енгізуге болатын болса. Мұндай фрагменттің орналасуының тәуелсіздігі ондағы талданатын деректер фрагменттердің көрсетілген тізбегінде құрылмауымен, ал тәуелсіз фрагментте құрылған деректердің бұл фрагмент тізбегінде талданбауымен түсіндіріледі. Сондықтан тәуелсіз фрагменттерді параллель (псевдопараллель) орындауға болады. Суретте. 2 екі тәуелсіз фрагменттері бар модульдің мүмкін іске асырылуын көрсетеді. «a» және «b» нұсқаларында фрагменттер бағдарламаның мәнін бұрмаламай қайта реттеледі; «c» нұсқасында фрагменттер параллель орындалады.


2-сурет. Тәуелсіз фрагменттері бар модульді іске асыру опциялары:

а) және б) - дәйекті жүзеге асыру,

в) - параллельді жүзеге асыру: қос көлденең сызық бағдарламаның параллелизациясын көрсетеді, қалың көлденең сызық параллель процестердің аяқталғанын көрсетеді.

Тәуелді фрагмент - модульдегі басқа фрагмент(тер)дің орналасуына тәуелді болатын фрагмент. Біз жоғарғы және төменгі тәуелді фрагменттерді ажыратамыз. Жоғарыдан тәуелді фрагмент әрқашан осы (тәуелді) фрагментте қолданылатын айнымалылар жасалған кейбір фрагменттердің астында орналасуы керек. Төменгі жағынан тәуелді фрагмент әрқашан осы фрагментте жасалған айнымалы мәндерді пайдаланатын фрагменттің үстіне орналастырылуы керек. Екі тәуелді фрагменттердің бірі екіншісіне жоғары, екіншісі төменнен біріншіге тәуелді, өзара тәуелді фрагменттер деп аталады. Оларды алмастыру мүмкін емес және параллельді жүзеге асыру мүмкін емес. Суретте. 3 өзара тәуелді фрагменттері бар модульдің мысалын көрсетеді. Өзара тәуелді фрагменттердің арасында олардан тәуелді немесе тәуелсіз басқалары болуы мүмкін. 3-сурет. Тәуелді фрагменттері бар модуль.

Тұрақты фрагментті тәуелді фрагмент деп атаймыз, оның модульдегі орны қатаң анықталған. Мысалы, пернетақтадан енгізілген таңбаны тану модулінде біріншісі тікелей енгізілген символдың төменнен тәуелді фрагменті болуы керек. Модульдің «бастау» және «аяқтау» операторлары тұрақты фрагменттер болып табылады.

Абсолютті тәуелсіз фрагменттер жоқ, егер кез келген модульде басы мен соңының тұрақты фрагменттері айтылғандықтан ғана. Демек, тәуелсіз фрагмент, жалпы алғанда, екі өзара тәуелді фрагменттермен шектелген ықтимал орналасу аймағына ие. Яғни, тәуелсіз фрагменттің неғұрлым қатаң анықтамасы келесідей: біз екі тұрақты фрагментке қатысты тәуелсіз деп атаймыз, мұндай фрагменттерді жоғарыдан және төменнен көрсетілген бекітілген фрагменттермен шектелген фрагменттердің тізбегінің кез келген жерінде орналастыруға болады.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!