Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зразок курсової.doc
Скачиваний:
0
Добавлен:
16.08.2019
Размер:
1.1 Mб
Скачать

1. Постановка задачі

У файлі розташовані 400 дійсних чисел. Кожна з чотирьох сотень чисел x1, y1, x2, y2, ... , x50, y50 визначає таблицю значень деякої функції на відрізку [x1,x50]. Небхідно побудувати графіки всіх функцій з файлу в різних кутах екрану різним кольором.

2. Аналіз предметної області

Алгоритм програми, представлений у пояснювальній записці надає можливість наочно демонструвати побудову графіків за координатами, взятими із файла.

Подібних програм існує дуже багато. Вони розробляються, в основному, як учбово-розважальні додатки і несуть науково дослідницький характер. Вони орієнтовані в основному на широкого користувача, що бажає опанувати дану дисципліну і бажає наочно побачити деякі положення цієї дисципліни. Однак існують і більш серйозні програми такого виду, що знайшли своє застосування в професійному середовищі. Використання таких програм доцільно при дослідженнях які треба робити в широких обсягах. Можливе їхнє застосування і для імітації яких-небудь законів і положень дисципліни в дослідницьких цілях.

Як видно, з перерахованого вище, звичайні на перший погляд програми знаходять своє широке застосування в реальному житті.

3. Математична модель

У розглянутій програмі використовуються алгебраїчні формули, такі як:

1). У = 0,5·х² - 3;

2). У = х·(х²-4);

3). У = 2·cos(х-1)+|x|;

4). У = 0,5·х-5;

5). У = 2·sin(x);

6). У = (3·х+3)/(0,2·х-3);

та використовуються їх графіки відповідно до функцій. Перевіряється також існування значень функцій на числовій осі.

4. Опис програми Опис логічної структури

Написання програми як щось єдине ціле, без розчленовування на самостійні фрагменти, тобто без структурування, просто неможливо. Ця програма складається з основної частини і викликуваних у ній у міру необхідності процедур і функцій, що забезпечують рішення окремих задач.

4.1 Алгоритм на основі якого написана програма

Крок1: Перевірка роботи графічного режиму. У випадку неправильної роботи видається повідомлення.

Крок 2 : Ініціалізація перемінних і графічного режиму.

Крок3 : Виконується підпрограма POCHATOK, що має призначення заставки.

Крок 4 : Присвоєння перемінним строкового типу z1, z2, z3, z4 значень:

z1:=’in the high left corner’;

z2:=’ in the high right corner’;

z3:=’ in the low left corner’;

z4:=’ in the low right corner’;

Крок5: Виконується підпрограма MENU1 з фактичними параметрами z1, 5, 15, яка малює в центрі екрану прямокутник, заповнений кольором 5 , і виводиться запит про те, в якому місці екрану повинен розміститися графік (строка z1).

Крок 6 : Виконується підпрограма MENU, яка до повідомлення, описаного в кроці 5, додає запит і перелік функцій, графіки яких користувач хотів би побачити; чекає на натискання відповідної до номера функції клавіші і переходить до кроку 7.

Крок7: Виконується підпрограма COORDMAS з фактичним параметром а, яка виконує почергове (х1,у1,х2,У2..Х50,У50) внесення в масив а координат графіка першої функції, присвоює строкі s назву обраної функції.

Крок8: строковій перемінній s1 присвоюємо значення змінної s: s1:= s;

Крок9: Виконується підпрограма MENU1 з фактичними параметрами z2, 11, 11, яка аналогічно до кроку 5 малює в центрі екрану прямокутник, заповнений кольором 11 , і виводиться запит про те, в якому місці екрану повинен розміститися графік (строка z2).

Крок 10: Знову виконується підпрограма MENU.

Крок11: Виконується підпрограма COORDMAS з фактичним параметром b, яка виконує почергове (х1,у1,х2,У2..Х50,У50) внесення в масив b координат графіка першої функції, присвоює строкі s назву обраної функції.

Крок12: строковій перемінній s2 присвоюємо значення змінної s: s2:= s;

Крок13: Виконується підпрограма MENU1 з фактичними параметрами z3, 5, 15.

Крок14: Знову виконується підпрограма MENU.

Крок15: Виконання підпрограми COORDMAS з фактичним параметром с.

Крок16: строковій перемінній s3 присвоюємо значення змінної s: s3:= s;

Крок17: Виконується підпрограма MENU1 з фактичними параметрами z4, 14, 14.

Крок18: Знову виконується підпрограма MENU.

Крок19: Виконання підпрограми COORDMAS з фактичним параметром d.

Крок20: строковій перемінній s4 присвоюємо значення змінної s: s4:= s;

Крок21: Виконання підпрограми MAS.

Крок22: Виконання підпрограми COORDFILE.

Крок23: Очищення графічного екрану.

Крок24: Виконання підпрограми LINES.

Крок25: Виконання підпрограми NAZVA.

Крок26: Присвоєння перемінній l значення 1.

Крок27: Підготовлюємо до зчитування файл процедурою RESET(f).

Крок28: Доки l102 зчитуємо з файлу процедурою READ(f,s) перші 102 елементи і присвоюємо координаті х непарні за місцем елементи, а координаті у – парні: х:=Н[l]; y:=H[l+1].

Крок29: За допомогою процедури PUTPIXEL по точкам будуємо перший графік в області екрану ROUND(160+10*X),ROUND(120-10*Y).

Крок30: Збільшуємо в циклі перемінну l на 2: l:= l+2.

Крок31: Присвоєння перемінній l значення 103.

Крок32: Доки l204 зчитуємо з файлу процедурою READ(f,s) елементи з 103 по 204 і присвоюємо координаті х непарні за місцем елементи, а координаті у – парні: х:=Н[l]; y:=H[l+1].

Крок33: За допомогою процедури PUTPIXEL по точкам будуємо другий графік в області екрану ROUND(480+10*X),ROUND(120-10*Y).

Крок34: Збільшуємо в циклі перемінну l на 2: l:= l+2.

Крок35 – крок42: практично повторює послідовність кроків 27-30 з певними змінами щодо перемінної l та області виведення графіків:

35-38: l:=205; l<=306; ROUND(160+10*X),ROUND(360-10*Y);

39-42: l:=307; l<=408; ROUND(480+10*X),ROUND(360-10*Y).

Крок43: Після виведення на екран всіх чотирьох графіків програма чекає на натискання будь-якої клавіші.

Крок44: Закриття файлу процедурою close(f).

Крок45: Кінець програми.

Підпрограма POCHATOK: Виводить на екран заставку.

Підпрограма COORDMAS:

Крок1: повторювати наступні операції, доки с<>’’;

Крок2: перемінній с присвоюється значення READKEY.

Крок3: оператор вибору case c of:

Крок3.1: ’a’:

Крок3.1.1: перемінній l присвоюємо 1;

Крок3.1.2: строковій перемінній s присвоюємо s:='y:=0.5*x*x-3';

Крок3.1.3: доки l<=102: X:=0.1*(L-51);

Y:=0.5*x*x-3;

елементу масиву присвоюємо w[L]:=X; w[L+1]:=Y; l:=l+2;.

Крок3.2: ’b’:

Крок3.2.1: перемінній l присвоюємо 1;

Крок3.2.2: строковій перемінній s присвоюємо

s:='y:=x*(x*x-4)';

Крок3.2.3: доки l<=102: X:=0.05*(L-51);

Y:=x*(x*x-4);

елементу масиву присвоюємо w[L]:=X; w[L+1]:=Y; l:=l+2.

Крок3.3: ’с’:

Крок3.3.1: перемінній l присвоюємо 1;

Крок3.3.2: строковій перемінній s присвоюємо

s:='y:=2*cos(x-1)+abs(x)';

Крок3.3.3: доки l<=102: X:=0.1*(L-51);

Y:= 2*cos(x- 1)+abs(x);

елементу масиву присвоюємо w[L]:=X; w[L+1]:=Y; l:=l+2.

Крок3.4: ’d’:

Крок3.4.1: перемінній l присвоюємо 1;

Крок3.4.2: строковій перемінній s присвоюємо

s:= 'y:=0.5*x-5';

Крок3.4.3: доки l<=102: X:=0.1*(L-51);

Y:= 0.5*x-5;

елементу масиву присвоюємо w[L]:=X; w[L+1]:=Y; l:=l+2.

Крок3.5: ’е’:

Крок3.5.1: перемінній l присвоюємо 1;

Крок3.5.2: строковій перемінній s присвоюємо

s:= ‘y:=2*sin(x)’;

Крок3.5.3: доки l<=102: X:=0.1*(L-51);

Y:= 2*sin(x);

елементу масиву присвоюємо w[L]:=X; w[L+1]:=Y; l:=l+2.

Крок3.6: ’f’:

Крок3.6.1: перемінній l присвоюємо 1;

Крок3.6.2: строковій перемінній s присвоюємо

s:= 'y:=(3*x+3)/(0.2*x-3)';

Крок3.6.3: доки l<=102: X:=0.1*(L-51);

Y:=(3*x+3)/(0.2*x-3);

елементу масиву присвоюємо w[L]:=X; w[L+1]:=Y; l:=l+2.

Крок4: якщо (c<>'a') і (c<>'b') і (c<>'c') і (c<>'d') і (c<>'e') (c<>'f'), тоді:

Крок4.1: перемінній l присвоюємо 1;

Крок4.2: строковій перемінній s присвоюємо

s:= 'Error: INVALID USER';

Крок4.3: доки l<=102: X:=0.1*(L-51); Y:= х;

елементу масиву присвоюємо w[L]:=X; w[L+1]:=Y; l:=l+2.

Підпрограма MENU1(var z: string; color, znak: byte):

Крок1: Задаємо фон екрану кольором color.

Крок2: В центрі екрану малюється прямокутник і заповнюється відповідним кольором.

Крок3: За допомогою процедури OUTTEXTXY виводимо строку, в якій описується місце розташування графіка.

Підпрограма MENU:

Крок1: За допомогою процедури OUTTEXTXY виводимо у заданому місці назви функцій:

У = 0,5·х² - 3;

У = х·(х²-4);

У = 2·cos(х-1)+|x|;

У = 0,5·х-5;

У = 2·sin(x);

У = (3·х+3)/(0,2·х-3);.

Крок2: Використовуючи процедуру DELAY і надаючи тексту поперемінно червоного кольору та кольору фону, виводимо нумерацію навпроти кожного рядка з назвою функції.

Крок4: За допомогою процедури OUTTEXTXY виводимо під назвами функцій запрошення вибрати потрібну.

Підпрограма MAS:

Крок1: від 1 до 102 робимо:

елементу масиву Н[I] надаємо значення елементу масиву a[I].

Крок2: від 103 до 204 робимо:

елементу масиву Н[I] надаємо значення елементу масиву b[I-102].

Крок3: від 205 до 306 робимо:

елементу масиву Н[I] надаємо значення елементу масиву с[I-204].

Крок4: від 307 до 408 робимо:

елементу масиву Н[I] надаємо значення елементу масиву d[I-306].

Підпрограма COORDFILE:

Крок1: відкриваємо файл процедурою ASSIGN(f,’a:\coord.dat’).

Крок2: переписуємо файл за допомогою процедури rewrite(f).

Крок3: від 1 до 408 робимо:

записуємо у файл масив, створений підпрограмою MAS.

Підпрограма NAZVA: дана підпрограма за допомогою процедури OUTTEXTXY виводе за відповідними координатами під кожним побудованим графіком строки s1, s2, s3 і s4.

Підпрограма LINES:

Крок1: будуємо чотири координатних площини за допомогою ліній:

Крок1.1: проводимо лінію: LINE(160,240,160,0);

Крок1.2: проводимо лінію: LINE(0,120,320,120);

Крок1.3: від і:=1 до 32 виконується побудова ліній LINE(I+(I*9),119,I+(I*9),121);

Крок1.4: від і:=1 до 24 виконується побудова ліній LINE(161,I+(I*9),159,I+(I*9));

Крок1.5: проводимо лінію: LINE(480,240,480,0);

Крок1.6: проводимо лінію: LINE(320,120,640,120);

Крок1.7: від і:=1 до 32 виконується побудова ліній LINE( I+(I*9)+320,119,I+(I*9)+320,121);

Крок1.8: від і:=1 до 24 виконується побудова ліній LINE(481,I+(I*9),479,I+(I*9));

Крок1.9: проводимо лінію: LINE(160,240,160,480);

Крок1.10: проводимо лінію: LINE(0,360,320,360);

Крок1.11: від і:=1 до 32 виконується побудова ліній LINE(I+(I*9),359,I+(I*9),361);

Крок1.12: від і:=1 до 24 виконується побудова ліній LINE(161,I+(I*9)+240,159,I+(I*9)+240);

Крок1.13: проводимо лінію: LINE(480,240,480,480);

Крок1.14: проводимо лінію: LINE(320,360,640,360);

Крок1.15: від і:=1 до 32 виконується побудова ліній LINE(I+(I*9)+320,359,I+(I*9)+320,361);

Крок1.16: від і:=1 до 24 виконується побудова ліній LINE(481,I+(I*9)+240,479,I+(I*9)+240);

Крок2: будуємо додаткові лінії:

Крок2.1. проводимо лінію: LINE(320,0,320,480);

Крок2.2. проводимо лінію: LINE(0,240,640,240);

Підпрограма GRAPHS: підпрограма ініціалізує графіку.