МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
кафедра „ЗАХИСТ ІНФОРМАЦІЇ”
EMBED Word.Picture.8
ЗВІТ
до лабораторної роботи № 5 б
З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ”
на тему:
АЛГОРИТМІЧНА МОВА ПРОГРАМУВАННЯ Сі.
ПРОГРАМИ З РОЗГАЛУЖЕНИМИ ТА ЦИКЛІЧНИМИ
АЛГОРИТМАМИ
Варіант № 9
Виконав:
студент групи ІБ – 1
Львів - 2007
Мета роботи – вивчити оператори мови Сі та основні функції введення-виведення даних, навчитися складати та відлагоджувати розрахункові програми з розгалуженими та циклічними структурами.
2. ПОВНИЙ ТЕКС ЗАВДАННЯ
Скласти блок-схемy алгоритмy та програмy мовою Ci для табулювання функції, представленої рядом:
EMBED Equation.3
на відрізку [-1, 1] з кроком 0.1 і похибкою 0.001.
Забезпечити ввід значень інтервалу, кроку та похибки табулювання з клавіатури і вивід результатів на дисплей.
3. ОСТАТОЧНА ВЕРСІЯ БЛОК-СХЕМИ АЛГОРИТМУ
k := 0; y: = 0
|y| < d
початок
ввід a, b, h, p
x = a
так
x ≤ b+h/2
очікування натискання
будь-якої клавіші
кінець
так
y:= y+ z ;k: = k + 1
вивід x ,y, z
x: = x + h
ні
ні
4. СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ПРОЦЕДУР І ФУНКЦІЙ, ВИКОРИСТАНИХ У ПРОГРАМІ, ТА ЇХ ПОЯСНЕННЯ
a, b, h, x, y, s, d – змінні типу double для зберігання введених даних та результату роботи програми;
clrscr() – функція очистки екрана яка об’явлена в модулі conio.h;
getch() – функція яка чекає натискання будь-якої клавіші;
printf() – функція виведення текстових повідомлень і значень змінних на екран;
scanf() – функція яка зчитує дані з клавіатури та присвоює відповідне значення змінним;
cos(x) – функція знаходження косинуса кута x заданого в радіанах;
pow(x,y) – функція для піднесення х в степінь у;
fabs(x) – функція яка повертає модуль дійсного числа х;
5. ОСТАТОЧНА ВЕРСІЯ ПРОГРАМИ
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
clrscr();
double y,z,x,a,b,h,p;
int k;
printf("wedit interval [a;b]:\n a=");
scanf("%lf",&a);
printf(" b=");
scanf("%lf",&b);
printf("\nwedit krok 'h'\n h=");
scanf("%lf",&h);
printf("\nwedit pohubky 'p'\n p=");
scanf("%lf",&p);
x=a;
while (x<=b+h/2)
{
k=0;y=0;
do
z=x*sin(2*k+1)/pow(2*k+1,3);
y+=z;
k++;
if (fabs(z)<=p) break;
} while (1)
printf("\nx=%e\ty=%lf\tz=%lf",x,y,z);
x+=h;
}
getch();
return 0;
}
. РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ
wedit interval [a;b]:
a=-1
b=1
wedit krok 'h'
h=0.1
wedit pohubky 'p'
p=0.001
x=-1.000000 y=-0.841507 z=-0.000565
x=-0.900000 y=-0.757356 z=-0.000509
x=-0.800000 y=-0.673206 z=-0.000452
x=-0.700000 y=-0.589055 z=-0.000396
x=-0.600000 y=-0.504904 z=-0.000339
x=-0.500000 y=-0.420471 z=-0.000958
x=-0.400000 y=-0.336377 z=-0.000766
x=-0.300000 y=-0.252283 z=-0.000575
x=-0.200000 y=-0.168188 z=-0.000383
x=-0.100000 y=-0.084670 z=-0.000523
x=-0.000000 y=-0.000000 z=-0.000000
x=0.100000 y=0.084670 z=0.000523
x=0.200000 y=0.168188 z=0.000383
x=0.300000 y=0.252283 z=0.000575
x=0.400000 y=0.336377 z=0.000766
x=0.500000 y=0.420471 z=0.000958
x=0.600000 y=0.504904 z=0.000339
x=0.700000 y=0.589055 z=0.000396
x=0.800000 y=0.673206 z=0.000452
x=0.900000 y=0.757356 z=0.000509
x=1.000000 y=0.841507 z=0.000565
7. ВИСНОВОК
На даній лабораторній роботі я навчився використовувати найпростіші математичні операції мови Сі, вивчив синтаксис функцій введення-виведення, навчився підлагоджувати найпростіші програми з розгалуженими та циклічними алгоритмами. Як наслідок було створено програму яка табулює функцію задану рядом з деякою точністю.