Міністерство освіти і науки України
Національний університет “Львівська політехніка”
ІКТА
кафедра ЗІ
/
ЗВІТ
до лабораторної роботи №2
з курсу: «Технології програмування, частина 1»
на тему: «Програми з розгалуженими та циклічними алгоритмами»
Варіант № 23
Мета роботи - вивчити оператори мови Сі та основні функції введення-виведення даних, навчитися складати та відлагоджувати розрахункові програми з розгалуженими та циклічними структурами.
1. Завдання (a)
Скласти програму мовою Сі для табулювання функцій. Забезпечити ввід значень інтервалу, кроку і похибки табулювання з клавіатури і вивід результатів на дисплей. Табулювання функцій вибирається залежно від значення аргумента, на проміжку [3, 8] з кроком табуляції 0.5.
/
2. Блок-схема алгоритму програми
3. Cписок ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі,
та їх пояснення
#include <stdio.h> - включення файлів
#include <math.h>
main() – головна функція;
y – зміна дійсного типу, якій надається значення результату обчислення виразу;
printf() – функція виводу даних;
scanf() – функція вводу даних;
log() - обчислення натурального логарифму;
fabs() - обчислення абсолютного значення виразу;
cos(y) – обчислення косинусу y;
return 0 – повернення функції нульового значення;
4. Текст програми
#include <stdio.h> // включення файлів
#include <math.h> //stdio.h і math.h до програми
int main() { //визначення головної функції
double a,b,h,x,y; //оголошення змінних
printf("\t\t Enter interval [a,b] and step h \n\n"); //Виведення тексту на дісплей
printf(" a = "); //Виведення тексту на дісплей
scanf("%lf", &a); //зчитування з клавіатури значення double та присвоєння його змінній а
printf(" b = ");
scanf("%lf", &b);
printf(" h = ");
scanf("%lf", &h);
for(x=a; x<=b; x+=h){ //умова циклу
if(x<5) //умова ініціальзації змінної y
y=log(5+(fabs(log(fabs(log(x)/log(3)))/(log(4)))))/log(5); //ініціалізація змінної y
else if (x>=5 && x<7)
y=1.0/(x*x + 16); //ініціалізація змінної y
else if (x>=7)
y=log(x) + cos(x); //ініціалізація змінної y при умові
else break;
printf(" x = %lf\t y = %lf\n", x,y); //Виведення змінних х та у на дісплей
}
return 0; //повернення функції нульового значення
}
/
5. Результати роботи програми
a = 3
b = 8
h = 0.5
/
1. Завдання (б)
Скласти програму мовою Сі для табулювання функцій. Забезпечити ввід значень інтервалу, кроку і похибки табулювання з клавіатури і вивід результатів на дисплей. Табулювання функцій вибирається залежно від значення аргумента, на проміжку [3, 8] з кроком табуляції 0.5.
/
2. Блок-схема алгоритму програми
3. Cписок ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі,
та їх пояснення
res – задана функція;
x – аргумент функції;
а – початок заданого проміжку;
b – кінець заданого проміжку;
h – крок табулювання функції;
pohibka – абсолютна похибка;
for - цикл з передумовою;
if – умовний оператор;
main() – головна функція;
printf() – функція виводу даних;
scanf() – функція вводу даних;
pow(x,y) – обчислення х в степені у;do while – цикл з післяумовою; рішення, виконувати чи не виконувати в черговий раз тіло циклу, приймається після його проходження
4. Текст програми
#include <stdio.h>
#include <math.h>
int main() {
double a,b,h,pohibka,x,res,s;
int n,q,i;
printf(" a = ");
scanf("%lf", &a);
printf(" b = ");
scanf("%lf", &b);
printf(" Step = ");
scanf("%lf", &h);
printf(" Pohibka = ");
scanf("%lf", &pohibka);
for(x=a; x<=b+h/10.0; x+=h){
n = 1;
s = 0.0;
do{
for(i=n; i<=(2*n - 1.0); i++){
q*=i;
}
s+=res;
res = (pow(x,2*n) - 1)/q;
n++;
} while (fabs(res) > pohibka);
printf("x=%lf\t s=%lf\t res=%lf\n",x,s,fabs(res));
}
return 0;
}
/
5. Результати роботи програми
a = 0.1
b = 0.2
h = 0.01
pohibka = 0.001
/
Висновок: на лабораторній роботі я навчився викорисовувати оператори мови Сі та основні функції введення-виведення даних, складати та відлагоджувати розрахункові програми з розгалуженими та циклічними структурами.