Мета роботи: засвоєння поняття позиційної системи числення, методи переходу з однієї системи числення в іншу, набуття навиків програмування операцій переходу, закріплення навиків застосування циклів та символьних змінних.
ЗАВДАННЯ:
ПРОТАБУЛЮВАТИ ЗАДАНУ ФУНКЦІЮ Y=F(X) В ІНТЕРВАЛІ [A,B] З КРОКОМ X.
Задано функцію 13.2x–3+12.3x2+14.1x–4–11.4x і значення меж інтервалу та кроку табулювання: a=0; b=10; x= 0.13;
ПОСТАНОВКА ЗАДАЧІ.
Вхідними даними програми є границі інтервалу табулювання а, b та крок зміни аргументу x. Спосіб введення даних (присвоєнням, з клавіатури, раніш підготованих у файлі даних, чи використовуючи типізовані константи) обирається розробником програми. Методом розрахунку є безпосереднє обчислення значення за заданою формулою. При більш складних функціях обчислення реалізується за допомогою підпрограми-функції. Обчислення повторюються багаторазово для різних значень аргументу.
Виведення результатів обчислень ускладнюється тим, що всі задані для обчислення значення функції не можуть бути одночасно розміщені на екрані. Тому необхідно організувати поекранний вивід, а саме:
вивести ту кількість рядків таблиці, яка розміщується на екрані (сторінку);
затримати подальший вивід до команди користувача (натиснення клавіші);
вивести наступну сторінку з початку екрану.
На екран мають бути виведені (див. Рис. 0.1):
шапка таблиці;
значення аргументу та відповідні значення функції;
номер виведеної сторінки.
Сторінка хх
+--------------+-------------+
| Аргумент | Функція |
+--------------+-------------+
| | |
Рис. 0.1. Ескіз формату виведення таблиці на екран EOM.
2.РОЗРОБКА СТРУКТУРИ ДАНИХ.
Для реалізації поставленої задачі необхідно передбачити крім змінних, що містять початкові дані, змінні та константи для зберігання допоміжних величин, таких як кількість рядків на сторінку, номер сторінки, проміжних змінних для спрощення запису заданого виразу та скорочення кількості операцій, тощо. Приклад розробки структури даних приведений в Табл. 0.1.
Табл. 0.1. Розробка структури даних.
Позначення
Ім’я
Тип
Призначеня, опис
а
a
дійсна змінна
початок інтервалу табулювання, вхідна
b
b
-“-
кінець інтервалу табулювання, вхідна
x
x
-“-
аргумент функції
x
dx
-“-
крок табулювання, вхідна
f(x)
fx(x)
функція
підпрограма обчислення функції
y
y
дійсна змінна
значення функції
Row
ціла змінна
номер рядка на сторінці
Page
-“-
номер сторінки
ColumnsNum
-“-
кількість рядків, що можуть бути розміщені на сторінці
3.РОЗРОБКА АЛГОРИТМУ
Після введення вхідних даних доцільно очистити екран та вивести шапку таблиці і номер сторінки. Оскільки кількість обчислень можна визначити, то для табулювань потрібно використати цикл з параметром. Для визначення моменту заповнення екрану необхідно організувати лічильник виведених рядків таблиці та порівнювати його з кількістю рядків, що можуть бути розміщені на екрані. При заповненні екрану необхідно організувати затримку, обнулити лічильник рядків, збільшити на 1 лічильник сторінок та продовжити виведення з першого рядка. Для обчислення складної функції, доцільне виділення її у підпрограму. Спрощена блок схема алгоритму наведена на Рис. 0.2.
Рис. 0.2. Блок-схема алгоритму табулювання функції.
4.ТЕКСТ ПРОГРАМИ.
program table;
uses CRT;
const MaxRowsNum=24;
var a,b,dx,x,y:real;
Page:integer;
Row:integer;
ColumnsNum:integer;
function f(a:real):real;
begin
if a<>0 then
f:=13.2*exp((-3)*ln(a))+12.3*sqr(a)+14.1*exp((-4)*ln(a))-11.4*a
else f:=0;
end;
Procedure Zatrymka;
begin
Repeat until KeyPressed;
end;
begin
ClrScr;
WriteLn('Obchyslennja znachen funktsiji ');
WriteLn('y=13.2*exp((-3)*ln(a))+12.3*sqr(a)+14.1*exp((-4)*ln(a))-11.4*a');
Write('Liva granytsja intervalu: '); ReadLn(a);
Write('Prava granytsja intervalu: '); ReadLn(b);
Write('Krok: '); ReadLn(dx);x:=a;
ClrScr;
Page:=1;Row:=5;
GotoXY(1,1);Write('Storinka:');GotoXY(10,1);Write(Page);
GotoXY(1,2);
WriteLn('+--------------------------------------+--------------------------------------+');
WriteLn('| Argument | Functsija |');
WriteLn('+--------------------------------------+--------------------------------------+');
repeat
y:=f(x);
GotoXY(1,Row);Write('|');GotoXY(40,Row);Write('|');GotoXY(79,Row);Write('|');
GotoXY(2,Row);
Write(x:8:3);
GotoXY(41,Row);
Write(y:8:3);
inc(Row);
x:=x+dx;
if Row=MaxRowsNum
then
begin
GotoXY(10,1);
Write(Page);
Zatrymka;
Row:=5;
Inc(Page);
end;
until x>b;
Zatrymka;
end.
5.Перевірка програми:
Висновок : я ознайомився з циклічними алгоритмами, а також з табулюванням функцій, з операторами керованого виводу в текстовому режимі, операторами вводу одного символа, а також з підпрограмою – функції.
Міністерство освіти і науки україни
НУ «Львівська Політехніка»
Кафедра теоретичної радіотехніки та радіовимірювань
ЗВІТ З ЛАБОРАТОРНОЇ РОБОТИ№6
НА ТЕМУ «ТАБУЛЮВАННЯ ФУНКЦІЇ ОДНОГО АРГУМЕНТУ».
з дисципліни «Інформатика та обчислювальна техніка»
Варіант №9
Підготував :
студент
групи РТ-11
Федак Роман
Прийняв:
Нестор Н. І.
Львів 2010р.