МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА, кафедра “Захист інформації” ЗВІТ З ЛАБОРАТОРНОЇ РОБОТИ № 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 Висновок: На цій лабораторній роботі я вивчив оператори мови Сі та основні функції введення-виведення даних, навчився складати та відлагоджувати розрахункові програми з розгалуженими та циклічними структурами.