Лабораторна робота
Тема:
ЦИКЛІЧНІ ПРОГРАМИ З РЕГУЛЯРНОЮ
ЗМІНОЮ АРГУМЕНТУ.
Мета роботи: оволодiння прийомами складання циклiчних алгорит-
мiв i програм, освоїння оператора циклу з рiвно-
мiрним приростом аргумента.
Завдання: знайти о якщо відомо що , dпоч.=3.6,
крок зміни – 4, кількість інтервалів 14, а = -8.6, b = 3.28.
Короткі теоретичні відомості:
Циклом називаїться обчислювальний процес, який багаторазово
повторюїться. Вiн характерний наявнiстю аргумента, iнакше - пара-
метра циклу. Це змiнна, яка перед циклом одержуї початкове зна-
чення, а в циклi нарощуїться i перевiряїться на досягнення кiнце-
вого значення, що ї умовою закiнчення циклу. Розрiзняють цикли з
рiвномiрним приростом аргумента, якi називають ще арифметичними
або типу арифметичноє прогресiє, та iтерацiйнi або перерахунку.
Цикл з рiвномiрним приростом аргумента ї найбiльш вживаним.
Число його виконань n можна обчислити за формулою:
n=----------- +1,
де Xп, Xк, h - вiдповiдно, початкове i кiнцеве значення та при-
рiст параметра циклу.
Для програмування циклу арифметичного типу служать оператори:
- циклу: FOR(Вираз1;Вираз2;Вираз3) оператор;
тут: Вираз1 - присвоїння параметру циклу початкового значення;
Вираз2 - умова, перевiрка на досягнення параметром циклу
кiнцевого значення;
Вираз3 - нарощення параметра циклу;
оператор - простий оператор або блок, тiло циклу.
- продовження: CONTINUE;
29
Останнiй оператор може знаходитися в тiлi циклу i його дiя по-
лягаї в переходi на кiнець циклу, тобто на нарощення параметра i
перевiрку умови закiнчення циклу.
В тiлi циклу може також знаходитися оператор break, його вико-
нання приводить до передчасного виходу з циклу.
Блок-схема матиме такий вигляд
Початок
а = -8.6, b = 3.28,
dпоч.=3.6, n=1.
друк
d,o
n ++, d+=4.
так
n ? 14
ні
Кінець
Ідентифікація змінних:
Змінна | Ідентифікатор
a | a
b | b
o | o
d | d
n | n
Програма:
Варіант №1
for |
Варіант №2
do while
#include <math.h>
main()
{
int n;
float a=-8.6,b=3.28,d=3.6,o;
clrscr();
for(n=1;n<=14;n++)
{
o=(1+d+pow(d,4)/b)/pow(exp(d)+a,1/3);
printf("При d[%d]=%.1f:
o[%d]=%.2f\n",n,d,n,o);
d+=4;
}
getch();
} | #include <math.h>
main()
{
int n;
float a=-8.6,b=3.28,d=3.6,o;
clrscr();
n=1;
do
{
o=(1+d+pow(d,4)/b)/pow(exp(d)+a,1/3);
printf(" При d[%d]=%.1f: o[%d]=%.3f\n",n,d,n,o);
d+=4;
n++;
}
while(n<=14);
getch();
}
Варіант №3
if |
Варіант №4
while
#include <math.h>
main()
{
int n;
float a=-8.6,b=3.28,d=3.6,o;
clrscr();
n=1;
begin:o=(1+d+pow(d,4)/b)/pow(exp(d)+a,1/3);
printf("При d[%d]=%.1f: o[%d]=%.3f\n",n,d,n,o);
d+=4;
n++;
if(n<=14) {goto begin;}
else {goto end;}
end:getch();
} |
#include <math.h>
main()
{
int n;
float a=-8.6,b=3.28,d=3.6,o;
clrscr();
n=1;
while(n<=14)
{
o=(1+d+pow(d,4)/b)/pow(exp(d)+a,1/3);
printf("При d[%d]=%.1f: o[%d]=%.3f\n",n,d,n,o);
d+=4;
n++;
}
getch();
}
Результати:
При d[1] = 3,6 o[1]= 55.508
При d[2] = 7.6 o[2]= 1025.740
При d[3] = 11.6 o[3]= 5532.843
При d[4] = 15.6 o[4]= 18072.727
При d[5] = 19.6 o[5]= 45014.172
При d[6] = 23.6 o[6]= 94599.133
При d[7] = 27.6 o[7]= 176942.719
При d[8] = 31.6 o[8]= 304033.250
При d[9] = 35.6 o[9]= 489732.062
При d[10] = 39.6 o[10]= 749773.938
При d[11] = 43.6 o[11]= 1101766.750
При d[12] = 47.6 o[12]= 1565191.250
При d[13] = 51.6 o[13]= 2161401.750
При d[14] = 55.6 o[14]= 2913625.500
Висновок: Я оволодiв прийомами складання циклiчних алгорит-
мiв i програм, освоїв оператор циклу з рiвно-
мiрним приростом аргумента.
Циклічні програми, які містять розгалуження:
Завдання: Обчислити члени послідовності
які задовольняють умову 1.5<a<3.8; m=1,2,3,...,16.
Ідентифікація змінних:
Змінна | a | m
Ідентифікатор | а | m
Графічний алгоритм матиме вигляд:
ні
так
Програма:
#include<math.h>
main()
{
int m;
float a;
for(m=1;m<=16;m++)
{
a=log(pow(m,2)+sqrt(m));
if((a>1.5)&&(a<3.8))
{
printf("При m=%d: a=%f;\n",m,a);
}
}
getch();
}
Результати:
При m=2: a=1.689028;
При m=3: a=2.373235;
При m=4: a=2.890372;
При m=5: a=3.354542;
При m=6: a=3.649345;