МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА, кафедра “Захист інформації”
ЗВІТ
З ЛАБОРАТОРНОЇ РОБОТИ № 5
З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ”
НА ТЕМУ: “ПРОГРАМИ З РОЗГАЛУЖЕНИМИ ТА ЦИКЛІЧНИМИ
АЛГОРИТМАМИ “
Варіант 23
Львів – 2007
ЗАВДАННЯ
1. Вивчити синтаксис, призначення, принцип роботи і використання операторів мови СІ та основних функцій введення-виведення.
2. Скласти блок-схеми алгоритмів та програми мовою СІ для табулювання функцій. Забезпечити ввід значень інтервалу, кроку і похибки табулювання з клавіатури і вивід результатів на дисплей. Дані для роботи беруться з таблиць 1 і 2 за вказівкою викладача:
а) табулювання функції (див. табл.1), що вибирається залежно від значення аргумента, на проміжку [a, b] з кроком табуляції h.
Таблиця 1
Функції
Умови для вибору функцій
Крок, h
Інтервал, [a,b]



0.2
[3, 8]


Таблиця ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення:
min
Початкова точка, в якій обчислити значення функції

max
Кінцева точка, в якій обчислити значення функції

y
Значення функції, яке обчислюється за допомогою стандартних функцій

h
Крок зміни аргументу x

x
Змінна, в якій обчислюється значення функції

main()
Головна функція

clrscr()
Функція очищення екрану

printf()
Функція виведення даних

scanf()
Функція введення даних

log()
Функція обчислення натурального логарифма

fabs()
Функція знаходження абсолютного значення типу double

cos()
Функція обчислення косинуса


Текст програми мовою C
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main(void)
{
clrscr();
double x,y,min,max,h;
printf("a=");
scanf("%lf",&min);
printf("b=");
scanf("%lf",&max);
printf("krok=");
scanf("%lf",&h);
for(x=min;x<max;x+=h)
{
if (x<5) y=log(fabs (log(fabs(log(x)/log(3)))/log(4))) /log(5);
if (5<=x<7) y=1/(x*x+16);
if (x>=7) y= log(x)+cos(x);
printf("x=%4.4lf, y=%4.1lf\n",x,y);
}}
Результати роботи програми:
a=3
b=8
krok=0.2
x=3.0, y=0.0400
x=3.2, y=0.0381
x=3.4, y=0.0363
x=3.6, y=0.0345
x=3.8, y=0.0329
x=4.0, y=0.0312
x=4.2, y=0.0297
x=4.4, y=0.0283
x=4.6, y=0.0269
x=4.8, y=0.0256
x=5.0, y=0.0244
x=5.2, y=0.0232
x=5.4, y=0.0221
x=5.6, y=0.0211
x=5.8, y=0.0201
x=6.0, y=0.0192
x=6.2, y=0.0184
x=6.4, y=0.0176
x=6.6, y=0.0168
x=6.8, y=0.0161
x=7.0, y=2.6998
x=7.2, y=2.5824
x=7.4, y=2.4400
x=7.6, y=2.2794
x=7.8, y=2.1081
x=8.0, y=1.9339
б) табулювання функції, представленої рядом (див. табл.2), на інтервалі [a, b] з кроком табуляції h та абсолютною похибкою d. Оцінку похибки здійснювати за значенням модуля чергового члена ряду.
Таблиця 2
Функція
Інтервал, [a, b]
Крок, h
Похибка, d


[0, 0.2]
0.02
0.001


Таблиця ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення:
min
Початкова точка, в якій обчислити значення функції

max
Кінцева точка, в якій обчислити значення функції

suma
Значення суми ряду

h
Крок зміни аргументу x

x
Змінна, в якій обчислюється значення функції

Un
Член ряду

poh
Похибка

n
Кількість обчислень функції в різних точках

f
Обчислення факторіалу функції

main()
Головна функція

clrscr()
Функція очищення екрану

printf()
Функція виведення даних

scanf()
Функція введення даних

fabs()
Функція знаходження абсолютного значення типу double

pow(x,y)
Функція обчислення х в степені у


Текст програми мовою C
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main(void)
{
clrscr();
double x,min,max,h,suma,f,poh,Un;
int n;
printf("a=");
scanf("%lf",&min);
printf("b=");
scanf("%lf",&max);
printf("krok=");
scanf("%lf",&h);
printf("pohybka=");
scanf("%lf",&poh);
for (x=min;x<max;x+=h)
{
Un=1;
suma=0;
f=1;
n=1;
while(fabs(Un)>=poh+0.000000001)
{
f*=(2*n-1);
Un=(pow(x,2*n)-1)/f;
suma+=Un;
n++;
}
printf("Suma=%lf, x=%4.2lf, n=%i, Un=%4.15lf\n" ,suma,x,n,Un);
}}
Результати роботи програми:
a=0
b=0.2
krok=0.02
pohybka=0.001
Suma=-1.410678, x=0.00, n=7, Un=-0.000096200096200
Suma=-1.410278, x=0.02, n=7, Un=-0.000096200096200
Suma=-1.409077, x=0.04, n=7, Un=-0.000096200096200
Suma=-1.407074, x=0.06, n=7, Un=-0.000096200096200
Suma=-1.404265, x=0.08, n=7, Un=-0.000096200096200
Suma=-1.400645, x=0.10, n=7, Un=-0.000096200096200
Suma=-1.396209, x=0.12, n=7, Un=-0.000096200096199
Suma=-1.390950, x=0.14, n=7, Un=-0.000096200096195
Suma=-1.384859, x=0.16, n=7, Un=-0.000096200096173
Suma=-1.377926, x=0.18, n=7, Un=-0.000096200096089
Suma=-1.370141, x=0.20, n=7, Un=-0.000096200095806
Висновок: На цій лабораторній роботі я вивчив оператори мови Сі та основні функції введення-виведення даних, навчився складати та відлагоджувати розрахункові програми з розгалуженими та циклічними структурами.